Informationssysteme

Werkzeuge für die Programmierausbildung

Programmieren ist eine der Grundfertigkeiten, die jeder Informatiker beherrschen sollte. Aber auch für die Allgemeinbildung kommt dem Programmieren eine nicht zu vernachlässigende Rolle zu, denn Programmieren trainiert Fähigkeiten, wie das Entwickeln von Problemlösungen oder das Ordnen von Gedanken. Im Rahmen dieses Projektes werden Werkzeuge entwickelt, die das Erlernen der Programmierung unterstützen. Kennzeichen aller dieser Werkzeuge ist eine Visualisierung der Ausführung der von den Programmieranfängern entwickelten Programme. Damit können die Programmieranfänger ihre Programme besser nachvollziehen und ihnen wird unmittelbar vor Augen geführt, welche Auswirkungen die eingesetzten Programmierkonzepte haben.

Hamster-Modell

Das Hamster-Modell ist ein spezielles didaktisches Modell zum spielerischen Erlernen der Programmierung. Programmieranfänger schreiben Programme, mit denen sie virtuelle Hamster durch eine virtuelle Landschaft steuern und gegebene Aufgaben lösen lassen. Zum Entwickeln, Ausführen und Testen der Programme dient der so genannte Hamster-Simulator, eine bewusst einfach gehaltene Programmentwicklungsumgebung. Der Hamster-Simulator unterstützt derzeit das Erlernen der imperativen, objektorientierten und parallelen Programmierung mit Java sowie der funktionalen Programmierung mit Scheme. Aktuell wird er um die logikbasierte Programmierung mit Prolog erweitert. Weitere Informationen finden sich unter www.java-hamster-modell.de.

Generator für Mini-Programmierwelten

Das Hamster-Modell gehört wie „Karel der Roboter“ oder „Kara der Marienkäfer“ zu den so genannten Mini-Programmierwelten oder kurz Miniwelten. Miniwelten zeichnen sich dadurch aus, dass sie versuchen, die Abstraktion und Komplexität der Programmierkonzepte zu reduzieren und ihr Erlernen dadurch zu unterstützen, dass die Ausführung von Programmen visualisiert wird. Programmieranfänger beginnen nicht mit der Berechnung mathematischer Formeln sondern müssen in einer jeweils zur Verfügung gestellten Programmentwicklungsumgebung Hamster, Marienkäfer oder Roboter mit einem reduzierten Befehlssatz durch virtuelle Welten steuern. Um den Einsatz von Miniwelten zum Erlernen der Programmierung abwechselungsreicher gestalten zu können, entwickeln wir einen Generator für Miniwelten. Aufbauend auf einer einfachen aber mächtigen Klassenbibliothek kann ein Lehrer innerhalb kurzer Zeit eine neue Miniwelt entwickeln, dann automatisch eine Programmentwicklungsumgebung für diese Miniwelt generieren lassen und diese seinen Schülern zur Verfügung stellen.

Threadnocchio

Bedingt durch moderne Multicore-Technologien wird der parallelen Programmierung, d.h. der Entwicklung nebenläufiger Anwendungen, bereits in naher Zukunft eine weitaus höhere Bedeutung zukommen als dies heutzutage der Fall ist. Problem ist, dass die parallele Programmierung und ihr Erlernen weitaus komplexer sind als die herkömmliche sequentielle Programmierung. Diesem Problem versuchen wir damit Rechnung zu tragen, dass wir mit Threadnocchio eine einfache Programmentwicklungsumgebung entwickeln, die das Erlernen der parallelen Programmierung mit Java-Threads durch spielerische und visualisierende Elemente unterstützt. In Threadnocchio kann der Programmierer auf der Grundlage einer zur Verfügung gestellten Klassenbibliothek parallele Programme schreiben und den Threads Ikons zuordnen. Die durch die Ikons visualisierten Threads agieren während der Ausführung des Programms wie selbstständige Marionetten („Pinocchios“) auf einer Bühne, wodurch sich die Ausführung der parallelen Programme sehr gut nachvollziehen lässt und die Auswirkungen von bspw. Kommunikations- und Sychronisationsmechanismen dem Programmierer unmittelbar vor Augen geführt werden. Weitere Informationen finden sich unter www.programmierkurs-java.de/threadnocchio.

Generator für Educational Programming Games

Eductional Programming Games (EPGs) sind Computerspiele, bei denen Programmierer Roboter, Fußballspieler oder Rennfahrer implementieren, die dann in einem speziellen Simulator gegeneinander Wettkämpfe austragen (Robocup, Robocode, …). Aufbauend auf Threadnocchio entwickeln wir ein Werkzeug für die Entwicklung neuer EPGs. Ein Programmierer kann aufbauend auf einer zur Verfügung gestellten Klassenbibliothek die Eigenschaften eines EPG implementieren und anschließend automatisch einen entsprechenden Simulator generieren lassen.

 

Mitarbeiter