DAT121 - Organisation

Table of Contents

This document is generated from an org-mode file.

1 The teaching team

  • Jean-Philippe Bernardy
    • Course responsible & lecturer
    • Room: EDIT 5469
    • E-mail: bernardy (chalmers.se)
  • Nikita Frolov
    • Exercise tutor
    • Room: EDIT 5461
    • E-mail: frolov (chalmers.se)
  • Dan Rosén
    • Exercise tutor
    • Room: EDIT 5453
    • E-mail: danr (chalmers.se)

2 Schedule

2.2 :

  • Lecture 1 - Mon 10.00
  • Lecture 2 - Wed 10.00
  • Exercises (1)
    • Wed 13.15
  • Exercises (2)
    • Thu 8.00
  • Office hours:
    • JP: Mon: 13.15
    • Nik: Thu 13.15
    • Dan: Tue 11:00, room 5453


Week Starts Lecture 1 Lecture 2 Exercises (1) Exercises (2) TAs
1 0119 No lecture Intro EX 1 (No session) Dan
2 0127 IP 1 IP 2 EX 2   Nik
3 0202 OO No lecture (∗) No exercises (∗)    
4 0209 FP 1 FP 2 EX 3   ?
5 0216 FP 3 CP 1 EX 4   ?
6 0223 CP 2 LP 1 EX 5   ?
7 0302 LP 2 Ljunglöf EX 6   ?

(∗): Charm Days

See table below for detail of contents.

Abbr Contents
Intro Models of computations; types; abstraction
IP 1 Goto ↔ Loops, Inlining procedures, Procedures → Gotos, Pointers and passing by reference
IP 2 Recursion. Substitution model in the presence of recursion, Explicit stack
OO Inheritance, Interfaces, Notion of co/contra variance
FP 1 Algebraic Types (Pattern matching, Parametric types, Currification)
FP 2 HO Abstraction, Polymorphic functions, Translating away HOF (Inlining, Closures)
FP 3 Continuations and effects. Purity and laziness.
CP 1 Processes, channels, Resource-managing processes
CP 2 Explicit continuations
LP 1 Intro to LP; Unification
LP 2 Functions to Relations, Search as list of successes
Ljunglöf Peter Ljunglöf's Guestt lecture (∗∗)
EX 1 Exercises marked with @1 in All.pdf
EX 2 Exercises marked with @2 in All.pdf
EX 3 Exercises marked with @3 in All.pdf
EX 4 Exercises marked with @4 in All.pdf
EX 5 Exercises marked with @5 in All.pdf
EX 6 ?

(∗∗): Peter Ljunglöf will show how to write a natural language grammar in Prolog, which will give an automatic recursive-descent parser

Note: the contents of each exercise session is about the topics covered in the two previous lectures. Remember to re-fetch the All.pdf file each week: exercises may have been updated.

3 Organisation

3.1 Formal requirements

  • Pass the exam (written exam)
  • That's it!

3.2 Informal requirements and learning aids

  • Do the exercises
  • Participate in the exercises sessions: see below for details.
  • Attend the lectures
  • Prepare lectures by reading lecture notes and follow relevant links.

3.3 Lectures

  • The lecture notes can be accessed here here
  • You can also use the source if you fancy emacs org-mode.
  • I prefer to have interaction during the lectures, so feel free to interrupt me.


  1. Wednesday Session
    • You will be working on exercises during the session, with the help of the TAs.
      • To be able to follow what is going on, bring a printout of the questions.
      • It helps if you have prepared the exercises beforehand. (Remember to bring a written copy of your solution with you if you have prepared one.)
      • See the above table for which exercises you need to prepare for each session.
    • On thursday, a TA will go through (the most important) exercises seen during the week.
  2. Thursday Session
    • You will be working on a question in the size of an exam question
    • TA will grade your answer, so you will get an exam-style assessment before the exam
    • Grades will be collected for statistics

4 Reading material

  • Unfortunately, I do not know of a single textbook covering all the material in a suitable way. Therefore, the lecture notes are the "master" source for the course.
  • The exercises (pdf) are also part of the course material.
  • Extra reading for the braves:
    • Single most relevant textbook: probably
      • "Programming Languages – Application and Interpretation", Shriram Krishnamurthi.


    • but
      • uses different structure
      • uses scheme (LISP) syntax
      • is written with MS and PhD students in mind
    • Relevant parts
      • Part I (To understand the point of view of the author)
      • Shreds of part II
      • Parts III, IV, VI, VII
      • Part X (Ch. 24, 25)
      • Part XI
    • Other relevant books

5 Outline of the course

5.1 Brief exposition of each paradigm

5.2 (Some) Transformations between paradigms

  • Explanation of programming languages features by translation.

This is the focus of the course.

5.3 Learning outcomes

  1. Awareness of multiple paradigms

    First questions of the design phase: "How should I think about this problem? (Do I know a paradigm suitable to express the solution?)"

  2. Recognise "encoded" thoughts:
    • what is the natural paradigm
    • decode them

    From this point of view, this course teaches "design patterns"

  3. Encode thoughts expressed in a paradigm in another one
  4. The exam questions will be similar to exercises

    Note in particular that exercises are integral part of the course material.

6 Course evaluation

6.1 Volunteer course representatives:

Name email (student.chalmers.se) Affiliation
Johan Becker johbec Chalmers
Samuel Berger bergers Chalmers
Jean-Philippe Green jgreen Chalmers
Gregor Ulm gregor.ulm (gmail) GU

6.2 Evaluation Meeting 1

All representatives were present and have signalled them to the class.

6.3 Evaluation Meeting 2


  1. Changes in the course since last year (History).
    1. new in 2012
      • Moved from Master (served as a common ground in programming for students with various backgrounds – the course was given to many international students)
      • To Bachelor (most students had basic course in FP, OO, …); the focus of the course is now to explain the links between the paradigms, and explain new concepts by translation into known (old) concepts.
    2. new in 2013
      • Different style of exercise sessions (less interactive)
      • More course material produced
    3. new in 2014 (Plans)
      • Students will be informed earlier which exercises are relevant.
      • The solution for all questions/exercises to be found in the lecture notes
      • Publish the complete code for exercise answers
    4. TODO new in 2015 (plans)
      • Introduce the substitution model in the first lecture; when explaining

      abstraction and naming. (DONE)

      • Show the final step in the closure-conv + cps style (gotos + stack)
      • Move laziness to the next lecture.
      • (TODO) Clarify in the schedule which parts of the lecture notes are relevant.
      • What is the purpose of each exercise session. This wasn't very clear.
      • It should be made clear to everyone that the (wednesdays) exercise sessions are about working on exercises with the help of the TA.
  2. Study climate (communication, level of workload, tutorials)
  3. Problematic course items; can resources be used better?
  4. Course-specific questions in questionnaire; other material for final meeting?

Author: Jean-Philippe Bernardy

Created: 2015-01-28 ons 09:35

Emacs 24.3.1 (Org mode 8.2.7b)