Introduction to Programming Language Theory and System Design

using the Timber language


The page describes the course given as a discussion group for PhD students at CSEE. For the course for students in M.Sc., Civilingenjör and Högskoleingenjör programs, click here.

Prerequisites

Some experience in programming. Acquaintance with at least one object-orienteed language.

Course Description

This course / discussion group is for PhD students at CSEE who are interested in programming language design and software system design. We are going to discuss such topics as different programming paradigms, type systems, object-orientation, designing for concurrency, model-based system design, component-based design, design of distributed and embedded systems. Different programming languages and modeling frameworks will be covered, but the assignments will involve programming and modeling in Timber, so this course also presents an opportunity for you to get insight in the current work of the Timber research group.

Course Plan

Course Schedule

One meeting a week (about 3 hrs long) starting week 14 and until the beginning of June. The exact dates can be determined taking into account the wishes of the participants.

1st meeting: Thursday, April 8, 13.00-16.00 in A2014.
2nd meeting: Friday, April 16, 13.00-16.00 in A2523.
3rd meeting: Thursday, April 22, 13.00-16.00 in A2523.
4th meeting: Wednesday, April 28, 14.00-17.00 in A2525.
5th meeting: Friday, May 7, 13.00-16.00 in A2523.
6th meeting: Wednesday, May 12, 9.00-12.00 in A1508.
7th meeting: Wednesday, May 19, 9.00-12.00 in A2523.
8th meeting: Friday, May 28, 13.00-16.00 in A2523.
9th meeting (review seminar): Thursday, June 10, 13.00-16.00 in A2523.

Slides

For each part, two PDF files are provided: for viewing (1 slide per page) and for printing (4 slides per page, no background)

  1. Programming languages (April 8)
  2. Programming languages, cont'd (April 16)
  3. Type systems (April 22)
  4. Type systems, cont'd (April 28)
  5. Object-oriented programming (May 7)
  6. Parallelism and concurrency (May 12)
  7. System design (May 19)
  8. System design, cont'd (May 28)

Assignments - deadline for all assignments is June 13!

The first assignment involves working with lambda-calculus and is done "on paper". The other assignments involve writing code in Timber.

  1. Assignment on lambda-claculus
  2. Programming assignment A
  3. Programming assignment B
  4. Programming assignment C
  5. Assignment on design patterns

Note: there will be no assignment on modeling GUI.

Review Questions - prepare answers for the seminar on June 10!

How to unstall and use Timber compiler (timberc)

You can edit Timber files using any text editor, for example, TextMate on Mac OS X (shareware). If you choose TextMate, you can put this bundle in "Library/Application Support/TextMate/Bundles" to get syntax highlightning. You can then also use the shortcut "Cmd+T" in TextMate to perform "timberc --make [current file]" (output is shown as a tooltip).

Definition of the POSIX environment

Prelude (imported automatically into all Timber modules)

Credits

As a PhD student, you can obtain 7.5 hp for this course, subject to approval by your supervisor. To obtain the credits, you need to actively participate in the discussions and complete the assignments.

The examiner for the course is Assistant Professor Johan Nordlander, and the teacher / discussion leader is Andrey Kruglyak (A2314, kruglyak@mac.com).

 

Updated on 2010-05-28.