PL: Programming Languages


Course:21048 (Spring Semester 2016)
Lecturer: Oscar Nierstrasz
Staff: Boris Spasojević, Jan Kurš
Lectures: Friday 10h15 - 12h00
Exercises: Friday 12h00 - 13h00
Place: IWI 003, Engehaldestrasse 8
Start: 2016-02-26
Exam: 2016-06-03
Repetition:Spring 2018


Programming languages are the means by which we instruct a computer to perform tasks for us. We use different programming languages to accomplish different tasks, but what really are the differences between various languages?

In this course we adopt the viewpoint that programming is modeling, so different programming languages offer us different ways to model our applications. We will examine a number of different paradigms for programming, and in each case look at one or more concrete examples of programming languages that support that paradigm. Specifically we will look at languages like Postscript, Haskell, Prolog, JavaScript and EToys. We will also take a brief look at the semantics of programming languages, and we will see how semantic descriptions can be made directly executable to obtain a rapid prototype of a language.

Learning Outcomes

On successful completion of this course, you will be able to:

  • distinguish the key programming paradigms and know how to apply them
  • know how to program a stack machine
  • understand different forms of polymorphism
  • exercise basic skills in functional programming
  • understand how the lambda calculus offers a basic semantic foundation for programming
  • understand the role of static typing in object-oriented programming
  • exercise basic skills in logic programming


The final grade in the course will be based 20% on exercises and 80% on the final exam.

Schedule 2014

1 21-Feb-14 Introduction Assignment1
2 28-Feb-14 Stack-based Programming Assignment2
3 07-Mar-14 Functional Programming Assignment3
4 14-Mar-14 Types and Polymorphism Assignment4
5 21-Mar-14 Lambda Calculus Assignment5
6 28-Mar-14 Fixed PointsAssignment6
7 04-Apr-14 Programming Language Semantics Assignment7
8 11-Apr-14 Objects and Types Assignment8 Ex2sourceCode
- 18-Apr-14 Good Friday
- 25-Apr-14 Easter vacation
9 02-May-14 Objects and Prototypes Assignment9 PoorPlatypus
10 09-May-14 Logic Programming Assignment10
11 16-May-14 Applications of Logic Programming Assignment11
12 23-May-14 Visual Programming Assignment12
13 30-May-14 Final Exam
Last changed by oscar on 8 June 2015