Kontakt

Dr.-Ing. Dietrich Boles

Werkzeuge für die Programmierausbildung

Programmieren ist eine der Grundfertigkeiten, die jeder Informatikerin und 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 Programmerstellung und/oder 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. Zum Erstellen sogenannter "Hamster-Programme" werden aktuell eine Vielzahl von textuellen und visuellen Programmiersprachen bzw. -notationen unterstützt. 

Solist: 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, haben wir einen Generator für Miniwelten entwickelt. Aufbauend auf einer einfachen aber mächtigen Klassenbibliothek kann ein Lehrender 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 entwickelt haben, 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. 

AlexaBlockly

Alexa ist ein sprachgesteuerter, internetbasierter, intelligenter, persönlicher Assistent des Unternehmens Amazon. Sogenannte Skills erweitern die Grundfunktionalität von Alexa. Mit Hilfe von AlexaBlockly ist es möglich, auf einfache Art und Weise einfache Alexa Custom Skills zu entwickeln. Die Skills werden dabei per Drag and Drop mit Hilfe der block-basierten Programmierung erstellt. Spezielle Programmierkenntnisse in Java oder JavaScript sind nicht notwendig. Anders als normalerweise üblich ist die Vorgehensweise bei der Skill-Entwicklung dabei nicht Intent/Zustands-basiert sondern iterativ möglich.

Blockly-Prolog

Die logische oder logikorientierte Programmierung ist ein Programmierparadigma, das auf der mathematischen Logik beruht. Programme bestehen hier nicht aus einer Folge von Anweisungen, wie in der imperativen Programmierung, sondern aus einer Datenbasis, die aus Fakten und Regeln besteht. Benutzer von logischen Programmen können Anfragen an das System stellen. Dieses versucht dann auf der Grundlage der Datenbasis, die Anfrage zu beantworten. Haupteinsatzgebiet der logischen Programmierung ist die Künstliche Intelligenz. Die bekannteste logische Programmiersprache ist Prolog. Blockly-Prolog ist ein auf Google-Blockly aufsetzendes System, dass es ermöglicht, Prolog-Programme interaktiv mit Hilfe von grafischen Blöcken zu entwickeln. 

 

(Stand: 30.04.2021)