Projekt: SQL & Web-IDE

Als "Nebenprodukt" meiner Promotion entwickle ich eine SQL- & Web-IDE für den Einsatz im Schulunterricht. Im Rahmen dieses Projekts vergebe ich an interessierte Studierende gerne Themen, die sich in den folgenden Modulen verwerten lassen würden. Beispiele für bereits angefertige Arbeiten finden sich auf der Seite des Projekts.

  • Anfertigung einer internen Bachelor- oder Master-Thesis. In diesem Fall erfolgt die Bearbeitung in Kooperation mit der CAU Kiel, die Erstbegutachtung wird durch Dr. Frank Huch vorgenommen.
  • In von mir angebotenen Seminaren werden immer wieder passende Themen vergeben. Sofern Sie mit einem für mich interessantes Thema aus dem Web-Umfeld auf mich zukommen nehme ich auch gerne Vorschläge entgegen.
  • Für Bachelor Medieninformatiker ist es möglich das Medien-Projekt zu absolvieren, Informatik-Master-Studierende können das Master-Projekt einbringen.

Benutzermanagement

Aktuell sieht die Webseite keinerlei Registrierung von Benutzern vor, stattdessen hat jedes erstellte Projekt gewissermaßen eine eigene Benutzerdatenbank. Dieser Umstand soll sich im Rahmen eines Projektes ändern. Dabei ist die eigentliche Registrierung und Verwaltung von Benutzern mehr eine technische Formalität und nicht besonders herausfordernd. Viel interessanter sind die besonderen Anforderungen, die sich aus dem Einsatz an Schulen ergeben:

  • Registrierte Benutzer fallen typischerweise in eine von drei Rollen: Schüler, Lehrer oder Administrator. Dabei ist ein Lehrer für mehrere Schüler zuständig und die Schüler organisieren sich ggfs. in Gruppen (gemäß dem Klassenverband).
  • Lehrer und Administratoren müssen Batch-Operationen vornehmen können. Darunter fällt insbesondere das Anlegen von Projekten für ganze Klassenverbände.

Umgebung: Ruby on Rails für das serverseitige Datenmodell und Angular mit Typescript für die Verwaltung im Frontend.

Visueller Drag & Drop Editor für Datenbanken

Aufbauend auf der Bachelor-Thesis von Marco Pawloski soll ein Datenbank-Editor mit Drag & Drop-Funktionalität entwickelt werden. Die visuelle Gestaltung und die Benutzerführung kann sich dabei gerne an etablierten Tools wie der MySQL-Workbench oder pgModeler orientieren. Allerdings müssen die speziellen Anforderungen der Zielgruppe (Schüler und deren Lehrer) explizit berücksichtigt werden.

Umgebung: TypeScript mit Angular, möglicherweise SVG oder canvas für die Konnektoren.

Kara-Umgebung

Die Welt von Kara
JavaScript-Variante von Kara

Kara ist ein Projekt der SwissEduc und kann zur Einführung in die Programmierung eingesetzt werden. Kara is ein Marienkäfer, der in einer einfachen Welt lebt. Er kann programmiert werden und so diverse Aufgaben erledigen, zum Beispiel Kleeblätter sammeln.

Schon heute ist Kara für eine Vielzahl von Programmiersprachen verfügbar (Java, JavaScript, Python, Ruby), im Rahmen dieses Projekts soll eine Integration in diese Entwicklungsumgebung vorgenommen werden. Dabei ist sowohl das aufsetzen auf eine existierende Programmiersprache (dann vermutlich JavaScript) die Implementierung einer eigenen "Kara-VM" mit entsprechender Programmiersprache denkbar. In beiden Fällen muss diese "neue" imperative Programmiersprache gestaltet und eingebettet werden.

Umgebung: TypeScript mit Angular

Web-Umgebung

Prototypischer Seiteneditor

Ein Prototyp der Entwicklungsumgebung hat Anwender schon in die Lage versetzt, direkt aus dem Webbrowser heraus eigene Webseiten zu entwickeln. Mit der Umstellung auf eine neue Art und Weise die Blocksprachen zu definieren, ist dieser Funktionsumfang zunächst wieder entfallen. Im Rahmen dieser Aufgabe soll eine Möglichgeit zum Bearbeiten und anschauen von Webseiten re-implementiert werden. Von dem mittlerweile abgeschalteten Prototyp existiert neben dem rechtsstehenden Screenshot noch ein Video, welches gerne zur Inspiration genutzt werden kann.

Die erstellten Webseiten sollen auf den SQL-Datenbestand eines Projekts zugreifen können und müssen dementsprechend dynamisch über eine Templatingsprache erzeugt werden. Inhaltlich ergeben sich bei dieser Aufgabe unter anderem die folgenden Fragestellungen:

  • Welche HTML-Elemente sind für Schüler relevant?
  • Welche Templatingsprache sollte verwendet werden?
  • Wie kann eine Seite die Datenquellen angeben, die zur Darstellung benötigt werden?
  • Wie können Formulardaten verarbeitet werden?

Umgebung: Ruby on Rails für das serverseitige rendern der Webseiten und Angular mit Typescript für den Blockeditor

Parser für Grammatiken und Blocksprachen

Programmiersprachen innerhalb der Entwicklungsumgebung werden als "Blocksprachen" bezeichnet und können von erfahrenen Anwendern neu angelegt oder modifiziert werden. Diese Flexibilität ermöglicht die Bereitstellung einer Programmiersprache auf unterschiedlichen Anforderungsniveaus: So können zum Beispiel Schüler zunächst die Grundzüge von SQL kennenlernen ohne sich mit komplexeren Details wie OUTER JOIN oder GROUP BY zu befassen.

Zum aktuellen Zeitpunkt existiert der Vorschlag eines Pretty-Printers um aus der internen JSON-Repräsentation eines Blocksprache eine einigermaßen lesbare Beschreibung zu erzeugen. Die bisherige Darstellung ist "nebenher" im Laufe eines Nachmittages entstanden und sicherlich nicht optimal, kann aber als Orientierungshilfe dienen.

Umgebung: TypeScript, Haskell (vermutlich mit Parsec oder Aeson) kompiliert zu JavaScript

Für angehende Informatik-Lehrkräfte: Planung von Unterrichtseinheiten

Angehende Informatik-Lehrkräfte sind herzlich dazu eingeladen den aktuellen Stand der Entwicklungsumgebung aus didaktischer Sicht zu evaluieren, über jegliches Feedback bin ich dabei sehr dankbar.