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
    • group A - Wed 13.15
    • group B - Wed 15.15
  • Exercise corrections
    • open to all: Thu 8.00
  • Office hours:
    • JP: Thu: 13.15
    • Nik: Mon. 13.15
    • Dan: Tue: 13.15 (moved on 28/1 and 4/2 to Friday 13.15)


Week Starts Lecture 1 Lecture 2 Exercises TAs
1 0119 No lecture Intro EX 1 Dan
2 0127 IP 1 IP 2 EX 2 ?
3 0202 OO No lecture (∗) No exercises (∗)  
4 0209 FP 1 FP 2 EX 3 ?
5 0216 FP 3 CP 1 EX 4 ?
6 0222 CP 2 LP 1 EX 5 ?
7 0302 LP 2 Review 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
Review Correction of some old exam
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 ?

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.


  • 2 groups (go to only 1 session).
  • Find out which is your group by using this Haskell program, unless this clashes with another course. See 2.2 for times.
  • 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.

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

For an overview of the process, see here.

6.1 Designated representatives:

Name email (at student.chalmers.se)

6.2 Evaluation Meeting 1

Only Erik was present at the meeting.

6.3 Evaluation Meeting 2

Niklas and Erik were present at the meeting.


  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.

      • Show the final step in the closure-conv + cps style (gotos + stack)
        • Move laziness to the next lecture.
      • Clarify in the schedule which parts of the lecture notes are relevant.
  2. Study climate (communication, level of workload, tutorials)
    • 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.
  3. Problematic course items; can resources be used better?
    • Not so easy to find which part of the lecture notes correspond to the lectures
  4. Course-specific questions in questionnaire; other material for final meeting?

Author: Jean-Philippe Bernardy

Created: 2014-12-19 fre 11:15

Emacs 24.3.1 (Org mode 8.2.7b)