Mittwoch, 15. Februar 2017

Review zum Kurs 01852 - Fortgeschrittene Konzepte funktionaler Programmierung

In meinem letzten Beitrag haben ich ein Review zu dem ersten Teil des Moduls 70883 Moduls, Vertiefung Software Engineering und Programmiersprachen C (WP, FP) veröffentlicht. Heute möchte ich auch ein Review zu dem zweiten Teil dieses Modul los werden. Wie aus dem Titel zu erkennen ist, geht es in diesem Beitrag um den Kurs 01852 - Fortgeschrittene Konzepte funktionaler Programmierung.

(Quelle: https://xkcd.com/1270/)


Kursbeschreibung

Der Kurs besteht aus 4 Kurseinheiten. Zu einer Kurseinheit gehören auch Einsendeaufgaben, welche keine Voraussetzung für die Teilnahme an der mündlichen Prüfung darstellen. Wenn man den Stoff auch wirklich verinnerlichen will, dann soll man sich mit den Aufgaben auseinandersetzen.
Die Programmiersprache mit der im Kurs gearbeitet wird heisst Standard ML. Im Laufe jeder Kurseinheit sind Übungsaufgaben vorhanden, die das Verständnis  zwischendurch überprüfen sollen.

  • Die erste Kurseinheit startet mit der Einführung in die Funktionale Programmierung. Dabei werden die Konzepte und Ideen der funktionalen Programmierung näher erläutert. Anschliessend bekommt man einen umfangreichen Überblick über die SML-Programmiersprache, und lernt die Syntax kennen. Des Weiteren werden die ersten Konzepte der funktionellen Programmierung erläutert. Man Lern "Pattern Matching", "currying" und Funktionen höhere Ordnung kennen.
  • In der Kurseinheit 2 geht es weiter mit den Konzepten der funktionaler Programmierung. Es werten Arten der Parameterübergabe und Auswertungsstrategien, sowie unendliche Datenstrukturen behandelt. Der zweite Teil der Kurseinheit behandelt die Verifikation und Programm-Transformation. Neben den Beweisverfahren, mit denen die Korrektheit  der Programme bewiesen werden kann, werden Transformationsverfahren vorgestellt, mit dem man ein Programm optimieren kann.
  • In Kurseinheit 3 wird das Lambda Kalkül sehr ausführlich erklärt. Das Lambda Kalkül stellt ein formales Funktionenmodell zur Beschreibung aller rekursiven Funktionen dar. Ausserdem wird das Thema der Typisierung und der Typinferenz behandelt. Dabei wird man einen Algorithmus, der für ein Programm den jeweils allgemeinsten Typ automatisch zu ermitteln vermag, vorgestellt.
  • In der letzten Kurseinheit 4 wird das Verständnis funktionaler Sprachen durch die Untersuchung verschiedener Implementierungsaspekte vertieft. Es wird ein Interpreter, einer speziellen Maschinenarchitektur und eines Compilers für diese beschrieben. Für Interpreter, Compiler, und Maschine wird auch die Realisierung in einer funktionalen Sprache beschrieben.

Fazit

Ich persönlich fand den Kurs sehr interessant und lehrreich. Funktionale Programmierung nimmt die letzten Jahre zu, so dass ich durch diesen Kurs ein besseres Verständnis der funktionalen Programmierung bekommen habe. Da es sich um eine andere Art Programmierung handelt, als die imperative oder die objektorientierte, fand ich es persönlich schwer mich auf die funktionale Programmierung umzustellen. Der Kurs war einerseits sehr theoretisch, andererseits wurde die Theorie mir vielen praktischen Übungen abgedeckt.

In den Newsgroups waren auch andere Studis aktiv, so dass ein gemeinsames Lernen recht gut funktioniert hat und die Fragen beantwortet wurden. Da habe ich bei anderen Kursen viele schlechtere Erfahrungen sammeln dürfen.

Für die Prüfungsvorbereitung habe ich die letzten Prüfungsprotokolle genutzt. Diese haben sehr gut die Fragen des Prüfers abgedeckt. Prof. Beierle hat ein Fragenkatalog mit Standardfragen, welche er gerne immer stellt. Wenn die Fragen nicht präzise genug beantwortet werden, hackt er nach. Im Grund geht es bei der Prüfung kurz und knackig auf die Fragen zu antworten. Die Antworten sollen dabei aber sehr präzise sein. Als Prüfen ist der

Sonstiges

Auf coursera habe ich einen sehr interessanten Kurs zum Thema Funktionale Programmierung mit Scala gefunden und plane diesen im Laufen dieses Jahres zu belegen und die Kenntnisse in der funktionalen Programmierung zu vertiefen. 

Kommentare:

  1. Müsstest du bei der FP Prüfung irgenwelche Beweise vorführen oder gab es Fragen der Art "Schreiben Sie eine Funktion, die ... macht"? Gibt es ein Protokoll zu deiner Prüfung?

    Grüße

    AntwortenLöschen
    Antworten
    1. Also Beweise musste ich nicht aufstellen, aber die unterschiedlichen Arten der Induktion erklären muss man drauf haben. Funktionen aufzuschreiben, muss man auch können. Bei mir waren es die Funktionen aus dem Skript.
      Ich hatte mir die Fragen zum FP in diesen Protokollen angeschaut, der Verlauf war der gleiche. Der Prof hat bei einigen Themen halt auch etwas genauer nach, wenn er mit der Antwort nicht ganz zufrieden ist
      http://www.fernuni-hagen.de/FACHSCHINF/1798/1798_1852_Steinmann.pdf
      Gruss

      Löschen