Introduction

This course is intended for advanced students in computer science . Please make sure that you meet the requirements with respect to design patterns, software development experience etc.

This Term

We are doing something special in this terms generative computing class. The focus is NOT on generation at all. Instead - leveraging the fact that we have Claus Gittinger with us - we will focus on interpretative systems like smalltalk, lisp etc. To get a better understanding of those technologies we will use a concept based approach as explained in "Concepts, Models and Technologies of Computer Programs" by Peter van Roy and Saif Haridi or in the famous book by Abelson/Sussman: Structure and Interpretation of Computer Programs.

What does this mean for participants? We will go much deeper than design papers. We will go to the core of language desing and implementation. Lisp, Prolog, Smalltalk etc. will only be used to understand the concepts behind. In a future class we might want to use the kernal language approach as it is done in OZ/Mozart.

Participants will need to understand (or acquire) a good understanding of compilers, interpreters, functional language features like higher order functions, lambdas etc. We will take a new look at concurrency (declarative, message passing). Constraint programming will be another core topic as logic programming becomes more and more important for todays complex applications (think about configuration of systems and products)

The class is highly experimental and we will draw a lot from Claus Gittingers experience in designing and implementing core language concepts.

Resources

here is a list of resources used in the class. Feel free to add to it by sending me mail.

  1. Concept based education. Talk by Peter van Roy.

  2. Abelson/Sussmann, Structure and Interpretation of Computer Programs (the famous SICP book)

  3. Peter van Roy, Saif Haridi, Concepts, Models and Technologies of Computer Programs

  4. Functional Programming with Java

  5. Language Design Discussions: Portal for Language Design

  6. Introduction to Lambda Calculus with Lambda Calculus interpreter

  7. Jonathan Bartlett, Higher Order Functions

  8. A very good intro to functional programming

  9. IBM paper on programming in Haskell