Principles of Programming Languages

339.019 2KV Blaschek, Prähofer Do 15:30-17:00 Ort: HS 18 Start: 05.10.2017

This course covers a wide range of paradigms and concepts of pragramming languages, in particular those beyond Java. The concepts are presented in the context of their historical background, the design decisions behind them, and implementation issues in various programming languages. The students shall get to know a broader spectrum of programming languages, in order to see how specific languages influence not only programming techniques and style, but also in which way they affect how programmers think.


  1. Introduction (Blaschek)
    - Classification of Languages
    - Thinking Models
    - History of Languages
  2. Basic Concepts (Blaschek)
    - Data Types
    - Scopes, Modules and Separate Compilation
  3. Object-oriented Languages (Blaschek)
    - Fundamental Concepts and Mechanisms
    - Typed and Untyped Object-oriented Languages
    - Pure Object-oriented Languages
    - Blocks
    - Covariance and Contravariance
    - Genericity
    - Multiple Inheritance
    - Prototype-based Languages
  4. Functional Languages (Prähofer)
    - Foundations: Lambda Calculus
    - Concepts of Functional Programming Languages (Haskell)
    - Functional Programming in Java and C#
  5. Logical Languages (Prähofer)
    - Foundations
    - Unification
    - Prolog


The script (collected slides in PDF format) is available to registered students from the KUSSS pages for the course.
See Extended Infos (Erweiterte Infos) / Files (Dateien).


The exam takes place in written form at the end of the term.
For a positive grade, the exercises must be completed as well.


The exercises consist of two parts, one for each teacher. The subject of each part is a project that is to be completed during the course. The results must be presented to the teachers at the end of the term.



  • Sebesta, R.W.: Concepts of Programming Languages. 7th ed., Addison-Wesley 2006
  • Maclennan B.J.: Principles of Programming Languages. Oxford University Press, 1999
  • Henning, P.A., Vogelsang H. (Hrsg.): Handbuch Programmiersprachen. Hanser 2007
History Scheme and Common Lisp
  • Harold Abelson, Gerald Jay Sussman: Structure and Interpretation of Computer Programs. 2nd Edition, MIT Press, 1996
  • M. Eisenberg: Programming in Scheme. MIT Press, 1988
  • R. Kent Dybvig: The Scheme Programming Language. 3rd Edition, MIT Press, 2003
  • Patrick H. Winston und Berthold K. Horn: LISP. Addison-Wesley, 1989
  • Peter Norvig: Paradigms of Artificial Intelligence Programming: Case Studies in Common LISP. Morgan Kaufmann, 2001
  • Sonya Keene: Object-Oriented Programming in Common LISP: A Programmer's Guide to Clos. Addison-Wesley, 1989
  • Gregor Kiczales: The Art of the Meta-object Protocol. MIT Press, 1991
Functional Programming
  • Simon Thompson: Haskell: The Craft of Functional Programming. Second Edition, Addison-Wesley, 1999
  • Richard Bird: Introduction to Functional Programming using Haskell. 2nd edition, Prentice Hall Press, 1998
  • Graham Hutton: Programming in Haskell. Paperback: 200 pages, Cambridge University Press
  • Paul Hudak: The Haskell School of Expression: Learning Functional Programming through Multimedia. Cambridge University Press, New York, 2000
  • Bryan O'Sullivan, Don Stewart, and John Goerzen: Real World Haskell. O'Reilly Media, 2008.
  • Don Syme, Adam Granicz, Antonio Cisternino: Expert F#. Apress, Berkeley, 2007
  • William F. Clocksin and Christopher S. Mellish: Programming in Prolog, 4th Edition, Springer-Verlag, 2003.
Special Languages
  • Meyer, B.: Eiffel - The Language. Prentice Hall 1992
  • Barnes J.G.P.: Programming in Ada 95. Addison-Wesley 1998
  • Wheeler, D.A.: Ada 95 - The Lovelace Tutorial. Springer-Verlag 1997
  • Goldberg A., Robson D.: Smalltalk-80: The Language and Its Implementation, Addison-Wesley 1983
  • Cox B, Novobilski A.: Object-Oriented Programming: An Evolutionary Approach (describes Objective C). Addison-Wesley 1991
  • Stroustrup, B.: The C++ Programming Language. 3rd edition, Addison Wesley 2000
  • Strasser, T.: C++ - Programmieren mit Stil. dpunkt.verlag 2003
  • Hejlsberg, A., Wiltamuth, S., Golde, P.: The C# Programming Language. Addison-Wesley 2004
  • Mössenböck, H.: Softwareentwicklung mit C# 2.0. dpunkt.verlag 2006

Online Sources