Implementierung von Programmiersprachen (Praktikum)

Ziel dieses Praktikums ist die Implementierung eines Teils einer Programmiersprache. Dazu erarbeiten wir in der ersten Semesterhälfte verschiedene Aspekte der Implementierung einer Programmiersprache (z.B. syntaktische Prüfung, Typprüfung, Zwischenstufen (ANF, SSA, CPS, …), Kontrollfluss, …) mit Hilfe von Programmieraufgaben. Jeder Teilnehmer muss mindestens einmal die Lösung einer Hausaufgabe vorstellen. Danach wählen die Studierenden in Absprache mit dem Veranstalter einen Teil einer existierenden oder selbst entworfenen Programmiersprache aus und implementieren diesen Teil in der zweiten Semesterhälfte.

Die Programmieraufgaben in der ersten Semesterhälfte müssen mit der Programmiersprache Haskell bearbeitet werden. Für das abschließende Projekt kann auch eine andere Programmiersprache gewählt werden. Wir empfehlen Programmiersprachen mit Unterstützung für algebraische Datentypen (z.B. Scala, Haskell, Racket, …).

  • Eintrag im Vorlesungsverzeichnis: Alma

Termin

Wir treffen uns wöchentlich Donnerstags um 14:00 in A104 auf Sand.

Hausaufgaben

Hausaufgabe 00: https://classroom.github.com/a/QBc_hwoa

Hausaufgabe 01: https://classroom.github.com/a/NpOvEnUM

Hausaufgabe 02: https://classroom.github.com/a/pqxo7U_I

Hausaufgabe 03: https://classroom.github.com/a/rgpUmcGt

Hausaufgabe 04: https://classroom.github.com/a/vYzYrQOd

Hausaufgabe 05: https://classroom.github.com/a/jrAoFVMH

Hausaufgabe 06: https://classroom.github.com/a/FJ55RMem

Abschlussprojekt

Ihr solltet eine Einladung zu einem Repository für euer gewähltes Abschlussprojekt erhalten haben. Bei irgendwelchen Fragen (inhaltlich oder organisatorisch) schreibt eine Email. Abgabe ist bis 30.09.2022 AoE.

Anmeldung

Die Anmeldung erfolgt per Email an Philipp Schuster
Researcher
Philipp Schuster
bis Freitag, den 29.04.2022 Ende des Tages.

Die Email muss enthalten: Email, Name, Matrikelnummer, Studiengang, angestrebter Abschluss.

Vorbesprechung

Ein erstes Treffen findet am Donnerstag den 21.04.2022 um 18:00 in A104 auf Sand statt.

Dozenten

Bewertung

  • Programmieraufgaben in der ersten Semesterhälfte 50%
  • Projekt in der zweiten Semesterhälfte 50%

Lernziele

  • Studierende können eine einfache Programmiersprache selbstständig implementieren.

  • Studierende verstehen wie die einzelnen Komponenten der Implementierung einer Programmiersprache zusammenwirken.

  • Studierende verknüpfen Ihr Wissen über die Auswahl und Verwendung von Programmiersprachen mit Kenntnissen über die Implementierung von Programmiersprachen.

  • Studierende setzen Methoden der Softwaretechnik (Testen, Benchmarking, Versionskontrolle, Code Review, …) ein.

Voraussetzungen

Ein vorheriger oder paralleler Besuch der Vorlesung “Programmiersprachen 1” ist hilfreich aber nicht notwendig.