Konzepte der Programmierung

Dozent

Prof. Dr. Marc Scholl

Termine (Vorlesung)

Di 13:30 - 15:00 A 701
Do 13:30 - 15:00 R 513

Inhalt

Das Modul Informatik 2 besteht aus der Vorlesung "Konzepte der Informatik" und dm Programmierkurs 2.

Kern des Moduls ist eine Einführung in deklarative und logische Programmierparadigmen. Im Unterschied zur imperativen Programmierung wird dabei durch den Programmierer nur vorgegeben,was berechnet werden soll, aber nicht wie genau die Berechnung durchgeführt wird.

Die erste Hälfte der Vorlesung wird sich mit Haskell beschäftigen. Haskell ist ein Beispiel für eine reine funktionale Programmiersprache, die ohne Seiteneffekte (wie etwa Variablenzuweisungen) auskommt. In der zweiten Hälfte wird Prolog als Beispiel einer logischen Programmiersprache behandelt.

Vorlesungsbegleitend gibt der "Programmierkurs 2" eine praktische Einführung in diese beiden Programmiersprachen. Da Vorlesung und Programmierkurs inhaltlich eng verzahnt sind, werden die Übungen zu beiden Veranstaltungen zusammengelegt.

Weitere Details zum Inhalt der Vorlesung im LSF und auf der Webseite zur Vorlesung.


Episoden

2014/04/22 (Di) - Einführung und Überblick, Imperativ vs. deklarativ, Erste Beobachtungen

2014/04/24 (Do) - Generell zu Programmiersprachen, "Hello World" verschiedener Programmiersprachen

2014/04/29 (Di) - Programmieren (nur) mit Funktionen, Funkt. vs Imp. Programmierung, Ausfuehrung funktionaler Programme

2014/05/01 (Do) - keine Aufzeichnung (Tag der Arbeit)

2014/05/06 (Di) - Lambda-Notation, Strikte vs. nicht-strikte Auswertung, Lambda-Kalkuel

2014/05/08 (Do) - Operationale Semantik des λ-Kalküls, Referentielle Transparenz

2014/05/13 (Di) - Referenzielle Transparenz, Interaktion komplexer Typen, Listen

2014/05/15 (Do) - Tupel, Funktionsdefinitionen, Pattern Matching, Guards

2014/05/20 (Di) - where, Listenverarbeitung, Haskell standard prelude - Zusammenfassung, fold

2014/05/22 (Do) - Fold, Effizienz, Induktion über Listen, Programm-Synthese, List Comprehensions

2014/05/27 (Di) - List Comprehensions, Operationale Semantik für list comprehensions, Abbildung von list comprehensions auf den Haskell-Kern

2014/05/29 (Do) - keine Aufzeichnung (Christi Himmelfahrt)

2014/06/03 (Di) - Arbeiten mit Aufzählungstypen, Rekursive algebraische Typen, Bäume, Linkester Knoten eines Binärbaumes

inf-12070-20141_2014-06-05_012014/06/05 (Do) - Rekursive algebraische Typen, Typklassen und Overloading

2014/06/10 (Di) - Typklassen, instance-Deklarationen für algebraische Datentypen, Die Typklasse Show

2014/06/12 (Do) - Typklassen und Overloading, Fallstudie: Regulaere Ausdruecke

2014/06/17 (Di) - Wortproblem, Ableitung regulärer Ausdrücke, Lazy Evaluation, Graph-Reduktion

2014/06/19 (Do) - keine Aufzeichnung (Fronleichnam)

2014/06/24 (Di) - Weak Head Normal Form, Beispiele für Lazy WHNF Reduction, Unendliche Listen, Typsysteme

2014/06/26 (Do) - Typinferenz

2014/07/01 (Di) - Substituierbarkeit, Ko- vs. Kontravarianz, Funktionstypen, Monadische Berechnungen

2014/07/03 (Do) - Monadische Berechnungen: Beispiel Stack, Transformationen, Bind

2014/07/08 (Di) - Bind, Die Monad Klasse, do - Notation, Monad Laws/Was ist eine Monade?

2014/07/10 (Do) - Zustand kapseln, Purely functional I/O, Concurrency

2014/07/15 (Di) - Transaktionsvariablen, Blocking, Semaphore, Zusammenfassung Funktionale Programmierung

2014/07/17 (Do) -  Fragestunde (keine Aufzeichnung)

2014/07/22 (Di) - Einblick in die Logische Programmierung

2014/07/24 (Do) - Fragestunde (keine Aufzeichnung)