Im Hinblick auf das zentrale Abitur ist derKurs Informatik neu gestaltet worden. Große Änderungen betreffen den Einstieg und die Kapitel zu Cient-Serveranwendungen und zur Stufen zwischen Soft- und Harsware. Letzterer orientiert sich unter anderem an der Maschine TOY von Sedgewick, Princeton University und kann die von Segewick vorgestellten Programme ausführen. Er existiert in zwei Versionen: HeXToy für den GK, AssemblerToy für Fortgeschrittene, toy.rar. In einer einfachen Version steht HexToy als Applet hier zum Test zur Verfügung. Sämtliche Materialien und ein vollständig ausgearbeiteter Kurs werden veröffentlich und dürfen für nicht kommerzielle Zwecke im Unterricht enigesetzt werden.
Teile der Materialien haben ihren Platz vom Gymnasium Zitadelle zum Fachseminar Jülich gewechselt.
Die Adresse lautet: http://studsemjuel.nw.lo-net2.de/if/
Jülich, den 30.11.2007
Alfred Hermes
Gepackt oder als PDF
Index (Auswahl)
A: Abstrakt, ADT
,Aktienanalyse, Animation
(Ufo, n.l.), Automat,
Autostereogramme
B: Binärbaum , BlueJ-Turtle
C: Client
D: Datenstrukturen , Datenstrukturen
linar (Text, ZA NRW), Daumenkino
E: Ein/Ausgabe, Einführung,
Entwurfsmuster, Ereignisse
(Einführung)
F: Fragebaum
G: Gästebuch,
Genetische Algorithmen (MVC-Muster,
UML) , Graphen
H: Handlungsreisender
K: Komponentenbasierung, Konvexe
Hülle, Kryptografie
L: Labyrinth
M: Modellmaschine HeXToy , Modellrechner
Som, MouseListener, MVC
(Info, Uhr), MVC: selbst programmiert
N: Nebenläufigkeit (n.l.)
O: Objektinteraktion, OOP
P: Philosophenproblem (n.l.)
R: Rechenbaum, Rekursion,
Rekursiver Abstieg, Rucksackproblem (0/1), Rundreiseproblem
S: Server, Simulation
(Parkhaus, n.l.), SOM, Sortieren
,Stapelrechner, Suchbaum,
Syntaktische Analyse
T: Turtlegrafik
U: Uhr (n.l.)
V: v. Neumann-Rechner
Z: Zähler(n.l.), Zelluläre
Automaten
Informatik mit Java
Die Reihenfolge der Inhalte entspricht
nur bedingt der zeitlichen Abfolge im Unterricht. Man betrachte die Beispiele
als Sammlung von Programmierbeispielen. In meinem Unterrricht hat sich als Einstieg
eine Einführung in die objektorientierte Modellierung und Programmierung
mit Hilfe von BlueJ bewährt. Die Lernenden erfahren von Anfang an die Bedeutung
von Klassen und Objekten, von Methoden und Attributen und Kommunikationsmöglichkeiten
zwischen Objekten. Eine von mir eigens für BlueJ entwickelte Plottergrafik
(BlueJ-Turtle) dient der Visualisierung algorithmischer
Vorgänge. Ein Modellrechner
demonstriert, wie Basiselemente höherer Programmiersprachen auf eine v.Neumann.Maschine
abgebildet werden können. Neben dem Applet existiert
eine Applikation mit 13teiligem Lehrgang, die bei mir erfragt werden kann.
Die Java-Applets können nur mit Java fähigen Internetnavigatoren (wie z.B. Netscape, Mozilla,..) betrachtet werden.
Zu einer Reihe der Beispiele finden
Sie ausführliche Informationen in LogIn (Beispielsammlung). Bei der Auswahl öffnet sich ein
zweites Fenster, das Sie schließen sollten, um zu dieser Seite
zurückzukehren.
Die folgenden Beispiele sollen beim Einstieg in Java und in Themen der Informatik helfen.
Im Klettverlag ist ein Themenheft zu Java (ISBN 717745, Hermes/Schumacher, 1999) erschienen. Dort können Sie viele der Beispiele mit Erläuterungen nachlesen. Der Band führt in Java ein und dient als Nachschlagewerk. Er kann die Lernenden bei der Behandlung der Algorithmik, der Projektentwicklung und des objektorientierten Designs im Informatikunterricht begleiten. Das Buch enthält Aufgaben- und Projektideen zur Gestaltung des Informatikunterrichts.
Alfred Hermes
Demonstrationen zum Einstieg in die Ereignisorientierung
Hallo-Welt-Beispiele
Die Beispiele dieses Lehrgangs zeigen, wie Mausereignisse
(Klicken, die Maus bewegen oder die Maus bei gedrückter Taste
führen) durch die Abfrage der Mauszeigerpositionen ausgewertet
werden können. Unter anderem demonstriert die Serie eine einfache
Form des Ladens und Positionierens von Photos.
Bevorzugte Alternative (Von der Modellierung zur Programmierung mit BlueJ und der BlueJ-Turtlegrafik)
Einführung in die Objekt orientierte Modellierung mit
BlueJ (neu)
(nach: Barnes, Kölling; Objektorientierte Programmierung mit Java,
Kapitel 1 bis 3)
Klassen, Objekte, Methoden, Interaktion zwischen Objekten,
Einstieg in die Programmierung mit der Turtle-Grafik
Die "Turtle"- (Igel-) Grafik eignet sich zur Einführung von Bedingten Anweisungen, Schleifen, einfachen nebenläufigen Prozessen (timer), Auswertung von Mausereignissen(ab Vers. 6A, Jan. 2004) und Rekursion. Eine spezielle "BlueJ_Turtle" mit entsprechenden Möglichkeiten liegt vor (download: BlueJTurtle.zip).Autostereogramme (elementar), strukturierte Version(LogIn)
KryptographieAutostereogramme faszinieren durch die versteckte 3-D-Darstellung. Prinzipiell genügen zu ihrer Herstellung einfache Kontrollstrukturen und einige Methoden der Klasse Graphics. Sie könnnen aber auch mit der BlueJ-Turtle (ab Vers. 5A) erstellt werden. Man nutze die Methoden zum Auslesen von Pixelfarben, zum Zeichnen von Pixeln oder zum Kopieren von Pixeln. Anstatt Pixelfarben am Bildschirm auszulesen, kann die Kopie an einem Modell, wie z.B. einer Matrix von Farbwerten, erfolgen und unter Anwendung der MVC-Architektur dargestellt werden. Man beachte, dass Bildschirmkoordinaten und Matrixfelder vertauscht angesprochen werden.
Verschlüsselungsverfahren führen zum Thema Sicherheit in Datennetzen und bieten gute Übungsmöglichkeiten im Umgang mit Zeichenketten (String) und Dateien. Sie finden ein Beispiel einer monoalphabetischen Substitution und ein Programm zum RSA-Verfahren (mit Folienvorlagen zu RSA und Sicherheit).
Es wird eine flexible Maske für standardisierte Beispiele vorgestellt. Sie bietet bis zu drei Eingabefenster mit Beschriftung, ein Listenfeld als Ausgabe, zwei Schaltflächen mit überschreibbaren Funktionen und die Möglichkeit der Darstellung einer Überschrift. Die Maske ist erweiterbar.Sortieren
Behandelt werden die Verfahren durch Austauschen,
Vertauschen durch Einfügen, so wie die rekursiven Verfahren durch Mischen
und der Quicksort. Zur Umsetzung in BlueJ ersetze man JPanel durch JFrame und
übertrage die Größenbestimmung in die Rahmen. Die Steuerung
muß nicht mit Steuerelementen erfolgen, wenn in der BlueJ-Umgebung die
Methoden direkt aufgerufen werden. In diesem Fall benötigt man keinen nebenläufigen
Prozeß.
Die Verwendung der Reflection-Klasse ist als Zugabe gedacht! (download: BlueJ-Version) (Start
der BlueJ-Version als Applet)
Dieses Beispiel eines endlichen Automaten zur Überprüfung einer korrekten Zahlendarstellung implementiert den endlichen Automaten als nebenläufigen Prozess. Der Prozess verwendet statische Variablen, die in der Dokumentation zum Programm erläutert werden. Den nebenläufige Prozess können Sie auch leicht durch eine Prozedur ersetzen, wenn Sie die statischen Variablen durch globale ersetzen. Am Ende des ersten Informatikjahres dürfte dieses Thread-Beispiel den Lernenden zugemutet werden können, spätestens am Anfang des zweiten Jahres. Das Beispiel demonstriert den Aufbau der Präsentation eines Kleinprojektes, wie es von Schülerinnen und Schülern erwartet werden sollte.
Lineare Zelluläre Automaten (Reihung, LogIn)
Die Beispiele entstammen dem Buch von Stephen Wolfram: a new kind of science, 2001. Sie zeigen, wie mit einfachen Übergangsregeln komplexe Strukturen erzeugt werden können. Mathematischen Unendlichkeit muss simmuliert werden.
Folgen
Vererbung, Erweiterbarkeit, OOP
Die Zahlenfolge als abstrakte Klasse. Überschaubare Beispiele zeigen exemplarisch objektorientierten Entwurf und objektorientiertes Programmieren.
Syntaktische
Analyse und Berechnung
arithmetischer Ausdrücke
Ausdrücke werden nach dem Verfahren des
rekursiven
Abstiegs analysiert
Das Beispiel der Anzeige einer Uhrzeit führt in das Entwurfmuster MVC ein. Es handelt sich um einen Ansatz, die Komponenten eines Programms in möglichst viele selbständige Abschnitte zu zerlegen. "M" steht für "model", "V" für "view" (Ansicht) und "C" für "control" (Steuerung der Eingabe). Das Prinzip wird auch in den Beispiel "Konvexe Hülle" angewendet.
Genetische Algorithmen (MVC-Muster, UML) (2. oder 3. Jahr, Projektphase)
Gezeigt wird ein sehr vereinfachtes Modell eines genetischen Codes und eines Populationsmechanismus, der auf Kreuzung, Mutation und Angepasstheit an die Umwelt beruht. Ein Demonstrationsprogramm führt Kreuzung und Mutation vor. Als Anwendung des Modells wird ein Funktionsmaximum derart bestimmt, dass die Individuen (x-Werte) sich nach mehreren Generationswechseln um das absolute Maximum versammeln. Der Funktionswert wird mit der Überlebenschance eines Individuums assoziiert.Die Benachrichtigung der Ansicht erfolgt nach jedem Generationswechsel nach dem MVC-Muster. Die Zusammenhänge zwischen Population und Individen sind als Komposition (nach UML) entworfen.
Sie sollten im Unterricht auf die eingeschränkte Nutzung der Methoden suspend() und resume() hinweisen. Sie können aber auch im Einführungsbeispiel ganz auf die Aktionswächter und die fraglichen Methoden verzichten, die Zähler ohne die Möglichkeiten des Stoppens und Neustartens verwenden und auf Synchronisation später eingehen. Der Demonstration der Nebenläufigkeit der drei Prozesse tut dies keinen Abbruch.
Uhr
Eine Digitaluhr erscheint am Bildschrim. Es ist möglich, von zwei
Formaten eines auzuwählen. Während der Anzeige prüfen
Aktionswächter
eventuelle Mausaktivitäten. Die Uhr ist als Thread implementiert.
Daumenkino
Ein Animationsmotor liefert Bilder auf die Leinwand
und gaukelt Bewegung vor.
Ufo
Threads steuern "Lichtkugeln" am
Mitteleuropäischen
Herbsthimmel
Parkhaus
Nebenläufige Prozesse bei der Zuweisung von
Parkplätzen.
Simulation mit 10 Plätzen und zwei Einfahrten
Produzenten/Konsumenten-Modell
Aufgabenstellungen, wie die Suche aller Lösungen, der besten
Lösung
oder der Formulierung einer Abstraktion des Lösungsverfahrens
bieten
sich an.
Beispiele zur Optimierung von Tiefen- und Breitensuche werden
demnächst
hier vorgestellt (0/1-Rucksackproblem usw.).
Der Kellerspeicher ist in Java bereits integriert (Stack). Trotzdem ist es sinnvoll, diesen abstrakten Datentyp selbst zu implementieren. Der Stapelrechner ist ein Anwendungsbeispiel. Der Keller bzw. Stapel ist allgemein mit Interfacetechnik implementiert und läßt die Verwaltung beliebige Java-Objekte zu. Im Gegensatz zum Binärbaum handelt es sich hier - in Anlehnung an die von Java bereit gestellte Klasse Stack - nicht um einen funktionalen Ansatz, der allerdings leicht zu bewerkstelligen ist.
Das Beispiel zeigt, wie Punkte modellartig verwaltet werden können und demonstriert die entsprechende Sicht am Bildschirm. Der Ansatz orientiert sich am MVC-Muster (model view control). Das Beispiel verwendet Vererbung, Abstrakte Datentypen und das Prinzip der Erweiterung. Der Algorithmus zur Bestimmung der konvexen Hülle beruht auf dem sogenannten Einwicklungsverfahren. Das Beispiel ist offen für schnellere Lösungen (z.B. Graham-Scan). Das Programm läßt sich als Applikation Applikation aund auch als Applet abrufen.
Vorgeplante Beispiele können im Internet geladen und ausprobiert werden. Auch das Edieren und Ausprobieren eigener Programme ist möglich.
Ein Online-Kurs mit 13 Lektionen (vom linearen Programm bis zur Rekursion, von einfachen Daten bis zu Objekten)
Modellrechner SOM als Applikation samt Tutorial
Verzeichnis: modellrechner/som.jar
Der Modellrechner HeXToy nach Sedgewick/Wayne
Der Modellrechner HeXToy als Applet
Vorgeplante Beispiele können im Internet geladen und ausprobiert werden. Auch das Edieren und Ausprobieren eigener Programme ist möglich. Die Modellmaschine orientiert sich an Sedgewick/Wayne Princeton
Die Modellrechner als Applikationen für GK und LK