Kompetenz im Informatikunterricht

Am Ende des vergangenen Schuljahres hielt ich noch eine Fachsitzung Informatik ab und der Themenschwerpunkt war natürlich der neue Lehrplan mit seiner Kompetenzorientierung. Was soll ich sagen: Ich tue mich schwer damit. Und zwar, weil ich am Ende der 10. Klasse gerne kompetente Informatiker (im Rahmen des Lehrplans) hätte.

Aber wenn ich Schüler habe, die aus langen Angabentexten zwar sehr gut Klassen- , Objekt-, Sequenz- und Zustandsdiagramme zeichnen können, Datentypen kennen und Modellieren können, aber keine for-Wiederholung in Java programmieren können, keine Algorithmen entwickeln können, dann habe ich in meinen Augen keine kompetenten Informatiker. Und doch würden diese Schüler wahrscheinlich die Hälfte der Punkte des praktischen Informatikabiturs (1. Teil) holen. Wer mag, kann sich die Lösungen des bayerischen Abiturs ja mal anschauen. Es werden Diagramme gefragt und in meinen Augen einfache, teils einzeilige Programmierungen auf reinem Transfer-Niveau:

Beispiel aus 2017/I:

public void einfuegen(TICKET ticket) {
    erstes = new KNOTEN(ticket);
}

public TICKET suchen(String kennzeichen) {
    return erstes.suchen(kennzeichen);
}

Natürlich kommen im Abitur auch Themen aus der elften Jahrgangsstufe, wie Bäume und Graphen dran, aber auch hier geht es oft nur um Diagramme. Ab und zu kommt mal eine Adjazenzmatrix vor und ein im Unterricht behandelter (Durchlauf)-Algorithmus muss in Pseudocode angegeben werden.

Habe ich also zu hohe Anforderungen in dem ich erwarte, dass Schüler Ende der zehnten Klasse auch noch Programmieren können? Programmieren über das Schreiben von get/set-Methoden hinaus? Methoden also, die ich in Sprachen wie Python so gut wie nie brauche, da hier die Attribute standardmäßig öffentlich sind. Oder wie damals unter OSX und Objective-C. Hier werden die get/Set-Methoden automatisch durch XCode generiert. Könnte ein Aufgaben-Generator, wie ihn Herr Rau jetzt programmiert hat, zur Kompetenzsteigerung beitragen? Wenn ja, welche genaue Kompetenz?

Zu Beginn der elften Klasse lasse ich, sozusagen zum Wiederreinkommen folgendes Programm schreiben:

Schreibe ein Programm, dass zu einer gegebenen Kilometerzahl und einer gegebenen Zeit je nach eingegebenen km-Intervall die Zwischenzeiten ausgibt.

So soll ein Aufruf

gibIntervalle(10, new MyTime(1,0,0), 2)

folgende Ausgabe liefern:

2km   0:12:0
4km   0:24:0
6km   0:36:0
8km   0:48:0
10km  1:00:0

Das Ergebnis: Die erste Hälfte der Schüler scheitert daran, dass sie nicht wissen wo anfangen, da ein detailierter Angabentext, wie er beispielsweise im Abitur vorkommt und den man mit dem Schema Substantiv ist Klasse oder Attribut, Verb ist Methode, Adjektiv ist Attribut analysieren kann, nicht gegeben ist.

Die nächsten scheitern an dem Umgang mit der Zeit und deren Umrechnung und Formatierung bei der Ausgabe. Und ein paar scheitern noch an den benötigten Wiederholungen. Von 15 Schülern schaffen es in der Regel 1-2 Schüler es in der vorgegebenen Zeit von 3 Schulstunden umzusetzen. Der Rest hat meistens kaum etwas.

Was sind also kompetente Informatikschüler? Und wie unterrichte hierfür optimal, um dieses Ziel zu erreichen? Wie erreicht ihr euer Ziel? Was ist euer Ziel?

 

Beteilige dich an der Unterhaltung

3 Kommentare

  1. Deine Zweiteilung in algorithmisches Wissen und eher abstrakte Modellierung ist mir auch während des Studiums begegnet. Dort stand die Programmierung eher im Hintergrund. Beides ist jedoch wichtig.

    Leichter für die Auswertung und besser prüfbar sind aber wohl Modellierungsaufgaben – die IHK praktiziert dies in ihren theoretischen Prüfungen seit vielen Jahren. Der praktische Teil der Prüfung bei der IHK wird pro Prüfling von einem mind. dreiköpfigen Prüfungsausschuss begutachtet. Das kostet Zeit und Geld – beides möchte man sich vielleicht in der schulischen Ausbildung sparen?!

  2. Ich kann nur von den Erfahrungen meiner Kinder sprechen, aber ich glaube, der bayerische extreme Fokus auf Objektorientierung ist hier nicht ganz unschuldig. Die ersten Jahre Informatik haben meine beiden Kinder ratlos zurückgelassen, erst ab Klasse 9/10 wurde es langsam besser.

    Alles muss als Objekt modelliert werden und irgendwie muss auch immer etwas vererbt werden.

    Grundlegende Datentypen, Datenstrukturen und Algorithmen, ohne die all die OOP am Ende ja auch keinen Sinn ergibt, verkommen zur Nebensache.

    OOP hat sicher ihren Platz in der Informatik.

    Aber es ist eben nur ein Paradigma von vielen. Und wahrscheinlich keines, mit dem man beginnen sollte. Wer OOP auf alles anwendet sieht am Ende die simplen, einfachen Lösungen nicht mehr, da er versucht die Welt zu modellieren, wo es eine simple Datentabelle getan hätte.

    Warum nicht mit einfachen Datentypen, imperativen Programmen, Verzweigungen und Schleifen beginnen und sich dann zu komplexeren Datentypen (Arrays, Strukturen, Klassen) vorarbeiten?

    In Mathe fangen wir in Klasse 1 ja auch nicht den algebraischen Eigenschaften von Ringen, Körpern und Abelschen Gruppen an und zeigen den Schülern dann in der Mittelstufe, dass man damit auch Addieren und Multiplizieren kann.

    1. Das sehe ich genauso. Mich stört massiv zum Beispiel die Betonung der Punktschreibweise in der 6. JgSt.: rechteck.breite etc. Das ist über das Ziel hinausgeschossen. Sich zu überlegen, aus welchen Elementen ein Text-Dokument bestehen könnte, ist natürlich schon hilfreich, da man besser den Aufbau von solchen Programmen versteht, aber das sollte es dann auch sein.

Schreibe einen Kommentar

Schreibe einen Kommentar zu Marco Bakera Antworten abbrechen

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

Durch die weitere Nutzung der Seite (Scrollen, Navigieren) stimmen Sie der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen