Computer Science Department
Programming Methods Laboratory
Ecole Polytechnique Federale de Lausanne
Theorie des Langages /
Fondements de la Programmation
     summer semester 2000

Time Table


Goals of this course:
  • Better understanding of programming languages
    • Which concepts are essential?
    • Which are ephemeral?
    • How can fundamental concepts encode derived ones?
  • Better understanding of programming
    • Fundamental composition principles
    • Language as a means of abstraction
    • Interpreters and compilers
  • Better understanding of definitions of programming languages
    • Which things can/should be formalized
    • What techniques are available for formalization
  • Overall: Increased competence as a programmer, language implementor, library and language designer
The course is organized in three streams:
  • Theory: Syntax and Semantics of Programming Languages
  • Applications: Core languages which illustrate essential concepts: Funnel and Oz
  • Practice: Programming Examples, Interpreters

Time Table

WeekTheoryApplicationPractical Work
1 Deduction Systems, Lambda Calculus Functional Funnel Using Funnel
2 Lambda examples, Church encodings Combinators Combinators
3 Operational Equivalence, Lambda-V Algebras Lambda Interpreter
4 Join Calculus Join -> Funnel Lambda Interpreter
5 CPS-Transform, Bisimulation Variables and Objects Lambda Interpreter
6 Axiomatic Semantics Program Verification Exercises
7 Axiomatic Semantics Program Verification Exercises
8 Type Systems Synchronization Typechecker
9 Subtyping, Genericity Sequences, Iterators Typechecker
10 Type Inference Encoding Classes Encoding Classes
11 Introduction to Logic Programming Examples Exercises
12 Meta-Logic Programming Constraint Domains and Applications Exercises
13 Constraint Handling Rules Constraint Handling Rules Exercises
14 Concurrent Constraint Programming The Mozart Programming Environment OZ


Lectures: Tuesday 10:00-13:00, room IN010
Tutorials: Thursday 10:00-13:00, room INR319


Here are the final versions of the hand-outs for the last four weeks of the lecture:


Here are the slides to the tutorials on Thursdays: Exercises: Frameworks:


Related Links

LAMP homepage
Last modified: 25.06.2000, Matthias Zenger <>