Ich habe in den letzten Tagen einige Bemühungen getroffen, um meine Webseiten und Blogs auf die DSVGO anzupassen, die in 40 Tagen in Kraft tritt.

Die DSVGO regelt die Anforderungen für den Datenschutz neu. Auf der einen Seite hat die Verordnung einige positive Aspekte (z.B. werden sich auf EU-Seiten die Tracking-Buttons von Facebook & co nicht mehr auffinden lassen oder so wie auf dieser Seite nur in angepasster Form. Ähnliches gilt für Smileys, Gravatar und co… In Zukunft wird man also nicht mehr ganz so leicht auf jeder Webseite von den großen Playern getrackt.

Auf der anderen Seite sind die Hürden gerade für private Blogger enorm und unübersichtlich. Es ist schwer abzusehen, ob man alle Richtlinien eingehalten hat und es geht die Befürchtung um, dass die DSVGO die großen Player nur am Rande tangieren wird, werden die kleinen privaten Blogger zu den Opfern von Abmahnanwälten werden. Siehe dazu z.B. auch diese Seite: https://lesefreude.at/dsgvo-leifaden-fuer-blogger/

 

 

Die Lerntheke dient dem Trainieren für die erste Klausur. Sie ist sowohl Offline ausdruckbar. Dank Inspiration von Jan-Martin Klinge ist sie auch Mobil mit dem Tablet nutzbar. Auf den einzelnen Karten befinden sich dann interaktive Links zu den Hilfekarten. Die Lerntheke steht unter CC0-Lizenz, d.h. ihr könnt damit anfangen was ihr möchtet.

 

Hinweis: Da der Abschnittszoom nicht in der Online-Variante von Office funktioniert, müsst ihr die Datei herunterladen. Ich werde die Dateien noch zu einem anderen Cloud-Anbieter verschieben, damit diese ärgerliche Einschränkung nicht weiter irritiert.

Hier der Download:

 

 

Jan-Martin Klinge hat mich mit seinem Konzept der Lerntheken inspiriert. Die Idee, interaktive Lerntheken mit Powerpoint zu erstellen, die man aber auch ganz normal ausdrucken kann, finde ich richtig klasse.

Das einzige, was mich bisher gestört hat ist die Art wie in seiner Vorlage die Tippkarten eingebunden werden. Die Hilfekarten liegen dann ja auf jeder Seite und die Informationen sind dann redundant (d.h. wenn man einen Fehler macht, bedeutet dies viel Arbeit). Besser wäre es, wenn man elegant auf die entsprechende Tippkarte verlinken könnte. In Powerpoint 2016 geht dies sehr elegant mit Hilfe des Folienzooms. Auf diese Weise kann die onehin schon gute Vorlage nochmal verbesert werden.

Siehe dir dazu folgendes Video an.

Hinweise: Inzwischen habe ich festgestellt, dass der Folienzoom zwei Einschränkungen hat:

a) Er funktioniert nicht mit Office-Online. Ich werde daher die Dateien erstmal bei einem anderen Cloud-Anbieter lagern, da es irritierend ist, wenn die Präsentation im Browser geöffnet wird aber dort nicht funktioniert.

b) Man kann zwar auf eine Folie zoomen, wenn man aber wieder zurück will, funktioniert dies nur indem man explizit zurück klickt oder wischt. Wenn man ganz normal weiterklickt, dann läuft man die Folien in normaler Reihenfolge durch. Mit dem Abschnittszoom funktioniert es aber perfekt. Die erste Lerntheke (Lerntheke Python) wurde bereits mit dem Abschnittszoom erstellt. Ich werde demnächst auch ein Video hierzu erstellen.

Letzte Woche habe ich das erste mal eine Lerntheke im Design von Jan-Martin Klinge erstellt. Das Thema der Lerntheke: Flächeninhalte.

In der Lerntheke sind einige Messaufgaben enthalten, die ich extra mit Geogebra maßstabsgerecht erstellt habe. Dies geht mit Geogebra indem man die Grafik als Bild exportiert. Dann kann man den Maßstab exakt einstellen und das ganze in die Zwischenablage kopieren. Wenn man nun in Word/Powerpoint darauf achtet, daß die Skalierung 100% beträgt, kann man die Grafik maßstabsgetreu ausdrucken.

Das erste mal habe ich natürlich erstmal einen Fail eingebaut, da ich die Lerntheke im A5-Format (Zwei Seiten auf einem Blatt) ausgedruckt habe – So haben sich natürlich die Maße verändert und passten nicht mehr zu den Lösungen (Das hätte ich mir natürlich auch denken können). Also habe ich das ganze das nächste mal in A4 ausgedruckt… doch schnell machten mich zwei aufmerksamen Mädchen der sechsten Klasse auf einen Fehler aufmerksam:” Herr Siebel, 2 Kästchen sind nicht genau 1 cm groß!”. Stimmt natürlich, die Kästchen hatten eine minimale Abweichung, offenbar wurde das Bild trotzdem noch skaliert. Zu Hause war der Fehler dann schnell gefunden.

In Powerpoint wird standarmäßig ein Häckchen gesetzt vor der Option “Auf Seitenformat skalieren”. Diese Option muss deaktiviert werden, damit der Maßstab beim Drucken erhalten bleibt.

 

3. Stunde Python: Nachdem die Schüler mit Turtle-Grafik erste Erfahrungen gemacht haben und im Online-Kurs parallel die Grundlagen trainiert haben stand nun in der dritten Stunde das Thema Text-Adventures auf dem Programm.

Prinzipiell ist es mein Ziel, den “langweiligen” Teil des Programmieren-Lernens auf den Online-Kurs zu verschieben und dann im Unterricht selbst spannende Anwendungsfälle untersuchen zu können. Text-Adventures sind deshalb besonders gut geeignet, da man hier sehr gut den Umgang mit Kontrollstrukturen lernen kann (man benötigt eine Mainloop und einen Haufen verschachtelte If-Elif-Else Abfragen) und sieht, wie selbst sehr simple Programme schnell aus sehr komplexen Code bestehen (der Umgang mit Komplexität ist einer der Dinge, die die Informatik als Disziplin ausmacht).

Der Grundaufbau eines Textadventures in Python kann so aussehen:

zustand="start"
while (zustand!="ende"):
    if zustand=="start":
        print("Situationsbeschreibung")
        eingabe = input("Was tust du (f: In den Flur, a: Abhauen)")
        if eingabe=="f":
            zustand="flur"
        else:
            zustand="ende"
    elif zustand=="flur":
        print("Du betrittst den Flur")
        eingabe = input("Was tust du?")
    elif zustand=="ende":
        print("Du läufst davon...")
            


Das ganze wird natürlich schnell extrem unübersichtlich… daher enstand bei einigen Schülern von sich aus bereits der Wunsch den Code irgendwie übersichtlicher zu gestalten, was hier zum Thema Funktionen führt:

def flur():
    print("Du gehst in den Flur... oben hörst du Geräusche...")
    eingabe=input("""Was tust du?
        [r]ückwärts: Ich gehe zurück zum Haupteingang
        [o]ben: Ich gehe die Treppen hoch""")
    if eingabe=="r":
        return "haupteingang"
    if eingabe=="o":
        return "Erster Stock"

Weiterhin bietet es sich auch an Zufallsfunktionen einzuführen (um z.B. Kämpfe oder Gefahren zu simulieren). Das nächste mal werde ich daher diese Einheit mit einer Lerntheke ergänzen, auf der man die wichtigsten Funktionen nochmal nachlesen kann.

 

Interessanterweise kamen alle Schüler sehr ordentlich mit den Aufgaben zurecht. Eine Erfahrung, die ich mit Java+Guis oder Java+Greenfoot so noch nicht gemacht habe. Wenn wir über Probleme gesprochen haben, dann meist nicht über einfache Syntaxfehler, sondern über grundlegende Logik-Fehler, die von den Schülern mit etwas Hilfestellung selbst entdeckt wurden. So macht mir das Unterrichten viel mehr Spaß und ich habe das Gefühl, dass viele Schüler schneller und mehr lernen, als in meinen bisherigen Java/Lazarus Kursen.

Da freut man sich als Informatiklehrer:

“Insbesondere die erst seit diesem Schuljahr neu eingerichtete AG „Robotik“ war bei den Besuchern besonders beliebt. Dank der „Finanzspritze“ von 2000 Euro des übrigens sehr aktiven Fördervereins der CWS konnten die Bausätze für die selbst gebauten kleinen Roboter bereitgestellt werden. Die Schüler tüfteln und bauen unter Leitung von Dr. Stephan Zschiegner kleine Maschinen, programmieren sie und bringen den Robotern so erstaunliche Fähigkeiten bei, was sie nun vorführten. Aber auch in den Fachbereichen Physik oder Chemie gab es erneut erstaunliche Experimente, bei denen die jungen Besucher zum Teil auch selbst Hand anlegen durften. ” http://www.usinger-anzeiger.de/lokales/usingen/eine-attraktive-schule_18533093.htm

Tatsächlich war es am Tag der offenen Tür noch nie so voll in den Informatikräumen. Die Roboter der AG Robotik sorgten für große Begeisterung und ich freue mich mit dem Kollegen, der diese präsentieren durfte.

 

In unserer Schule haben wir zahlreiche Whiteboards, die sich nur per vga ansteuern möchte. Da die angeschlossenen Rechner sich beim Anmelden mit den Servern des Hochtaunuskreises verbinden, stellen diese leider für den Unterricht keine Option dar: Es dauert leider 5-10 Minuten bis die Rechner hochgefahren sind, man sich eingeloggt hat und überhaupt dazu kommt, irgendetwas zu machen. Man kann dies zwar irgendwie organisieren (z.B. den Rechner vor dem Unterricht starten, etwas erklären, dann einloggen, wieder etwas erklären und dann loslegen). Selbst im besten Fall geht dabei aber wertvolle Unterrichtszeit verloren.

Ich verwende daher meinen eigenen Rechner und da ich nicht mit meterlangem vga-Kabel durch die Schule laufen möchte. Wenn man den eigenen Rechner per vga-anschließt baut man zudem schnell gefährliche Stolperfallen, die man im Eifer des Gefechts übersieht.

Lange Zeit habe ich den Microsoft Display Adapter verwendet (Danke für den Tipp an Jan-Martin Klinge). Leider hat das Gerät irgendwann in den Winterferien beschlossen mit meinem aktuellen Rechner (Thinkpad Yoga 370) nicht mehr kommunizieren zu wollen… Alle Versuche etwas daran zu ändern sind leider gescheitert.

Zum Glück habe ich jetzt eine günstigere Alternative gefunden: Für 25€ habe ich dieses Gerät gekauft, welches neben Miracast angeblich auch Apple Airplay unterstützt. Ich habe zwar jetzt eine geringfügige Verzögerung (wenn ich etwas auf meinem Laptop schreibe und mich umdrehe, sehe ich noch was ich zuletzt geschrieben habe). Da ich aber keine Videos zeige ist das vollkommen egal. Da das Gerät nur einen HDMI Anschluss hat, verwende ich zusätzlich einen HDMI auf VGA Adapter.

 

Bei Übernahme meiner E-Phase Informatik zum Halbjahr musste ich mit Erschrecken feststellen, dass ich nur 10 Doppelstunden bis zu den Sommerferien habe. Darunter sind zwei Stunden, in denen ich die Klausur schreibe. Dazu kommen erfahrungsgemäß Ausfälle durch Schulveranstaltungen, Krankheit oder ähnliches…

Wie soll ich in dieser kurzen Zeit Schülern das Programmieren beibringen?

Ich habe lange recherchiert und dann auf der Plattform Stepik begonnen, einen Online-Kurs für Python anzulegen. Die Schüler müssen Aufgaben aus dem Kurs als verpflichtende Aufgaben lösen. Ich sehe live wer welche Aufgaben bearbeitet hat. Da Stepik nur kostenlos ist, wenn die Kurse unter CC-Lizenz öffentlich zugänglich sind, könnt ihr diesen Kurs auch gerne verwenden um das Programmieren mit Python zu lernen. Der Kurs wird im Laufe des Halbjahres noch deutlich wachsen: https://stepik.org/course/6229/

Im hessischen Abitur werden zum Thema “Objektorientierte Programmierung” die Programmierbeispiele in zwei Sprachen angeboten: JAVA und Delphi.

Delphi bzw. Lazarus als Open Source Alternative hat inzwischen einen gewissen historischen Wert. die Sprache wird außerhalb des deutschen Informatikunterrichtes praktisch nirgends mehr benutzt. In Hessen ist sie nur deshalb noch von Bedeutung, da diese lange Zeit Grundlage der Informatikausbildung war und vor allem viele Quereinsteiger keine andere Sprache sprechen.

JAVA ist da schon ein anderes Kaliber. JAVA ist die meist verbreitetste Sprache überhaupt und wird auch von vielen Universitäten als erste Programmiersprache verwendet. Mit Greenfoot, BlueJ, dem JavaEditor, Gamegrid, Kara, dem Hamstersimulator verfügt JAVA über zahlreiche gute Entwicklungsumgebungen und Frameworks, die zum Unterrichten mit der Sprache geeignet sind. Gleichzeitig ist das Lehren mit JAVA auch mit zahlreichen Fallstricken versehen, da die Sprache für die professionelle Entwicklung in großen Teams gut geeignet ist, aber nicht als erste Programmiersprache für Programmieranfänger vorgesehen ist. Dies fängt mit dem üblichen Grundkonstrukt an:

public static void main(String args[]) {
}

verbunden mit zahlreichen Problemen, die dem ersten Problemlösen in Java im Weg stehen:

  • Installation des SDKs und richtiges Setzen der Pfadvariablen.
  • Zahlreiche Syntaxfehler beim Vergessen von runden oder geschweiften Klammern oder des Semikolons am Ende einer Zeile.
  • Durch das Strong Typing wird mehr “Fingertyping” benötigt, es dauert dadurch einfach länger bis man zu Ergebnissen kommt. Und spätestens wenn man in der Objektorientierung mit Containern und Casts beschäftigt, muss man sowieso darüber nachdenken was für einen Typ das aktuell verwende Objekt gerade haben könnte.
  • In Kombination mit Greenfoot: Zahlreiche Programmierkonzepte müssen “gleichzeitig” gelernt werden um einfache Programme zu schreiben (Objektorientierung, Interaktion von Objekten, Vererbung)
  • In Kombination mit GUIS: Komplizierte Klassenhierarchie (man verwende nur mal ein JTextField, auch hier müssen wieder viele Konzepte (imperative Programmierung, Objektorientierung) gleichzeitig gelernt werden.
  • Lesen und Schreiben in Dateien ist eine einzige Qual. Auch das Lesen von Tastatureingaben ist umständlich
  • Man muss sich als Lehrer und Lernender entscheiden, ob man statische Arrays oder direkt mit den objektorientierten ArrayLists anfängt. In der Regel benötigt man für objektorientierte Programmierung letzteres. Sollte man dann also die Arrays direkt überspringen?
  • und vieles mehr…

Meine persönliche Erfahrung aus mehreren Java-Kursen an der Schule und der Universität war folgende: Java wird von Lernenden als extrem schwergewichtige Sprache wahrgenommen. Alleine der Gedanken nach einiger Zeit Programmierpause sich wieder in Java einarbeiten zu müssen, verursacht Stöhnen. Ich kenne auch fast niemanden -außer Informatikstudenten-, der Java gelernt hat und anschließend für irgendeinen Zweck noch einmal freiwillig verwendet hat.

Schön wäre es daher, wenn man statt Java auf eine leichtgewichtige Sprache setzt, die leicht zu lernen ist, besser im Kopf behalten werden kann und daher besser dazu befähigt, Probleme zu lösen. Das Lösen von Problemen mit Hilfe eines geeigneten Werkzeuges sollte meiner Meinung nach einer der Kernkompetenzen sein, die Schüler im Informatikunterricht lernen sollten. Siehe dazu auch eine der ersten Fragen im großartigen Buch “How to think like a computer scientist”:

What is the most important skill for a computer scientist

a) To think like a computer
b) To be able to code really well
c) To be able to solve problems
d) To be really good at math.

Die richtige Antwort ist ganz klar c). Doch wenn Schüler eine Programmiersprache später nicht mehr benutzen, weil ihnen diese als schwergewichtig und umständlich erscheint, dann haben wir als Informatiklehrer unser Ziel verfehlt.

Ich setze daher in meinem neuen E-Phasen Kurs auf Python als erste Programmiersprache und werde zu einem späteren Zeitpunkt meine Erfahrungen teilen. Gegebenenfalls werden wir später in der Objektorientierung nochmal auf Java wechseln, so wie es von dem großartigen deutschen Online-Lehrbuch Informatik in der Schule vorgeschlagen wird.

Der Vorteil von Java ist natürlich, dass es sehr gute Tools gibt um die Objektorientierung zu lernen, wie z.B. den Java Editor oder BlueJ. Insbesondere das interaktive erzeugen von Objektdiagrammen, die Kombination von Klassen- und Objektdiagrammen kann ein Riesenvorteil für den Unterricht sein. Ich finde es aber falsch den Hauptfokus des Fachs Informatik auf die Objektorientierung zu legen. Objektorientierung ist ein wichtiges Paradigma um zu verstehen, was notwendig ist, damit Programme im großen Stil und im Team programmiert werden können. Wie bedeutend Objektorientierung oder die Verwendung von Java ist, ist tatsächlich aber umstritten (siehe [1], [2], [3]), siehe dazu auch folgende Zitate. Damit ich nicht falsch verstanden werde: Es ist schon wichtig im Unterricht objektorientierte Programmierung zu lernen. Viel wichtiger ist es aber das Programmieren zu lernen und zu lernen wie man Probleme löst. Wie so oft versperrt die Objektorientierung hier auch in der Lehre schnell den Blick auf das Wesentliche.

Würde das Abitur in Hessen nicht Java als Programmiersprache vorsehen (wobei bisher noch kein Schüler an unserer Schule das schriftliche Abitur absolviert hat), dann würde ich auch erwägen komplett auf Python umzusteigen.

Meine erste Erfahrungen sind übrigens durchweg positiv: Die Schüler können mit wenigen Sprachkonstrukten schon schnell vielfältige Programme schreiben. Sie sind produktiv. Sie lernen keinen Sprachbalast, sondern direkt, wie sie Aufgaben lösen können. Vieles deutet darauf hin, dass ich mich mit diesem Weg anfreunden könnte.

Was spricht noch für Python:

  • Python wird von fast allen großen US Universitäten als erste Programmiersprache verwendet.
  • Verbreitung: Python ist nach TIOBE die meistverwendeste, leichtgewichtige Programmiersprache, nach Redmonk ebenfalls im Spitzenfeld mit Java und C#, nach PYPL direkt hinter JAVA. In allen Vergleichen sieht man aber, dass die Verbreitung von Python zunimmt, während die Verbreitung von Java konstant bleibt oder sogar abnimmt. Es ist durchaus vorstellbar, dass Python meistverbreitetste Programmiersprache sein könnte.
  • Durch die Einfachheit haben Schüler von Tag 1 an direkt tolle Erfahrungen und Erfolgserlebnisse.
  • Hervorragende Standardbibliothek, so dass auch echte Probleme (z.B. Bildbearbeitung) früh gelöst werden können.
  • Python ist Open Source! (Im Gegensatz zur Standard-Runtime-Environment von Java)