HOME | ENGLISH | IMPRESSUM | KIT

PSE: Visualisierung von Typinferenz

Ein Projekt von „Praxis der Softwareentwicklung“ (PSE)

Aktuell

Erstes Treffen: Montag, den 16.11.2020, 10:00 Uhr

Einführung Typinferenz: Mittwoch, den 18.11.2020, 10:00 Uhr

Beide Treffen finden über Zoom statt. Den Link erhalten Sie per Mail.

Wichtige Termine

Termin Datum Ort
Erstes Treffen 16.11.2020, 10:00 Uhr online (Zoom)
Einführung Typinferenz 18.11.2020, 10:00 Uhr online (Zoom)

Visualisierung von Typinferenz

Worum geht es?

Der λ-Kalkül ist ein rein auf Termersetzung begründeter turingmächtiger Kalkül.
(Das bedeutet insbesondere, man kann darin Programme schreiben, die beliebige Dinge ausrechnen.)
Dieser Kalkül ist nicht nur von historischer Bedeutung, sondern bietet immer noch das theoretische Fundament für funktionale Programmiersprachen.
Der λ-Kalkül besitzt ein einfaches, aber mächtiges Typsystem. Dieses erlaubt auch Typinferenz: Für einen Term kann automatisiert der Typ dieses Terms berechnet werden, ohne dass der Benutzer Typen angeben muss.
Leider ist es erfahrungsgemäß schwierig, Studierenden den Typinferenz-Algorithmus klar zu machen. Das wollen wir ändern, und dazu sollt ihr nun ein Programm schreiben, das Leuten die Typinferenz näherbringt, indem es die Berechnungsschritte der Typinferenz in einem sogenannten Ableitungsbaum visualisiert.
Keine Angst, ihr seid da nicht auf euch allein gestellt, wir erklären euch das nötige Vorwissen (den Kalkül, wie die Typisierung funktioniert, den Typinferenz-Algorithmus, etc.).

Was muss das Programm können?

Da das Programm für die Lehre gedacht ist, muss es intuitiv zu bedienen sein.
Am besten wäre eine Webanwendung, da es nunmal sehr viel einfacher ist, Studierende dazu zu bringen, kurz einen Link im Browser anzuklicken, als eine Java-Applikation herunterzuladen.
(Jedoch gelten auch hier die üblichen Einschränkungen: Objektorientierter Entwurf, statisch typisierte Sprache!)
Das Programm muss in jedem Fall den Typinferenz-Algorithmus schrittweise durchführen können (mit Darstellung der Zwischenschritte), darüber hinaus sind wir offen für eure Ideen, wie man eine solche Entwicklungs-/Lernumgebung am besten gestaltet.
Hier eine Liste an Ideen, wie man dieses Grundgerüst erweitern könnte, um daraus eine sinnvolle Lernumgebung zu machen:

  • Zusätzliche Informationen für die einzelnen Schritte (welche Regel wurde verwendet, etc.).
  • Darstellen des finalen Typprüfungsbaums.
  • Vordefinierte Konstanten
  • Typinferenz-Beispiele mit Tutorial
  • (Sofern als Webanwendung umgesetzt) Permalinks, die zu bereits "vorausgefüllten" Sessions führen
  • LaTeX-Export

Bewertung

Die Benotung eures Systems richtet sich nach folgenden Kriterien:

  • Qualität aller abgegebenen Dokumente und Artefakte

  • Qualität der Kolloquien (10 Minuten Vortrag)

  • Qualität der Abschlusspräsentation

  • Erfüllung der minimalen Leistungsmerkmale (s.o.)

  • sinnvolle Erweiterungen über diese Merkmale hinaus

  • Robustheit des erstellten Programms

  • Teamarbeit (TSE)

Diese Liste hat keine Reihenfolge, die einer Gewichtung entspricht. Es gibt sicherlich weitere Punkte, die als selbstverständlich gelten und sich bei Nichterfüllen negativ auswirken (z.B. ist die Geschwindigkeit der implementierten Algorithmen sekundär, aber jedem sollte klar sein, dass das Ausführen eines Algorithmus-Schritts nicht 10 Tage dauern darf).

Weitere Pflichten

  • Anmeldung per Studienportal für PSE und TSE

  • Anwesenheit bei den wöchentlichen Treffen mit dem Betreuer

  • Team-internes Management (z.B. Phasenverantwortliche, Versionskontrolle)

  • Artefakte 1–2 Tage vor Kolloquium beim Betreuer

Wöchentliche Treffen und Kolloquien

Die wöchentlichen Treffen werden virtuell stattfinden. Die Kolloquien werden voraussichtlich in Präsenz stattfinden.

Dokumente

Dokument Datum
Tipps & Tricks 2020-10-20
Folien Projektvorstellung 2020-11-05
Folien Einführung Typinferenz 2020-11-18

Veranstalter

Wissenschaftliche Mitarbeiter
Dr. Jakob von Raumer
Ehemalige Mitarbeiter
M.Sc. Simon Bischof