Behandelter Stoff
Vorlesung
Datum | Kapitel | Inhalt |
---|---|---|
23.10.2013 | Funktionale Programmierung 10 | Haskell: Quicksort, Listen, Filter, Cons-Operator |
25.10.2013 | Funktionale Programmierung 11 | Haskell: filter, map, iter, foldr, foldl, Currying, Extensionalitätsprinzip, Kombinatoren (Summe, Produkt), flatten, cons, zip |
30.10.2013 | Funktionale Programmierung 12 | Haskell: zipWith, short circuit evaluation, foldl, foldr, Unendliche Listen, Typen, Polymorphie |
06.11.2013 | Backtracking, Algebraische und rekursive Datentypen, map for trees, Typklassen | |
08.11.2013 | Typklassen, Monaden | |
13.11.2013 | Sichtbarkeitsbereich $\subseteq$ Gültigkeitsbereich; $\alpha$ / $\eta$-Äqivalenz, Redex; Funktion, die sich als eigenes Argument nimmt; $\lambda$-Klakül ist Turing-Mächtig | |
29.11.2013 | Logische Programmierung | Prolog |
10.01.2014 | Scala | Kein `;`, weniger verbose als Java, ... |
15.01.2014 | Scala | Concurrency in Scala: Actors, react; MPI, OpenMP |
22.01.2014 | - | X10: async, val, var |
24.01.2014 | - | C (volatile) |
Übungsblätter
Übungsblatt | Inhalt |
---|---|
ÜB 0: Haskell | Haskell installieren (siehe UbuntuUsers), Maximum dreier Zahlen berechnen |
ÜB 1: Rekursive Funktionen in Haskell | Potenzen, Primzahlen, Sortieren |
Tutorium
16.12.2013
let f = \ x.plus x x in f (f c_2) ^= (\ f. f (f c_2)) (\x. plus x x)
let
wird wegen dem Typsystem benötigt (let
ist polymorph,
\(\lambda\)-Term nicht).
let f = \x.1 in (f 7) + (f["a"]) ^= (\ f. ) (\ x. 1)
f: \alpha_5 -> int
f: \forall \alpha_5. \alpha_5 \rightarrow int
Material
- Inoffizielles Skript in A5 (LaTeX-Quellen): Wer das gerne für ca. 10 Euro in SW gedruckt mit Ringbindung hätte, soll mir eine E-Mail schreiben
- Vorlesungswebsite und Übungsblätter
- Ein Anki-Deck (NICHT meines!)
- Stackexchange:
- What is the meaning of M ⊨ φ?
- How can I compile the x10 example?
- What is the difference of 'async' before or after 'for' in X10?
- How do I generate and print Fibonacci numbers in X10?
- What is the difference between ifne and ifnonnull?
- Haskell list comprehension - list of all list splits
- How can I ask questions on a family tree in Prolog?
Klausurvorbereitung
- H-99: Ninety-Nine Haskell Problems
- P-99: Ninety-Nine Prolog Problems
- Scala
- S-99: Ninety-Nine Scala Problems
- Learning Scala by Joel Abrahamsson
Übungsbetrieb
- Wo sind die Übungsblätter: Link
- Abgabeform: auf Papier und via E-Mail
- Abgabe: Datum steht auf den Übungsblättern; Ort: Kasten im Keller des Infobaus
- Rücknahme: im Tutorium
- Turnus: wöchentlich, erscheint am Donnerstag.
- Übungsschein verpflichtend: Es gibt keinen Übungsschein.
- Bonus durch Übungsschein: Es gibt keinen Klausurbonus.
Termine und Klausurablauf
Siehe Klausurtermine-Seite für zukünftige Termine (z.B. Programmierparadigmen am 23.09.2014)
Datum: Donnerstag, den 10. April 2014 von 14:00 bis 16:00 Uhr (Quelle)
Ort: Audimax (Quelle)
Punkte: 120
Punkteverteilung: Vermutlich etwas in dieser Richtung:
- 25 Punkte: Haskell / Scala
- 20 Punkte: Logische Programmierung
- 25 Punkte: Typinferenz / Lambda-Kalkül
- 10 Punkte: C
- 10 Punkte: MPI
- 10 Punkte: X10
- 20 Punkte: Compilerbau
Bestehensgrenze: ?
Übungsschein: Gibt es nicht.
Bonuspunkte: Gibt es nicht.
Ergebnisse: stehen seit dem 17.04.2014 fest
Einsicht: am Mittwoch den 30.04.2014, 14:00 Uhr - 16:00 in Raum 010, Informatik Gebäude (Geb. 50.34) (bekanntgegeben über Vorlesungswebsite am 17.04.2014)
Erlaubte Hilfsmittel: (siehe Website)
Erlaubte Hilfsmittel für die Klausur sind alle Quellen in Papierform, insbesondere
- Vorlesungsfolien der Veranstaltung Programmierparadigmen
- Übungszettel und Beispiellösungen der Veranstaltung Programmierparadigmen
- Bücher, Ausdrucke und beliebige eigenen Aufzeichnungen
Ergebnisse
Stehen seit dem 17.04.2014 fest.
Kritik
In der Vorlesung werden zu viele Inhalte behandelt. Eine Folge ist, dass nichts richtig behandelt wird. Außerdem erscheinen mir einige der Inhalte weder in der Wissenschaft noch in der Wirtschaft relevant zu sein (Prolog, X10). Ich würde vorschlagen diese Inhalte zu entfernen. Wenn man der Meinung ist, dass man Parallelität mehr behandeln sollte, dann wäre vermutlich CUDA deutlich wichtiger als X10.