Nov 202012
 

Am vorletzten Wochenende fand die jährliche GI-Fachtagung der Hamburger und Schleswig-Holsteiner Informatik Lehrer/innen in unserer Schule am Richard-Linde-Weg statt. Ich nehme seit einigen Jahren an diesem „Familientreffen“ teil (siehe meinen Bericht von 2011 und von 2010)

Dieses Jahr war Michael Kölling zu Gast, ein bekannter Softwareentwickler und Professor der Informatik aus Großbritannien, der maßgeblich BlueJ und Greenfoot entwickelt hat. Er stellte die neuesten Entwicklungen im Bereich Software-Werkzeuge für die Lehre und Bildungsarbeit vor und gab damit auch einen Ausblick auf die Weiterentwicklungen von Greenfoot. Es soll weg gehen von den Java-Klammern und Syntax-Hürden hin zur einer ausdrucksbasierten grafischen Oberfläche (d.h. z.B. Schleifen und Fallunterscheidungen nur vollständig als Block zuzulassen) zum Programmieren mit der Tastatur. Ein interessanter Ansatz, wird doch im Unterricht viel Zeit auf das Einüben syntaktischer Korrektheit vergeben, wohingegen es auch möglich wäre, durch eine Scratch-ähnliche Struktur (in der sich keine halben Schleifen oder Fallunterscheidungen erzeugen lassen) mehr Zeit auf die grundlegenden, Programm-unabhängigen Strukturen und Konzepte zu verwenden. Interessant war auch der Hinweis auf die Praxis, eigenes Wissen im Bereich als das Relevanteste einzuschätzen, wobei sich Generationen massiv unterscheiden. So ist es durchaus zutreffend, dass ganz unterschiedliche Dinge als „Grundlagen“ „der“ Informatik definiert werden, wobei Informatik sehr umfangreich und vielseitig ist.

Workshop „Programme im Flug“

An den Vortrag anschließend verteilten wir uns auf verschiedene Workshops. Im Workshop „Programme im Flug“ wurde eine Parrot AR.Drone 2.0 vorgestellt, die sich über ein Smartphone im W-Lan per remote-controll steuern lässt. Das Modell ist für etwa 300 € frei käuflich und mit zwei Kameras ausgestattet. Die zweite Version des Gerätes ist nun mit annähernd HD Qualität erhältlich und sehr robust. Wie uns präsentiert wurde, kann es aus 1m Höhe ohne Probleme auf den Boden fallen gelassen werden. Die Drone hat einen ARM-Prozessor, Orientierungssensoren und Höhenmessung sowie eine Kompass und Drucksensoren und lässt sich über Schnittstellen entsprechend erweitern. Die Daten dieser Sensoren können über das Smartphone oder über eine USB-Schnittstelle erfolgen. Die Standard-Software zur Steuerung „freeflight 2.0“ ist Open Source und bietet über eine in C geschriebene A Schnittstellen zu verschiedenen Endgeräten. Mittels Bildverarbeitungsverfahren können über die Kameras Spiele gespielt werden und es sind augmented reality Anwendungen denkbar, so das z.B. Metainformationen zu Gebäuden, Gegenständen oder Personen eingeblendet werden könnten. Über spezielle Tags (Bilder, auf die die Drone speziell reagiert und sie damit in ihrer Umgebung speziell orientieren lässt) können auch Objekte verfolgt werden. GPS ist geplant, aber noch nicht umgesetzt. Mit dem „drone altitude viewer“ gibt es verschiedene grafische Oberflächen, um das System zu debuggen und alle Features anzeigen zu lassen. Als Sicherheitsvorkehrungen gibt es einen Notaus, der alle Motoren sofort stoppt und auch ausgelöst wird, sobald etwas in die Turbine kommt. Die Drone funktioniert als Access-Point im WLAn und erzeugt ein eigenes Netzwerk mit IP-Adressierung. Grundsätzlich ist es aber auch möglich, einem WLAN beizutreten und damit auch mehrere Dronen interagieren zu lassen.

Zusammenfassend lässt sich zum Workshop sagen, dass es interessant war, den aktuellen Stand der Technik von Dronen zu erfahren und über technische Details zu diskutieren sowie ein solches Gerät einmal selbst zu steuern. Auf der anderen Seite wurde kein Wort über die gravierenden potentiellen gesellschaftlichen Auswirkungen von Dronen verloren und ich war gerade nicht in Stimmung, das Thema auszubreiten. Gerade im unterrichtlichen Kontext sollte die Frage nach Interessenskonflikten um Herstellung und Nutzung sowie soziale Auswirkungen, wie die Erleichterung und potentielle Vermassung von Kontrolle und Überwachung unbedingt thematisiert werden. Auch ist es fraglich, inwieweit dem Mißbrauchspotential durch private wie staatliche Stellen überhaupt verantwortungsvoll technisch wie gesellschaftlich begegnet werden kann. Ich stelle mir vor, wie in ein paar Jahren jeder Mensch durch die Fensterscheiben direkt per Video alles Mögliche aufnehmen und ins Netz stellen kann und da graut es mir eher, als dass ich fasziniert bin. Wenn man heute bereits die Herausforderungen betrachtet gerade im Hinblick auf Kinder und Jugendliche und Videoproduktion und -verteilung, wächst die Herausforderung noch einmal beträchtlich, wenn ich ferngesteuert aus der Luft direkt und unwiederruflich Youtube füttern kann.

Abschließend zum Thema habe ich einige Artikel zum Thema Einsatz von Dronen, die einige gesellschaftspolitische Aspekte beleuchten ergänzt:

http://www.heise.de/newsticker/meldung/Bundestag-verabschiedet-Drohnengesetz-1424100.html

http://www.heise.de/newsticker/meldung/Polizeichefs-verabschieden-Richtlinien-fuer-Drohneneinsatz-1670353.html

Ein eher technischer Artikel: http://www.heise.de/hardware-hacks/meldung/Quadrokopter-AR-Drone-2-0-kommt-in-den-Handel-1558893.html

Eine Webseite von Amateur/innen, die sich mit Unmanned Aerial Vehicles (UAVs) beschäftigen: http://diydrones.ning.com/

Workshop „Messen mit Lego-Mindstorms“

In diesem Workshop eines Lego-Mitarbeiters ging es zum einen um Gtundsätzliches zum Gerät, zum anderen um einfache Anwendungen der Messwerterfassung am Beispiel der Temperaturmessung. Als erstes wird ein Programm erstellt, in dem die Anweisungen beschrieben werden, die der Roboter ausführen soll. Hierfür ist es wichtig, den richtigen Sensor-Typ auszuwählen, dann den Ausgabewert umzuwandeln (von Integer auf String), so dass er vom Display darstellbar ist und dann die Ausgabe zu definieren. Dieses Programm wird dann auf den Lego-Roboter übertragen (siehe unten im zip-Ordner „messen-temp.rbt“).

Als nächstes werden mit dem Roboter und dem Programm Messwerte über einen bestimmten Zeitraum erfasst. Diese speichert der Roboter in einer einfachen log-Datei (siehe unten im zip-Ordner „OBD_8.log“).

Diese log-Datei wird dann über die Messwert-Erfassung am Rechner vom Roboter ausgelesen und grafisch dargestellt.

Hier sind alle Dateien und Bilder zur einfachen Temperaturmessung zusammengefasst: Messen mit Lego

Nov 132012
 

Nach einem ersten Anlauf, der leider etwas ungenau geplant war, hatte ich heute die Möglichkeit, eine Doppelstunde zur Einführung in das Konzept der Vererbung in der objektorientierten Programmierung ein zweites mal besser vorstrukturiert durchzuführen.

Das Möbelplaner-Projekt wurde die letzten Jahre von Hamburger Informatik-Lehrer/innen und Didaktiker/innen, unter anderem von meinem Kollegen Uwe Debacher als möglicher Anwendungskontext für den Themenbereich „Objektorientierte Programmierung“ im Rahmenplan der Studienstufe in Hamburg in Java entwickelt.

Das Projekt ist für die IDE (integrierte Entwicklungsumgebung) BlueJ konzipiert und besteht aus einer Klasse „Leinwand“, die die anspruchsvolleren Aufgaben der grafischen Darstellung im Hintergrund übernimmt, und aus den Klassen „Stuhl“ und „Tisch“, die sich auf die Leinwand zeichnen lassen. Mit diesem Projekt arbeiten wir den Großteil des Semesters und bauen die Funktionalitäten Schritt für Schritt aus.

Grafik übernommen von http://www.debacher.de/wiki/BlueJ

Als Einstieg in das Thema „Vererbung“ wählte ich ein UML-Diagramm (eine standardisierte Beschreibungssprache) der beiden Klassen „Stuhl“ und „Tisch“, um die Attribute und Methoden wirkungsvoll im Vergleich gegenüberzustellen. Genauer wurde UML an dieser Stelle nicht thematisiert, dies werde ich im laufe der nächsten Wochen genauer tun.

eigene Grafik

In Hinblick auf Wartbarkeit und Übersichtlichkeit von Software diskutierten wir die Nachteile von Code-Dopplungen. An einem vorbereiteten Beispiel „Schrank“ mit erbenden Klassen „Kleiderschrank“ und „Küchenschrank“ habe ich daraufhin das Konzept in Java gezeigt, wie sich Objekte erzeugen lassen und Attribute wie Methoden von „Schrank“ auf die beiden Spezialfälle übertragen lassen, indem diese mit dem Schlüsselwort „extends“ als Unterklassen von Schrank definiert werden. (siehe weiter unten „Schrank.zip“ für das vollständige Java-Projekt) Hierbei habe ich extra-Zeit verwendet auf die Klassifizierung von Compiler-Fehlern und dabei auch das Thema Sichtbarkeit von Attributen und Methoden im Kurs diskutiert: Die zu vererbenden Elemente müssen als „public“ oder besser als „protected“ umgeschrieben werden, damit die erbenden Klassen auf diese zugreifen können.

Die Klasse Schrank mit den erbenden Unterklassen Kleiderschrank und Kuechenschrank, eigene Grafik

„Schrank“ und „Kleiderschrank“ sowie „Kuechenschrank“ als UML-Diagramm, eigene Grafik

Die Aufgabenstellung war nun, für das eigene Möbelplaner-Projekt die Klassen Stuhl und Tisch (und möglicherweise weitere Klassen) von einer generalisierenden Oberklasse „Moebelstueck“ erben zu lassen, um den Quellcode zu reduzieren und das Erzeugen neuer Möbel-Klassen zu erleichtern.

Hierzu hatte ich in unserem schulinternen Server-System mit iServ mehrere Hilfestellungen in Form von Quellcode als pdf je Klasse in verschiedenen Entwicklungsstufen mit einer Beschreibung des aktuellen Schrittes zur Verfügung gestellt, aber erst, nachdem alle etwa 20 Minuten eigenständig am arbeiten waren, um diejenigen zu unterstützen, die große Schwierigkeiten mit der Aufgabe hatten.

Das Hilfesystem mit schrittweisen Versionen der erbenden und vererbenden Klassen.

Etwa 20 Minuten vor Schluss habe ich einen Schüler, der gut in der Zeit lag sein Zwischenergebnis präsentieren lassen, um an diesem die Konfliktstelle zu diskutieren, die mir beim ersten Versuch im Parallelkurs den Rahmen gesprengt hatte. Die Methode „gibAktuelleFigur()“ erzeugt über einen GeneralPath eine zweidimensionale grafische Darstellung der betreffenden Klasse. Wenn nun sämtliche Methoden aus „Stuhl“ und „Tisch“ generalisiert werden, so muss auch die Methode „gibAktuelleFigur()“ in Moebelstueck enthalten sein, da sie von anderen Methoden benötigt wird, die exakt gleich sind in „Stuhl“ und „Tisch“. Dies hatte der Schüler selbst als „unschön“ gelöst erkannt, dass er einfach wie beim Stuhl einen Shape erzeugen ließ, obwohl ein Möbelstück gar keine direkte Form haben kann. Daran anknüpfend zeigte ich den Schüler/innen an der Schülerlösung, wie eine abstrakte Methode in einer dann abstrakt deklarierten Klasse eingefügt wird, die die Implementierung der Methode dann den Unterklassen überlässt. Dies rundete das heutige Thema ab und wurde gegen Ende der Stunde noch von einer Sicherungsphase mit individuellem Forumsbeitrag abgeschlossen.

Einige der Antworten auf die erste Fragestellung:

„Die Vererbung ist nützlich für das Software Projekt, weil es übersichtlicher gestaltet ist. Zwar braucht man Zeit um alles zu verstehen, doch nach und nach merkt man, dass es besser und schneller geht, wenn man die Sachen einmal definiert.“

„Es verkürzt das Schreiben um einiges und vereinfacht das Erstellen von Möbelstücken.“

„Die Vererbung ist sehr nützlich,weil man sich so eine Menge Arbeit sparen kann. Man definiert die Sachen die immer gleich sind nur ein einziges Mal. Außerdem wird es auch für den Aussenstehenden viel einfacher verständlich, weil das Skript nicht mehr so lang und kompliziert wirkt.Auch neue Klassen sind dank der Vererbung leichter zu erstellen.“

Die vollständigen Unterlagen zum weiterverwenden gibt es bei Uwe Debacher und soweit hier verwendet auch ausschnittsweise hier:

MoebelAnfang.zip

Schrank.zip

Hilfen-Vererbung.zip

Nov 062011
 

Die diesjährige Tagung der SH-HILL Fachgruppe der Gesellschaft für Informatik (GI) fand in der Walddörfer-Stadtteilschule im Nordosten Hamburgs statt.

Nach einem Vortrag von Dr.Jens Gallenbacher zum Konzept von „Abenteuer Informatik“ (über das ich bereits vor einigen Tagen schrieb) am Beispiel von Kapazitätenregulierung und Wege in gerichteten Graphen gab es eine erste Workshopphase, in der ich mich über die Lernsoftware „Filius“ informierte. Continue reading »

Dez 092010
 

Die erste Ausgabe der ZfDI kann

In der ersten Ausgabe, an deren Herausgabe unter anderem mein Informatik-Didaktik Professor Dr.Breier beteiligt ist, sind folgende drei Fachartikel erschienen:

Ethik in Beispielen und ohne Ethik
Rezension zu »Gewissensbisse: Ethische Probleme der Informatik. Biometrie – Datenschutz – geistiges Eigentum«
von Debora Weber-Wulff, Christina Class, Wolfgang Coy und Constanze Kurz

(Sandro Gaycken)

Spiele als Einstieg in das objektorientierte Programmieren
Eine webbasierte Java-Lernumgebung
(Jarka Arnold, Aegidius Plüss)

Office-Schulung – Nein danke!
Vorschläge für eine Bereicherung des Informatikunterrichts
(Ernestine Bischof, Roland Mittermeir)