Lehrzeit

Schule & Informatik

Seite 2 von 144

Kitty Lux ist tot

Wie ich gerade bei ukulelehunt.com gelesen habe, ist eines der Gründungsmitglieder des Ukulele Orchestra of Great Britain, Kitty Lux, gestorben.  Einmal durfte ich das Orchester live erleben und ich war froh und glücklich Kitty einmal live erleben zu können. Sie war immer mein Lieblingsmitglied des Orchesters. Ihr Humor, ihre Art zu performen – einfach großartig! Ich hoffe, dass es im Himmel, oder wo immer sie auch sein mag, nicht nur Harfen sondern auch Ukulelen für sie zu spielen gibt.

Da werde ich wohl heute Nachmittag noch ein bisschen Ukulele spielen müssen, sozusagen als „Tribute to Kitty“.

Mein Lieblingsauftritt ist im Übrigen dieser hier:

Ganz besonders mit dieser Händel-Interpretation (geht jemand das Stück zufällig?), da hatte auch Kitty wieder tolle Passagen.

 

Aufgabengenerator Java

Vor kurzem hat Herr Rau auf seinem Blog einen Aufgabegenerator zum Erzeugen von Klassenkarten und zugehörigen Testklassen zum Download angeboten. Das habe ich nun getan und wollte hierzu kurz wie versprochen mein Feedback schreiben.

Zunächst mal muss ich sagen, dass ich Aufgabengeneratoren klasse finde. Ich selbst habe früher einige auf JavaScript-Basis für meinen Mathe-Unterricht geschrieben. Immer angeregt durch die Seite von Arndt Brünner. Manchmal bin ich aber auch an meinen Erwartungen gescheitert. So habe ich für geometrische Konstruktionen mal einen Parser schreiben wollen, hatte aber zum damaligen Zeitpunkt noch keine Ahnung wie man so etwas macht. Habe ich auch immer noch nicht zu 100%, deswegen kann man nur den Ansatz anschauen. Irgendwann sollte ich das noch mal neu ansetzen. Genauso wie den Aufgaben-Generator zum Üben der Potenzgesetze. Noch weniger fertig und mit noch höheren Ambitionen angefangen (Zwei Potenzen anklicken und das zugehörige Gesetz auswählen mit dem vereinfacht werden soll). Beides habe ich im Übrigen vor knapp 15 Jahren angefangen zu schreiben. Wahnsinn, wozu ich früher noch Zeit hatte.

Zurück zu m Java-Generator von Herrn Rau. Ich finde den Aufgaben-Generator prima. Die Oberfläche entspricht nicht ganz meinem Stil, aber die Auswahl-Möglichkeiten sind gut. Man kann die Anzahl der Attribute bestimmen, ob 2 Konstruktoren umgesetzt werden sollen, ob es Startwerte für die Attribute geben soll, ob diese private sein sollen und ob es Methoden geben soll. Den letztere Punkt finde ich zu „übertrieben“, da es sich nur um die Standard get/set-Methoden der Attribute handelt. Herauskommen tut dann so etwas:

|--------------------
| Mensch
|--------------------
| bunt: boolean
| haeufigkeit: double
| typ: char
| postleitzahl: int
|--------------------
| Mensch()
| Mensch(boolean, double, char, int)
| getBunt(): boolean
| getHaeufigkeit(): double
| getTyp(): char
| getPostleitzahl(): int
| setBunt(boolean): void
| setHaeufigkeit(double): void
| setTyp(char): void
| setPostleitzahl(int): void
|--------------------
Der Wert des Attributs 'bunt' soll am Anfang sein: true
Der Wert des Attributs 'haeufigkeit' soll am Anfang sein: -2.447199215281726
Der Wert des Attributs 'typ' soll am Anfang sein: 'S'
Der Wert des Attributs 'postleitzahl' soll am Anfang sein: 61

Schön ist hierbei, dass die Beschreibung in UML erfolgt, also der Datentyp bzw. Rückgabewert mit Doppelpunkt angehängt wird. Das finde ich in den Schulbüchern ein Unding. Dafür fehlt mir jetzt das – bzw. + für private und public. Das das Rechteck nicht geschlossen ist, kann ich zwar nachvollziehen, hätte man aber vielleicht korrigieren können.  So sieht es irgendwie halb fertig aus. Den Startwert für den double-Wert finde ich ein wenig übertrieben. Da hätte so etwas wie „Zufallswert(0,100) . Zufallswert(0,100)“ es auch getan. Und für die Postleitzahl sollte es dann auch fünfstellig sein.

Als Methode würde ich immer auch noch eine toString()-Methode ergänzen… die kann man später immer mal gebrauchen.

Das aber absolut beste an dem Generator ist, dass er parallel eine Testklasse erzeugt. Im Gegensatz zu einer Musterlösung, die im Zweifelsfall nur irgendwie kopiert wird, lässt sich so herausfinden, ob man alle gewünschten Anforderungen erfüllt hat. Das finde ich wirklich großartig.

Hier ein kleiner Auszug:

import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class MenschTest {
    Mensch testObject;
    public MenschTest() {}

    @Before
    public void setUp() {
        testObject = new Mensch();
    }

    @Test
    public void initialisierungVonBunt() {
        assertEquals(testObject.getBunt(), true);
    }

    @Test
    public void initialisierungVonHaeufigkeit() {
        assertEquals(testObject.getHaeufigkeit(), -2.447199215281726, 0.00001);
    }

So wird mit der letzten Methode geprüft, ob der Startwert um maximal 0.00001 vom Wert -2.447199215281726 abweicht. Das macht hier zwar wenig Sinn, aber bei Methoden, die etwas wirklich berechnen sollen, macht die Benutzung einer Delta-Abweichung durchaus Sinn.

Fazit: Ich finde die Arbeit von Herrn Rau großartig und werde sie auch einsetzen. Ich würde mir für Kollegen noch ein paar einfachere Erweiterungsmöglichkeiten wünschen (Andere Klassen, Attribute, Methoden über eine Text-Datei integrieren) und das -/+ für private und public wünschen, aber das wärs auch schon. Danke Thomas für deine Arbeit.

 

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?

 

« Ältere Beiträge Neuere Beiträge »

© 2017 Lehrzeit

Theme von Anders NorénHoch ↑