Deskriptive Programmierung, Sommersemester 2014

Organisatorisches:

Die drei wöchentlichen Termine (zweimal Vorlesung, einmal Übung) sind:

jeweils in der Römerstraße.

Die Veranstaltung im eCampus-System.

Inhaltliche Zusammenfassung:

Die Vorlesung führt deskriptive Programmierung (oder, auch gängige Bezeichnung: deklarative Programmierung) an Hand der funktionalen Programmiersprache Haskell und der logischen Programmiersprache Prolog ein. Ziel solcher Programmiersprachen ist es, Problembeschreibung und -lösung in den Vordergrund zu stellen, statt Überlegungen zu Operationen der ausführenden Maschine. Dies bedeutet Programmieren auf einem abstrakteren Niveau, insbesondere unter Anleihen in Algebra und Logik. Viele Problemstellungen können auf diese Weise sehr viel direkter modelliert werden als in "herkömmlichen" Sprachen, und im Idealfall stellt eine solche Modellierung/Spezifikation bereits ein ausführbares Programm dar. Der Hauptfokus der Vorlesung liegt aktuell auf funktionalem Programmieren mit Haskell. Haskell hält sich streng an den mathematischen Funktionsbegriff (insbesondere Seiteneffektfreiheit), bietet mächtige Abstraktionsmechanismen auf Funktions- und Typebene, und erlaubt Korrektheitsbeweise und effizienzverbessernde Programmtransformationen durch gleichungsbasiertes Schließen. Die Vorlesung führt Haskell ohne Annahme von Vorkenntnissen in funktionaler Programmierung ein und führt von einfachen Programmen zu allgemeinen Konstruktionsprinzipien, Sprachmechanismen zur flexiblen Wiederverwendung von Code, und Ansätzen zur Analyse und Transformation von Programmen. Durchgehend enthalten die Übungen einen großen Anteil Programmieraufgaben (in Einzelarbeit). Ein kleinerer Teil der Vorlesung widmet sich logischem Programmieren mit Prolog, wiederum mit Einführung von Grund auf, bis zu einfachen Programmen, den wichtigsten Sprachfeatures, und Behandlung des Operationalisierungsprinzips und der entsprechenden logischen Interpretation.

Voraussetzungen:

Die Lehrveranstaltung richtet sich als Wahlpflichtvorlesung in erster Linie an Bachelor-Studierende der Informatik. Regelmäßig nehmen auch Studierende der Mathematik teil (z.B. im Sommersemester 2013: von 35 Teilnehmenden, 12 Studierende mit Hauptfach Mathematik). Vorausgesetzt werden die Beherrschung des Programmierens in einer beliebigen Programmiersprache sowie mathematische und logische Grundlagen wie etwa in der Lehrveranstaltung Logik und diskrete Strukturen (insbesondere Kapitel 2 und 5 und der allgemeine Teil von Abschnitt 4.3) vermittelt. Eine technische Voraussetzung ist, dass zur Teilnahme an der Lehrveranstaltung eine globale Uni-ID vorliegen muss (also ein HRZ-Account ...@uni-bonn.de, nicht nur ein Informatik-Account ...@informatik.uni-bonn.de).

Studentische Sicht auf die Lehrveranstaltung:

Durch die Fachschaft durchgeführte Lehrevaluationen:

Kann man funktionale Programmierung denn auch in der "echten Welt" einsetzen?

Ja, absolut, siehe zum Beispiel Commercial Users of Functional Programming.

Gibt es an der Uni Bonn weitere Lehrveranstaltungen zum funktionalen Programmieren?

Ja, als Fortsetzung denkbar sind eine Vorlesung Fortgeschrittene Funktionale Programmierung oder eine Projektgruppe Angewandte Funktionale Programmierung. Im Rahmen letzterer haben Studierende zum Beispiel die Webanwendung Schiffe versenken entwickelt.

Kann die Vorlesung Deskriptive Programmierung auch bereits im 2. Fachsemester belegt werden?

Ja, durchaus. Die Vorlesung gehört zum Wahlpflichtbereich, kann "jederzeit" belegt werden. Im Durchgang Sommersemester 2013 befanden sich 8 der 15 Bachelor-Informatik-Studierenden, welche die Vorlesung erfolgreich abgeschlossen haben, im ersten Studienjahr.

Einige Lehrbücher:

Online-Ressourcen:

Software:

Weiterführendes Material: