Wie viel Programmieren muss ich für die Oberstufe können?

Eigentlich geht es in der Informatik gar nicht so ums Programmieren. Auch in der Schule nicht. Aber wenn man nicht programmieren kann, macht einem die Oberstufe keinen Spaß – ob man eine Algorithmus verstanden hat, zeigt sich oft erst beim Programmieren, und wenn man die Konzepte, die man so lernt, ausprobieren möchte, kommt man am Programmieren nicht vorbei. Die Programmierung ist die größte Quelle für Frustration im Informatikunterricht der Oberstufe. Deshalb habe ich hier zusammengestellt, was ein Zehntklässler programmieren können muss, um sich in der Oberstufe wohl fühlen zu können. So viel ist es gar nicht, Felder habe ich sogar ausgelassen.

1. Klassendiagramme in eine Programmiersprache umsetzen können.

Setze folgendes Klassendiagramm in zwei Klassen in einer Programmiersprache um. Achte dabei darauf, die im Diagramm verlangten Konstruktoren zu formulieren. In ihnen werden jeweils die Attributwerte auf die übergebenen Werte gesetzt. – Ein neues Raumschiff soll dabei standardmäßig und automatisch ein Crewmitglied namens „Floyd“ mit Geschicklichkeit 12 haben.

programmierung_raumschiff

2. Struktogramme lesen und in eine Programmiersprache umsetzen können.

Ergänze bei der Klasse Raumschiff die Methode

void geschwindigkeitAendern(int geschwindigkeitNeu)

nach folgendem Struktogramm:

programmierung_geschwindigkeitAendern

3. Pseudocode lesen und in Programmiersprache umsetzen können; Zählschleifen.

Setze folgenden Pseudocode in eine Java-Methode um. Achte dabei auf die Einrückungen, sie geben an, wann eine Zählschleife oder Bedingung zu Ende ist. Die Methode testet für jede ganze Zahl >1, ob es eine kleinere Zahl (mindestens 2) gibt, durch die man sie restlos teilen kann. Wenn ja, handelt es sich bei der ursprünglichen Zahl um keine Primzahl; wenn keine solche Zahl gefunden wird, dann schon.

boolean istPrimzahl(int a):
  wenn a kleiner als 2 ist:
      gib false zurück
  zähle die Variable i von 2 bis einschließlich a-1 hinauf:
      wenn a%i gleich 0 ist:
            gib false zurück
  gib true zurück

Tagged: Tags

14 Thoughts to “Wie viel Programmieren muss ich für die Oberstufe können?

  1. „Eigentlich geht es in der Informatik gar nicht so ums Programmieren.“

    Dem würde ich widersprechen und es so formulieren: „Es geht in der Informatik nicht nur ums Programmieren.“

    Es ist ein essentielles Werkzeug für jeden Informatiker – ob er in der Wissenschaft oder Wirtschaft arbeitet.

  2. Stimmt schon. Mein Lieblingsgebiet ist die Theroetische Informatik, bei der es erst mal weniger ums Programmieren geht, davon lasse ich mich hinreißen. (Wieviel Programmieren in die Schule und in welche Jahrgangsstufe soll, das ist umstritten.)

  3. Interessante Diskussion. Ich verstehe Marco da sehr gut. Mir persönlich geht es nicht unbedingt ums Programmieren per se, aber um das algorithmische Denken, das ich für absolut essentiell halte (auch in der theoretischen Informatik). Mein persönlicher Kampf ist da an der Front zwischen Algorithmikern und Modellierern.

    Ich habe oft Leute getroffen, v.a. im industriellen Kontext, denen man beigebracht hatte, das Programmieren sei für Informatiker nur so eine „Anfangsphase“ durch die man eben am Anfang der Karriere „durchmüsse“. Später sei man als studierter Informatiker dann zu Höherem berufen und würde nur noch die Modelle entwerfen, die andere dann umsetzen. Das halte ich für eine sehr problematische Einstellung! Da hat der Siegeszug der Objektorientierung und v.a. die UML viel Schaden angerichtet. Um es überspitzt zu sagen: Wenn Klassendiagramme wichtiger sind als Flussdiagramme haben wir ein Problem – denn irgenwann müssen diese ganzen Klassen auch mal etwas *tun* und nicht nur hübsch angeordnet sein.

    In der Schule sehe ich das zumindest bei uns auch in den Lehrplänen: Die Pflicht-Informatik für die Oberstufe zielt eigentlich nur aufs Modellieren, nur wer vertieft Informatik macht, lernt auch was über Algorithmen. Aber ich will, dass meine Schüler problem*lösendes* Denken lernen, nicht Modellbau.

    Das ist der Fluch von UML & Co: Klassendiagramme scheinen manchen wichtiger als Flussdiagramme

  4. Das ist ein interessanter Punkt, embee. Hast du ein Beispiel für ein Problem, das als Algorithmus und nicht als OO-Design lösbar ist?

    Immerhin hatte und hat Smalltalk keinerlei Sprachelemente für Verzweigungen und Schleifen. Das wird alles ebenfalls auf OO-Ebene durch Nachrichten gelöst. :)

  5. Das war nicht als Anti-OOP-Rant gemeint. Ich liebe Smalltalk auch!

    Ich wollte nur sagen: Klassenmodellierung macht noch kein Programm. Die ganzen klassischen eher mathematischen Verfahren (obwohl ich die ja normalerweise immer versuche zu vermeiden): Sieb des Erathostenes, euklidischer Algorithmus oder auch so tolle Dinge wie Dijkstra (überhaupt alles mit Graphen) – da brauchst du normalerweise nur eine Klasse oder eben gar keine. Ein OO-Design ist dort im besten Fall eine kleine Hilfe, mit der sich der Algorithmus dann elegant umsetzen lässt, im schlechten Fall vernebelt es die algorithmischen Ideen dahinter.

    Die Wirtschaftsinformatiker (auch in der Schule) glauben immer (Vorsicht: unzulässige Verallgemeinerung) mit der Abbildung eines „Businessprozesses“ in eine Klassenhierarchie sei die wesentliche Arbeit getan. Das ist, als würden sich Mediziner mit der Anatomie begnügen…

  6. Modellierung fällt den Schülern auch relativ leicht; Algorithmik ist schwieriger. Ich hoffe, dass man bald wieder etwas weg vom Modellieren kommt und – etwa in der 9. Klasse – mit einfachen Algorithmen beginnt, gerne auch funktional, so wie Ingo das macht.

  7. Dijkstra und Mathematiker sind unbedingt für ihre Nähe zur OOP bekannt. Sie kommen häufig aus funktionalen Welten. Daher sind ihre Algorithmen meist auch derart aufgeschrieben.

    Häufig wird die Macht der Polymorphie als Ersatz für eine sehr kluge Entscheidung in OO-Designs vernachlässigt. Ich verweise hier gerne auf die Realisierung Boolescher Verknüpfungen in Smalltalk (vgl. Abschnitt 8.5 auf Seite 179 in „Pharo By Example“ http://pharobyexample.org/versions/PBE1-2009-10-28.pdf).

    Aber ich will auch keinen Rant OOP gegen den Rest der Welt aufmachen. :)

  8. Sagt mal, an was für Schulen seid ihr den?

    Bei mir:
    Klasse 9, Wahlpflichtfach Informatik: Word, Excel, PowerPoint
    Klasse 10, Wahlpflichtfach Informatik: HTML, Derive, ein bisschen Logo (Schildkröte per Shell durch das Labyrinth lotsen)

    Klasse 11: Delphi, GUIs per Drag-and-Drop bauen, if, for (nein, keine while-Schleife, das ist zu kompliziert)
    Klasse 12: Caesar-Verschlüsselung, mehr GUI, dynamische Arrays (also wie man sie in Delphi benutzt, nicht wie sie funktionieren), deterministische, endliche Automaten entwerfen, einen davon implementieren (den Getränkeautomaten, der eine unendliche Zustandsmenge hat, man kann ja beliebig viel Geld reinwerfen)
    Klasse 13: mehr GUI, Binärzahlen addieren (also auf Papier)

    Mündliche Abiturprüfung:
    Aufgabe: „Beschreiben Sie was dieses Programm macht!“
    Ich: „Nichts!“
    Lehrer: WTF!!!
    Ich: „Da ist eine Endlosschleife. “
    Lehrer: „Oh, fuck!“

    Immerhin weiß ich jetzt warum mein Professor in Programmierung quasi garnichts erklärt hat…er dachte wir könnten das aus der Schule.

  9. Ich bin Lehrer an einem Berufskolleg. Mit Anwendungsentwicklern und Informationstechnischen Assistenten geht es dort durchaus ans Eingemachte. :)

  10. Bayern, Gymnasium: Pflicht in 6, 7 (Textverarbeitung, Präsentation, Turtle-artige Algorithmik, Internet, aber nur wenig HTML); Pflicht in 9 und 10, aber nur im naturwissenschaftlichen Zweig (funktionsorientierte Tabellenkalkulation, SQL, Java, Klassen-, Zustands-, Sequenzdiagramme).
    Wahlpflicht in 11/12: Listen, Bäume, Graphen; formale Sprachen mit deterministischem endlichen Automaten und Grammatik dazu; Assembler & Aufbau eines Rechners. Kein GUI.

  11. Niedersachsen, Gymnasium: In der Regel keine Informatik, nur an Schulen mit speziellen Schwerpunkten und Lehrkräften. IT-Wissen (meint oft genug Anwendungsbedienung) soll „integrativ“ vermittelt werden.

  12. Hallo Herr Rau,

    ich finde Ihre Anforderungen für den Start in die Oberstufeninformatik sehr angemessen. Hier in BaWü gibt es vor der Oberstufe fast nichts und ab 2014 gar nichts mehr.
    Das Problem ist nicht nur, dass unsere Schüler später im Studium auch auf Mitstudenten haben aus anderen Bundesländern und ein Wissendefizit. Außerdem ist problematisch, dass Schüler den Informatik-Kurs wählen und so gar keine Begabung für annähernd logisches Denken haben und schon an geschachtelten Ifs scheitern.

    Ihren Blog finde ich sehr interessant.

  13. Ja, genau das ist das Problem: Informatik zu wählen, auch wenn man nicht weiß oder falsch einschätzt, was auf einen zukommt. Im Lehrplan der 10. ist als Grundwissen deklariert:

    • [Die Schüler] können zeitliche Abläufe strukturieren, indem sie sie mithilfe von Zuständen und Übergängen beschreiben.
    • Sie sind in der Lage, einfache Zustandsübergangsdiagramme in objektorientierte Programme umzusetzen.
    • Sie können überschaubare Algorithmen in Programmen umsetzen.
    • Sie können Aufgabenstellungen durch objektorientiertes Strukturieren lösen.
    • Sie können Interaktionen zwischen Objekten darstellen und in einem Programm realisieren.
    • Sie können hierarchische Klassenstrukturen durch Generalisierung und Spezialisierung beschreiben.
    • Sie können verschiedene Modellierungstechniken sachgerecht und miteinander verknüpft anwenden.

    Wie alle Lehrpläne muss man das, uh, flexibel sehen. Trotzdem muss, mehr als bei anderen Fächern und weniger als bei wieder anderen, ein bestimmte Menge Grundwissen da sein, um in der Oberstufe Erfolg zu haben.

    Ob das Wissensdfizit im Studium so schlimm ist, weiß ich nicht. Noch gehen zumindest in Bayern die Unis von Studenten ganz ohne Vorwissen aus, und Unterschiede zwischen G8-Studenten mit und G9-Studenten ohne Informatik sind auch nicht aufgefallen. Vom Allgemeinbildungsanspruch her halte ich Informatik für ein sinnvolles Fach – mehr als andere und weniger als wieder andere. :-)

    Danke und Grüße!

    Ach ja, und für Wirtschaft/Berufsaussichten und überhaupt ein Verständnis der unsere Zukunft bestimmenden Technologie ist die Schulinformatik auch sehr sinnvoll. Und ein kreatives Fach obendrein.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.