Informatik mit Arduino

leonardo

Ich habe in diesem Jahr einen Informatikkurs in der Klasse 10 übernommen. Den besucht man als Schülerin oder Schüler zusätzlich zu einem recht vollen Stundenplan in Klasse 10, um die Option auf eine Teilnahme an einem Informatikkurs in Klasse 11 zu bekommen. Man darf dann im Abitur zwei Kurse Naturwissenschaft durch Informatik ersetzen. Ich bin kein gelernter Informatiklehrer – ich bin einfach nur ein größenwahnsinniger Freak und wahrscheinlich schlägt die Informatikdidaktik über meine Ansätze die Hände in der Luft zusammen.  Egal – entweder man ist konventionell oder man lebt.

Stufe 1:

Wir haben Probleme in Einzelprobleme zerlegt – z.B. sollten 20 Zahlen von 20 Personen abgefragt und addiert werden. Unsere Strategien haben wir aufgeschrieben. Dabei spielteh folgende Fragen eine Rolle:

  • Wie merken wir uns die ganzen Zahlen?
  • Wenn wir sie uns aufschreiben: Wir machen wir das genau? Nebeneinander? Untereinander?
  • Addieren wir bei jeder Abfrage oder fragen wir alle Zahlen ab und addieren dann?
  • […]

Stufe 2:

Wir haben mit dem Flussdiagramm ein Verfahren kennen gelernt, dass Aufgeschriebene zu visualisieren und diese Visualisierung für weitere Probleme durchgespielt, die z.B. Fallunterscheidungen enthielten.

Stufe 3:

Mit Scratch haben wir unser Problem aus Stufe 1 ganz konkret gelöst und zwar durch Pass&Fail. Für Scratch muss man heute im Prinzip nicht einmal ein Programm installieren – das läuft auch komplett im Browser – wenn man beim MIT einen Account anlegt. Wer mochte, konnte sich auch schon am klassischen Ratespiel „rate eine Zahl zwischen 1 und 100“ versuchen oder sich eines der vielen veröffentlichten Projekte zu Scratch vornehmen. Die Lösungsansätze haben wir uns vorgestellt und teilweise diskutiert.

Stufe 4:

Anhand eines Ausdrucks eines „Scratchprogrammes“ galt es, ein Flussdiagramm zu zeichnen und einen fiesen, von mir natürlich absichtlich eingebauten Fehler zu finden. Dazu gab es noch einige Erweiterungs- und Optimierungsaufgaben.

Stufe 5:

In einem Dokuwikisystem haben die Schülerinnen und Schüler Seiten zu Programmiersprachen erstellt. Ich habe eine klare Struktur vorgegeben: Eine kurze Beschreibung zur Sprache, ein „Hello World!“- , ein „if -then – else“- und ein „while“-Codebeispiel. Dokuwiki kann das absolut prima, weil es einen leistungsfähigen Syntaxhighlighter für fast alles hat. Es braucht keine Datenbank, ist ajaxbasiert – einfach und umkompliziert. Unnötig zu erwähnen, dass dabei die Konfrontation mit dem Begriff „Syntax“ sowohl theoretisch (für die Sprache suchen) als auch praktisch (Wikisyntax) erfolgte.

Zwischenstand:

Die Schülerinnen und Schüler haben bis jetzt eigentlich schon alles erlebt, was man beim Programmieren so erleben kann:

  • „Mein Code läuft nicht!“ – „Hm. Da fehlt ’ne Klammer“ – „Oha, wenn ich da etwas einrücke, dann wird es ja viel übersichtlicher.“
  • „Sein Code läuft und meiner auch. Welcher ist denn nun richtig?“ – „Welcher gefällt dir denn warum besser?“
  • „Boah, ist das viel zu schreiben!“ – „Nunja – aber wenn sich das ständig wiederholt, könntest du ja vielleicht auch …“
  • […]

Stufe 6:

Kurzer Lehrervortrag zu Arduino. Dann ran an den Simulator – der ist absolut toll und zu empfehlen, bevor die ersten Bauteile in Rauch aufgehen.

Natürlich habe ich zunächst eine ganz einfache Beispielschaltung vorgestellt (blinkende LED).

(circuits.io klappt bisher so richtig gut nur mit Chrome oder Chromium als Browser.)

Die sollte dann um drei LEDs in einer Ampelschaltung erweitert werden. Dazu musste man schon ein Bisschen was am Breadboard verstehen. Nebenbei wurde auch etwas über die Wellenlänge des Lichts und Farbe gelernt: Im Simulator ändert man die LED-Farbe durch Eingabe von Wellenlängen in nm. Und ohne Vorwiderstand macht die LED „peng“, verpolt macht sie gar nichts. Es gab sofort das Spiel: „Wie klein darf ich den Widerstand machen, dass die LED heil bleibt?“ Nebenbei ist die Simulatorhomepage auf Englisch (Widerstand = resistor).

Stufe 7:

Es kommt etwas Theorie zur Arduino-IDE. Wir werden den Arduino Leonardo bzw. einen pinkompatiblen Nachbau  nutzen, weil der durch sein HID-Funktionen in Kombination mit Lagesensoren auch als Gamecontroller oder Mausersatz taugt. Den Arduino kaufen sich die Schülerinnen und Schüler selbst, das Zubehör stifttet unser Förderverein. Die Kosten sind aber sehr marginal im Verhältnis zu den sich bietenden Möglichkeiten. Dann können wir unsere Schaltung aus Stufe 6 real aufbauen.

Ausblick

Die Schülerinnen und Schüler sollen sich nach Möglichkeit eigene Projekte suchen, die sie mit dem Arduino realisieren. Natürlich habe ich notfalls Projekte von unterschiedlichem Schwierigkeitsgrad in der Hinterhand. Der Komplexitätsgrad der Projekte darf natürlich mit dem wachsenden Wissensbeständen steigen. Die Schule bekommt aus einem N21-Projekt für eine AG Roboter auf Arduinobasis gestellt, auf die sich dann ggf. die erwobenen Kenntnisse übertragen lassen.

Mit der steigenden Komplexität der Projekte erwarte ich ein Anwachsen der Programmcodes, das irgendwann dazu führen soll, bestimmte Funktionen auszulagern in objektorientierte Settings (Ende 2. Halbjahr). Schön wäre es, wenn der Code für einen alleine nicht mehr zu pflegen ist, sodass auch Strukturen wie SVN notwendig werden.

Erste Eindrücke

  1. Ich lerne mit den Schülerinnen und Schülern mit. Für mich ist vieles Neuland.
  2. Schülerinnen und Schüler finden Fehler im Programmcode viel schneller in Peer-Reviews als ich
  3. Dieser Ansatz schreckt auch einige ab. Man muss ja allerhand aushalten und sogar auch Elektronik- und Englischwissen ausbauen
  4. Ich musste die Beschäftigung mit der Hardware vorziehen. Ich und die Schülerinnen und Schüler können es teilweise kaum erwarten.
  5. Es wird sehr selbstständig und konzentriert gearbeitet – auf die Frage: „Kann ich das so machen?“ antworte ich oft: „Probiere es aus!“ – und mit dieser Antwort sind sie oft zufrieden.
  6. Perfektionisten sind in der Hinterhand – am effektivsten arbeiten die Experimentierfreudigen
  7. Man kann wunderbar differenzieren: Der C-Freak bekommt eben eine Bildröhre mit Composite-Eingang, auf der er ein Spiel programmiert. Das ist vom Timing her nicht trivial, da der Arduino von seiner Rechenleistung damit an eine Grenze kommt. Dem Anfänger reicht vielleicht ein Lauflicht als erstes Projekt – oder ein Thermometer (NTCs haben eine Kennlinie, muss muss mathematisiert oder mit einem anderen Thermometer kallibriert werden).
  8. Es kommen Fragen wie: „Darf ich zu Hause an meiner Schaltung im Simulator weiterarbeiten?“ „Dürfen wir unser Projekt auch mit nach Hause nehmen?“

Ich habe den PC einfach nur genutzt

Um Dinge zu nutzen, brauchen wir nur ein begrenztes Verständnis von ihrer technischen Funktionsweise. Mit einem Auto etwa wollen wir fahren. Wir wollen nicht wissen, wie ein Motor funktioniert, wir wollen es einfach benutzen. Deshalb soll im Bereich der Mediendidaktik nicht primär technisches Wissen vermittelt werden, sondern Wissen um die Herausforderungen und Potentiale der Nutzung der Medien.

So in etwa ließen sich in meinen Augen Teile der vor längerer Zeit stattfindenden Diskussion zum Spiegelartikel „Generation Null Blog“ zusammenfassen. Diese Argumentation besitzt für mich einen wahren Kern, jedoch ein absolut falsches Analogbeispiel mit den Autos, weil die Konsequenzen von Inkompetenz beim Autofahren oder bei Bedienung eines Computers auf völlig verschiedenen Ebenen liegen. Beim ersteren sind sie physikalisch erfahrbar, physisch unmittelbar erlebbar, beim zweiten sind die Konsequenzen eher diffus – allenfalls für Serverbetreiber wie auch mich ergeben sich echte Erlebnisse, wenn man sich des üblichen Grundrauschens virenverseuchter Anwenderclients erwehrt oder dank mitgesendeter Informationen theoretisch einen Client einer natürlichen Person zuordnen kann.

Das Auto

… ist ja des Deutschen liebstes Kind. Selbst aufgeschlossene Pädagogen in meinem Umfeld nutzen diesen Haufen Blech als fahrendes Wohnzimmer oder Repräsentationsgegenstand – oder was auch immer. Für mich bleibt es ein Haufen Blech, der technisch in Stand gehalten wird und so lange die dicke Beule in der Seitentür nicht gammelt, bleibt sie halt: Die Kiste ist bezahlt und nur der Schrotter wird uns irgendwann scheiden und der Kasten Getränke fliegt vor dem Einsteigen auch schon mal auf’s Dach.

Neue Autos sind so konstruiert, dass ein simpler Glühlampenwechsel oftmals einen Werkstattbesuch erfordert. Ich brauche bei meinem Auto dafür in etwa 45 Sekunden – einzig die H4-Lampe im Hauptscheinwerfer ist mit 2-3 Minuten etwas fimmliger. Es sei jedem gegönnt, ein modernes Auto zu fahren: Wirtschaftlich und vom Umweltgedanken her (ein Golf II kommt erst nach ca. 150.000km in die negative Ökobilanz gegenüber einem modernen Golf – Stichwort: Schadstoffausstoß bei der Herstellung) ist sowas oft absoluter Blödsinn. Ob die Versorgung mit elektronischen Ersatzteilen auch über Jahrzehnte hinweg gewährleistet bleibt, ist zusätzlich zu fragen. Allein die gestiegene Sicherheit ist da ein gültiges Sachargument. Die Leute benutzen halt ihre Autos – zu welchem Zweck auch immer – und das sollen sie auch. Wenn an einem Auto ein Defekt auftritt, den man nicht selbst beheben kann, muss man jemanden dafür bezahlen, der den Defekt beseitigt. Das kostet Geld und Zeit – nichts weiter. Ich fahre zur Werkstatt x, mache einen Reparaturvertrag und bekomme mein Auto zurück. Das war’s. Mein Nichtwissen um die Technik bezahle ich mit Geld. Vielleicht denkt mein Mechaniker noch: „Wieder so’n klugscheißender Lehrer“ und damit hat es sich auch schon mit dem sozialen Risiko.

Weiterlesen

Das würde ich gerne mal in Informatik machen

Eine Sicherheitsfirma verkauft für ein Biolabor ein Zugangskontrollsystem mit folgenden Eigenschaften:

  1. Zugangskontrolle erfolgt über Karten
  2. Die Karten weisen zwei unabhängige Systeme auf: Einen Magnetstreifen und einen auslesegesicherten Mikrochip
  3. Fällt der Mikrochip aus, ist ein Zugang durch den Magnetstreifen immer noch möglich, wenn das Lesegerät diesen mit unterstützt (fallback)
  4. Zugang wird gewährt, wenn die Karte vorhanden ist und ein sechsstelliger Code ausschließlich bestehend aus Zahlen korrekt eingetippt wird
  5. Es gibt einen streng geheimen, mathematischen Algorithmus, der den jeweiligen Code auf der Karte in einer Zeichenkette so verschlüsselt, dass sich durch kein denkbares Verfahren aus ebendieser Zeichenkette wieder der Originalcode errechnen lässt. Nur diese Zeichenkette ist auf der Karte tatsächlich gespeichert.
  6. Jede Karte enthält eine eindeutige und einmalige Registrierungsnummer.
  7. Es gibt einen zentralen Rechner, auf dem der Verschlüsselungsalgorithmus streng gesichert gespeichert ist und der mit allen Lesegeräten verbunden ist.
  8. Auf dem Rechner befindet sich zusätzlich eine Datenbank mit allen gültigen Registrierungsnummern der Zugangskarten.

Beim Zutritt eines Mitarbeiters zum Biolabor geschieht nun Folgendes: Die Karte wird in das Lesegerät gesteckt. Das Lesegerät nimmt über eine gesicherte, stark verschlüsselte Verbindung Kontakt zum Zentralrechner auf und sendet dabei die Registrierungsnummer der Karte. Wenn diese Registrierungsnummer gültig ist, erhält das Lesegerät den Befehl, den Besitzer der Karte nach dem Code zu fragen, andernfalls wird die Karte eingezogen und ein stiller Alarm ausgelöst. Der Besitzer gibt nun den Code ein, der über die verschlüsselte Verbindung an den Zentralrechner geschickt wird. Dieser berechnet mit seinem Algorithmus nun die verschlüsselte Zeichenkette und sendet sie an das Lesegerät zurück. Dieses vergleicht nun die vom Zentralrechner gesendete Zeichenkette mit der auf der Karte gespeicherten. Stimmen beide überein, wird Zutritt gewährt, andernfalls die erneute Eingabe gefordert. Es sind maximal drei Eingaben möglich, bevor die Karte gesperrt, eingezogen und ebenfalls ein stiller Alarm ausgelöst wird.

Aufgabe 1:

  1. Eine Karte wird gestohlen und der Magnetstreifen komplett auf eine Blankokarte kopiert. Ist das ein Sicherheitsproblem bei dem Konzept der Zugangskontrolle? Erläutern Sie Ihr Ergebnis!

Aufgabe 2:

  1. Es bricht jemand in den Zentralrechner ein und erhält Zugriff auf den geheimen Algorithmus. Zusätzlich kommt er in den Besitz einer Karte, deren Magnetstreifen er kopieren kann. Erklären Sie, warum das ein gravierendes Sicherheitsproblem ist.
  2. Schlagen Sie geeignete Änderungen am Sicherheitssystem vor, um in diesem Fall dem Biolabor Zeit zu verschaffen, die Lücke überhaupt erst zu entdecken. Sie können an jeder Stelle des Systems ansetzen und auch mehrere Möglichkeiten kombinieren. Begründen Sie Ihre Verbesserungsvorschläge.

Aufgabe 3:

  1. Bei einer bestimmten Charge an Mikrochips auf den Karten tritt ein Softwarefehler auf, der den Zutritt trotz korrekter Codeingabe verwehrt und die Karte einzieht. Der Hersteller deaktiviert als Sofortmaßnahme die Einheit auf den Lesegeräten, die den Mikrochip ausliest und behauptet, dass dies kein Problem sei. Nehmen Sie Stellung zu dieser Aussage.

Aufgabe 4:

  1. Nach Recherchen von Datenspezialisten stellt sich heraus, dass nicht nur ein Code nach Berechnung durch den Algorithmus zur korrekten Zeichenkette führt, sondern bis zu neun die gleiche Zeichenkette ergeben. Zusätzlich wird bekannt, dass man durch Abkleben des Chips die Anzahl der Versuche verdoppeln kann, weil das System des Magnetstreifens unabhängig von dem des Chips arbeitet. Der Datenspezialist schlägt Alarm – die Sicherheit des Systems sei dadurch massiv beeinträchtigt. Die Sicherheitsfirma wiegelt ab – das sei kein Problem. Nehmen sie kritisch Stellung zu beiden Positionen!

Sie dürfen für die Lösung der Aufgaben das Internet frei verwenden, so lange Sie die verwendeten Quellen angeben. Je sauberer Ihre Vorschläge dokumentiert und begründet sind, desto besser. Achten Sie zusätzlich darauf, Ihre Antworten auf die jeweilige Frage zuzuschneiden.

EDV und das ewige Leid…

Irgendwie sind die Wissenden in der EDV ganz schnell die als arrogant Verrufenen. Wenn man jetzt noch einen draufsetzen wollte, könnte man sagen, dass Kompetenz von unten immer wie Arroganz ausschaut, aber so richtig weiter kommt man damit auch nicht.

Mir ist neulich zufällig eine Ausgabe von „Login“ (LOG IN Verlag) in die Hände gefallen. Darin geht es um informatische Bildung und Computer in der Schule. Nun sind Informatiker in der Regel nicht die besten Freunde von Administratoren und Möchtegernprogrammieren wie mir, aber es findet sich ein interessanter Ansatz zur Vermittlung von ITG-Wissen in einem Artikel von Siglinde Voß.

Darin entwickelt die Autorin die Idee, den objektorientierten Ansatz vieler moderner Programmiersprachen auf die Vermittlung von Kenntnissen in Anwendungssoftware zu übertragen. Das macht insofern Sinn, als dass ebendieser Anwendungsoftware unter der Haube ein objektorientierter Ansatz zugrunde liegt.

Eigentlich ist das auch gar nicht so schwer: Es gibt z.B. in jeder Textverarbeitung verschiedene Klassen. Ein Zeichen ist ebenso eine Klasse wie ein Absatz oder eine Seite. Ein konkretes Zeichen wäre dann ein Objekt mit bestimmten Eigenschaften (Farbe, Schriftgröße, Schriftschnitt usw.). Mit der rechten Maustaste kann ich über das Kontextmenu auf diese Eigenschaften zugreifen und sie verändern.

Früher musste ich sagen: Um Schrift kursiv zu setzen, markierst du sie mit der Maus und klickst dann auf „i“. Mit einem objektorientierten Ansatz kann ich sagen: Die veränderst bitte die Eigenschaft „Schriftschnitt“ des Zeichens x. Die SuS müssen dazu lediglich lernen, wie man auf die Eigenschaften eines Objektes zugreift und das funktioniert z.B. in OpenOffice immer gleich. So kann ich Klasse um Klasse einführen und die Eigenschaften ihrer Objekte entdecken lassen – kein „Zuerst klickst du auf… und dann…“ mehr – nette Vorstellung. Lässt sich gut mit Moodle kombinieren.

1 2