Informatik – Wahlfach in der Oberstufe (Schulversuch)
Leitgedanken zum Kompetenzerwerb
Prozessbezogene Kompetenzen zurücksetzen
  • 2.1 Strukturieren und Vernetzen
    • 2.1 Strukturieren und Vernetzen
    • mit dem Schulnetz (zum Beispiel Homeverzeichnis, Tauschverzeichnis, mobile Datenträger, Netzwerkdrucker) zielorientiert arbeiten
    • Dateien und Bezeichner (zum Beispiel für Variablen, Unterprogramme) aussagekräftig benennen
    • Beziehungen zwischen Daten/Objekten (zum Beispiel Hierarchien in Verzeichnisbäumen oder Stammbäumen, die Struktur des Internets, Verkehrsnetz als Graph) erkennen und erläutern
    • gleichartige Daten in geeigneten Datenstrukturen zusammenfassen (zum Beispiel Namensliste einer Klasse, Pixel einer Rastergrafik etc.)
    • Handlungsschritte chronologisch ordnen (auch aufgrund von kausalen Zusammenhängen)
    • Teillösungen zur Lösung des Gesamtproblems nutzen
    • Schnittstellen für Teilbereiche definieren, die unabhängig voneinander bearbeitet werden (zum Beispiel Gruppenarbeit, Protokolle bei Client-Server, Parameter und Rückgabewerte bei Unterprogrammen)
    • textuelle und grafische Modellierungssprachen zur Beschreibung und Entwicklung von Strukturen und Prozessen verwenden
    • ihre eigenen Arbeitsprozesse in Projekten planen und strukturieren, auf Abweichungen reagieren und den Verlauf dokumentieren
  • 2.2 Modellieren und Implementieren
    • 2.2 Modellieren und Implementieren
    • die für die Problemstellung relevanten Informationen herausarbeiten und fehlende beziehungsweise ergänzende Informationen beschaffen
    • für (Teil‑)Abläufe notwendige Eingabedaten und Ergebnisse beschreiben und in Form von Testfällen formalisieren
    • vorliegende Informationen für die Lösung geeignet aufbereiten (zum Beispiel durch Filtern, Reduktion, Kategorisieren)
    • charakteristische und verallgemeinerbare Bestandteile herausarbeiten (Abstraktion)
    • relevante Abläufe, Daten, Komponenten und ihre Beziehungen in informatischen Modellen darstellen
    • passende Komponenten, Strukturen und Lösungsstrategien für gegebene Problemstellungen auswählen und adaptieren
    • geeignete Programme und Hilfsmittel zur grafisch gestützten Modellierung einsetzen
    • unterschiedliche Perspektiven in die Entwicklung einer Lösung miteinbeziehen
    • Strukturen und Abläufe in einer Programmiersprache implementieren
    • geeignete Codebausteine aus verschiedenen Quellen auswählen, gegebenenfalls adaptieren und in eigene Programme einbauen und dabei rechtliche Rahmenbedingungen berücksichtigen
    • Programme gezielt gegen vorab formulierte Testfälle testen
    • Fehler in der Implementierung systematisch aufspüren und beheben
    • die Angemessenheit von Lösungen und die erreichten Resultate bewerten
  • 2.3 Kommunizieren und Kooperieren
    • 2.3 Kommunizieren und Kooperieren
    • fachspezifische Schreib- und Notationsweisen verwenden
    • Sachverhalte, eigene Ideen, Lösungswege und Ergebnisse zielgruppenorientiert und unter Beachtung der informatischen Terminologie erläutern und strukturiert darstellen
    • eigenen und fremden Programmcode in geeigneter Weise kommentieren und dokumentieren
    • vorhandene Dokumentationen und kommentierten Programmcode lesen und verstehen
    • arbeitsteilig als Team ihre Aufgaben planen, strukturieren, ausführen, reflektieren und präsentieren
    • zielorientiert auf einer vorhandenen Infrastruktur kommunizieren und geeignete digitale Werkzeuge zum kollaborativen Arbeiten verwenden
    • in Erarbeitung, Kooperation und Darstellung alltagsrelevante rechtliche Regelungen befolgen und verantwortungsvoll mit eigenen und fremden personenbezogenen Daten umgehen
    • charakteristische Merkmale verschiedener Kommunikationsformen (Mensch-Mensch, Mensch-Maschine, Maschine-Maschine) auf Gemeinsamkeiten und Unterschiede analysieren und deren gesellschaftliche Auswirkungen bewerten
    • Sicherheitsaspekte bei ihrem Kommunikationsverhalten berücksichtigen und die gesellschaftliche Relevanz von verschlüsselter Kommunikation reflektieren
    • Aspekte von Toleranz und Akzeptanz von Vielfalt im Kontext informatischer Fragestellungen diskutieren
  • 2.4 Analysieren und Bewerten
    • 2.4 Analysieren und Bewerten
    • durch Analyse (zum Beispiel „gezieltes Anwenden“/Blackbox oder auch Codebetrachtung/Whitebox) Erkenntnisse über das Verhalten von informatischen Systemen gewinnen
    • informatische Modelle mit der jeweiligen Realsituation vergleichen
    • unterschiedliche Lösungsansätze und Vorgehensweisen miteinander vergleichen und bewerten
    • Optimierungsbedarf ermitteln und gegebenenfalls Lösungswege optimieren
    • Kenntnisse über den inneren Ablauf informatischer Systeme im Alltag nutzen
    • Einsatzbereiche und Grenzen von Modellen erkennen
    • Entscheidungen auf der Grundlage informatischen Sachverstands treffen und diese sachgerecht begründen
    • Auswirkungen von Computersystemen auf Gesellschaft, Berufswelt und persönliches Lebensumfeld aus verschiedenen Perspektiven bewerten
    • im Zusammenhang einer digitalisierten Gesellschaft einen eigenen Standpunkt zu ethischen Fragen in der Informatik einnehmen und ihn argumentativ vertreten

Operatoren

Anhänge zu Fachplänen

3.1.2 Al­go­rith­men

Die Schü­le­rin­nen und Schü­ler ler­nen die Syn­tax der schon be­kann­ten al­go­rith­mi­schen Grund­bau­stei­ne in ei­ner tex­tu­el­len Pro­gram­mier­spra­che ken­nen.

Sie nut­zen Va­ria­blen mit un­ter­schied­li­chen Da­ten­ty­pen und auch Ar­rays zur Spei­che­rung und Ver­ar­bei­tung gleich­ar­ti­ger Da­ten. Sie nut­zen Un­ter­pro­gram­me mit Pa­ra­me­tern und Rück­ga­be­wer­ten, be­schrei­ben An­for­de­run­gen an Un­ter­pro­gram­me und ent­wer­fen ge­eig­ne­te Test­rou­ti­nen, um ih­re Im­ple­men­tie­run­gen da­ge­gen zu tes­ten. Sie un­ter­schei­den zwi­schen syn­tak­ti­schen und se­man­ti­schen Feh­lern. Sie ent­wi­ckeln Stra­te­gi­en, um feh­ler­frei­en Code zu schrei­ben und nut­zen auch die Mög­lich­kei­ten der Ent­wick­lungs­um­ge­bung. Für spe­zi­el­le Auf­ga­ben­be­rei­che (zum Bei­spiel Ein- und Aus­ga­be von Text, Gra­fik, Sen­sor­ab­fra­gen) kön­nen ge­eig­ne­te Pro­gramm­bi­blio­the­ken zum Ein­satz kom­men.

Mit der Ob­jekt­ori­en­tier­ten Pro­gram­mie­rung (OOP) ler­nen die Schü­le­rin­nen und Schü­ler ein wei­te­res Pro­gram­mier­pa­ra­dig­ma ken­nen. Sie im­ple­men­tie­ren ei­ge­ne Klas­sen und re­geln den Zu­griff auf At­tri­bu­te mit­hil­fe von Zu­griffs­me­tho­den (Da­ten­kap­se­lun­g/Ge­heim­nis­prin­zip). Sie nut­zen As­so­zia­ti­on und Ver­er­bung zur Mo­del­lie­rung und Im­ple­men­tie­rung von Klas­sen­be­zie­hun­gen.

Sie im­ple­men­tie­ren in­ter­ak­ti­ve Pro­gram­me mit ei­ner ein­fa­chen gra­fi­schen Be­nut­zer­schnitt­stel­le.

Die Schü­le­rin­nen und Schü­ler kön­nen

Struk­tu­rier­te Pro­gram­mie­rung

(1)

Al­go­rith­men mit den Grund­bau­stei­nen An­wei­sung, Be­din­gung, Schlei­fe und Ver­zwei­gung so­wie un­ter Ver­wen­dung von Va­ria­blen in ei­ner ge­eig­ne­ten tex­tu­el­len Pro­gram­mier­spra­che im­ple­men­tie­ren

(2)

Lo­gi­sche Ver­knüp­fun­gen (UND, ODER, NICHT) in Be­din­gun­gen von Schlei­fen und Ver­zwei­gun­gen ver­wen­den

(3)

die Be­grif­fe Va­ria­ble, Be­zeich­ner, Da­ten­typ, Wert, De­kla­ra­ti­on, Initia­li­sie­rung, Wert­zu­wei­sung und Gül­tig­keits­be­reich er­läu­tern

(4)

pri­mi­ti­ve Da­ten­ty­pen für ganz­zah­li­ge Wer­te, Gleit­kom­ma­wer­te und boo­le­sche Wer­te un­ter Be­ach­tung ih­res Wer­te­be­reichs ver­wen­den

(5)

im­pli­zi­te und ex­pli­zi­te Ty­pum­wand­lun­gen (ty­pe casts) zur Kon­ver­tie­rung von Wer­ten un­ter­schied­li­cher Da­ten­ty­pen in­ein­an­der ver­wen­den und da­bei auf­tre­ten­de Pro­ble­me be­schrei­ben

(6)

Ope­ra­tio­nen auf Zei­chen­ket­ten durch­füh­ren (un­ter an­de­rem Ver­ket­ten)

(7)

Zu­falls­zah­len in ei­ge­nen Pro­gram­men ver­wen­den

(8)

Un­ter­pro­gram­me – auch mit Pa­ra­me­tern und Rück­ga­be­wer­ten – sinn­voll ver­wen­den

(9)

den Un­ter­schied zwi­schen ver­schie­de­nen Feh­ler­ar­ten (Com­pi­l­er­feh­ler/Lauf­zeit­feh­ler und syn­tak­tisch/se­man­tisch) er­läu­tern

(10)

vor­ge­ge­be­nen Code auf sei­ne Funk­ti­ons­wei­se hin ana­ly­sie­ren und des­sen Wir­kung be­schrei­ben

(11)

Al­go­rith­men in den No­ta­ti­ons­for­men Nas­si-Shnei­der­man-Dia­gramm und Pseu­do­code dar­stel­len und in­ter­pre­tie­ren

(12)

An­pas­sun­gen zu vor­ge­ge­be­nem Code im­ple­men­tie­ren

(13)

vor­ge­ge­be­ne Pro­gramm­bi­blio­the­ken für ei­ge­ne Pro­gram­me sinn­voll ver­wen­den

(14)

Al­go­rith­men ent­wer­fen und im­ple­men­tie­ren, die Be­nut­zer­ein­ga­ben an­for­dern und aus­wer­ten

(15)

Pro­gramm­code im­ple­men­tie­ren, der Da­ten aus Da­tei­en ein­liest, ver­ar­bei­tet und in Da­tei­en schreibt (mit­tels ge­eig­ne­ter Bi­blio­the­ken)

(16)

Ar­rays zur Spei­che­rung und Ver­ar­bei­tung von Da­ten ver­wen­den

(17)

grund­le­gen­de Al­go­rith­men auf Ar­rays (zum Bei­spiel Fül­len mit Wer­ten, Ma­xi­mum­su­che, Sum­men­bil­dung, Bub­ble­sort) er­läu­tern und im­ple­men­tie­ren

(18)

ele­men­ta­re ver­gleichs­ba­sier­te Sor­tier­ver­fah­ren (Bub­ble­sort, Selec­tions­ort, In­ser­ti­ons­ort) be­schrei­ben, hän­disch durch­füh­ren und ei­nes da­von im­ple­men­tie­ren

(19)

Stra­te­gi­en (zum Bei­spiel De­bug­ger, schritt­wei­se Aus­füh­rung, Log­ging) an­wen­den, um das Ver­hal­ten von Pro­gramm­code zur Lauf­zeit zu be­ob­ach­ten

Ob­jekt­ori­en­tier­te Pro­gram­mie­rung

(20)

ei­ge­ne Klas­sen­de­fi­ni­tio­nen mit At­tri­bu­ten und Me­tho­den im­ple­men­tie­ren

(21)

Re­fe­renz­va­ria­blen/Re­fe­renz­ty­pen mit pri­mi­ti­ven Va­ria­blen / pri­mi­ti­ven Da­ten­ty­pen ver­glei­chen

(22)

Me­tho­den mit und oh­ne Rück­ga­be­wert so­wie mit und oh­ne Pa­ra­me­ter im­ple­men­tie­ren und den Be­griff der Me­tho­den­si­gna­tur er­läu­tern

(23)

die Funk­ti­on von Zu­griffs­mo­di­fi­ka­to­ren (pu­blic, pri­va­te, pro­tec­ted) er­läu­tern und die­se ver­wen­den

(24)

die Kap­se­lung von At­tri­bu­ten und Me­tho­den (Ge­heim­nis­prin­zip) er­läu­tern und in ei­ge­nen Im­ple­men­tie­run­gen ver­wen­den (un­ter an­de­rem Zu­griff auf At­tri­bu­te über Zu­griffs­me­tho­den)

(25)

die Rol­le von Kon­struk­to­ren beim Er­zeu­gen von In­stan­zen ei­ner Klas­se (Ob­jek­ten) er­läu­tern und die­se im­ple­men­tie­ren

(26)

das Kon­zept der Ver­er­bung er­läu­tern und in Mo­del­lie­run­gen und Im­ple­men­tie­run­gen an­wen­den

(27)

UM­L-Klas­sen­dia­gram­me mit Ver­er­bung und As­so­zia­ti­on ent­wer­fen und zur Mo­del­lie­rung nut­zen

(28)

ih­ren Pro­gramm­code nach gän­gi­gen Stan­dards kom­men­tie­ren und da­zu vor­han­de­ne Hilfs­mit­tel der Ent­wick­lungs­um­ge­bung nut­zen

(29)

Do­ku­men­ta­tio­nen zu ge­ge­be­nem Quell­code und Bi­blio­the­ken nut­zen

(30)

ein in­ter­ak­ti­ves Pro­gramm (zum Bei­spiel App, Web­an­wen­dung, Desk­to­pan­wen­dung) mit ei­ner ein­fa­chen gra­fi­schen Be­nut­zer­schnitt­stel­le (zum Bei­spiel mit But­tons, Text­ein­ga­be und Aus­ga­be) im­ple­men­tie­ren, je nach Spra­che un­ter Ver­wen­dung ge­eig­ne­ter (di­dak­ti­scher) Tool­kits un­d/o­der GUI-Buil­der


Umsetzungshilfen
Hinweis
Die Beispielcurricula, Synopsen und Kompetenzraster sind bei den inhaltsbezogenen Kompetenzen des jeweiligen Faches zu finden.