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 9.00
  • Office hours:
    • JP: Mon: 13.15
    • Nik: Thu 15.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   Nik
5 0216 FP 3 CP 1 EX 4   Nik
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 themselves 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. (DONE)
      • (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.
    5. 2016
      • Labs/Mandatory exercises
  2. Study climate (communication, level of workload, tutorials)
    • Lecture notes are good and comprehensive
    • TA very helpful
    • Good constructive alignment (exam ~ course)
    • Workload is adequate. Adding extra material for labs is not necessary.
  3. Problematic course items; can resources be used better?
    • The information meeting (Programming paradigms/Concurrent programming) was biased, which may explain low attendance this year.
    • Paradigms course helps digital construction course.
    • The time slot 8.00-10.00 problematic from an attendance perspective
      • This time slot should be replaced by a mandatory lab.
    • It would be good to have a self-evaluation test to check if the requirements are met before taking the course.
    • It would be useful to add a refresher in Haskell as a 1st lecture

    Exercise sheet:

    • It would be nice to have an html in addition to a pdf
    • Could be good to have a separate file with just the solutions
  4. Course-specific questions in questionnaire; other material for final meeting?

Author: Jean-Philippe Bernardy

Created: 2015-03-19 tor 11:18

Emacs 24.3.1 (Org mode 8.2.7b)