SS 2005: Konzepte höherer Programmiersprachen


Termine

Vorlesung: Mi 16:00 - 17:30 H-C 6321
Do 14:15 - 15:45  H-C 3303
Erste Vorlesung  Mi 13. 04. 2005 
Übung: Do 16:00 - 17:30  H-C 3303
Erste Übung  Do 21. 04. 2005


Übungsblätter

Übung 1 PDF
Übung 2 PDF
Übung 3 PDF
Übung 4 PDF Quellcode
Übung 5 PDF
Übung 5 PDF (erweiterte Version)
Übung 6 PDF
Übung 7 PDF
Übung 8 PDF
Übung 9 PDF
Übung 10 PDF


Lösungen

Übung 1 PDF Quellcode
Übung 2 PDF Quellcode
Übung 3 PDF Quellcode
Übung 4 PDF Quellcode Typherleitungen für Aufgabe 2
Übung 5 PDF Quellcode
Übung 6 PDF Quellcode
Übung 7 PDF Quellcode
Übung 8 PDF Quellcode


Materialien aus der Vorlesung

Folien

Mi 13.04.2005  (Seiten 1-13)  PDF (57 K)
Mi 20.04.2005  (Seiten 14-28)  PDF (82 K)
Mi 27.04.2005  (Seiten 29-33)  PDF (48 K) (vorläufige Version)
Mi 04.05.2005  (Seiten 34-41)  PDF (52 K) (vorläufige Version)
Mi 11.05.2005  (Seiten 42-50)  PDF (57 K) (vorläufige Version)
Do 12.05.2005  Typherleitungen  1 2 3 4

Programmier-Sitzungen: Alle zusammen (255 K)

Mi 13.04.2005 (O'Caml)   Einfache Ausdrücke Einfache Deklarationen Einfache Funktionen
Do 14.04.2005 (O'Caml)   Einfache Rekursion Rationale Zahlen Höhere Funktionen Schnelles Potenzieren Teil 1
Do 21.04.2005 (O'Caml)   Schnelles Potenzieren Teil 2
Do 27.04.2005 (O'Caml)   Blockstruktur
Do 28.04.2005 (O'Caml)   Listen Bäume
Mi 04.05.2005 (Scheme)   Scheme Einführung
Mi 11.05.2005 (Scheme)   Scheme Fortsetzung
Mi 18.05.2005 (O'Caml)   Produkttypen Vereinigungstypen
Mi 25.05.2005 (O'Caml)   Exceptions
Mi 01.06.2005 (O'Caml)   Records Streams Transparente_und_opake_Typen
Mi 29.06.2005 (O'Caml)   Referenzen
Do 30.06.2005 (O'Caml)   Verkettete Listen Referenzen und Polymorphie Arrays Veränderliche_Records Strukturelle und physikalische Gleichheit
Mi 06.07.2005 (O'Caml)   Einfache Objekte
Do 07.07.2005 (O'Caml)   Subtyping
Mi 13.07.2005 (O'Caml)   Klassen
Do 14.07.2005 (O'Caml)   Objektorientierter Typechecker Binäre Methoden
Mi 20.07.2005 (O'Caml)   Funktionale Objekte mit move Graphik-Beispiel
Do 21.07.2005 (Java)   Figure.java Point.java Circle.java Rectangle.java Square.java Picture.java
  EqPoint.java EqColoredPoint.java MvPoint.java MvColoredPoint.java
  Array_Subtyping Tiefenregel?


Inhalt:

In der Vorlesung werden besprochen

    1. imperative Programmierung (Algol, Pascal, C) 
    2. objektorientierte Programmierung (Simula, Smalltalk, C++, Java, O'Caml)
    3. funktionale Programmierung (Lisp, Scheme, ML, O'Caml)
    4. logische Programmierung (Prolog)
    1. ungetypte (besser: dynamisch getypte) Sprachen (Lisp, Scheme, Smalltalk)
    2. einfach getypte Sprachen (Algol, Pascal, C)
    3. polymorph getypte Sprachen (Miranda, Haskell, ML, O'Caml, mit Einschränkung: C++)
    4. Typinferenz (ML, O'Caml)
    5. Subtyping (Java, O'Caml)
    6. Inklusions-Polymorphie (Java, O'Caml)
    1. Kontrollstrukturen (Iteration, Rekursion)
    2. Bindungsmechanismen (statische und dynamische Bindung, late binding)
    3. Parameterübergabe (call-by-value, call-by-name, call-by-reference)
    4. Datenstrukturen (Listen, records, arrays)
    5. Datenabstraktion (Module, Objekte, Klassen)
    6. exception handling


Literatur

Allgemein

  1. John Mitchell: Concepts in Programming Languages, Cambridge University Press, 2003
  2. Ravi Sethi: Programming Languages, Concepts & Constructs, 2nd Edition, Addison Wesley, 1997
  3. Bruce J. MacLennan: Principles of Programming Languages: Design, Evaluation and Implementation, Oxford University Press, 1999
  4. Herbert Klaeren: Skript zur Vorlesung "Konzepte von Programmiersprachen", Universität Tübingen, Entwurf 2004 http://www-pu.informatik.uni-tuebingen.de/users/klaeren/kvps/index.html

Zu einzelnen Programmiersprachen

  1. Robert Harper: Programming in Standard ML, Carnegie Mellon University, Working Draft 2005 http://www-2.cs.cmu.edu/~rwh/smlbook
  2. Lawrence C. Paulson: ML for the Working Programmer, Cambridge University Press, 1996
  3. Jeffrey D. Ullman: Elements of ML Programming, Prentice Hall, 1998
  4. R. Kent Dybvig, The Scheme Programming Language, 3rd edition, MIT Press, 2003, auch als html-Version
  5. R. Kent Dybvig, Chez Scheme User's Guide, gibt es wohl nur als html-Version
  6. Harold Abelson, Gerald J. Sussman, Julie Sussman: Structure and Interpretation of Computer Programs, MIT Press, 1996