Introduction to Programming Language Theory and System Design, 7.5 hp

The course is given in LP2 of 2011/2012 as D7018E - Fördjupningskurs i inbyggda system


Schedule

You can subscribe to a Google calendar by copying this link (use "Subscribe" in your calendar program and set up auto-refresh), or you can view it on the web here.

The course (D7018E) is also available in LTU's schedule.

Prerequisites

Experience in programming in several programming languages. A good knowledge of at least one object-oriented language is required, acquaintance with some functional langauge (for example, Haskell) is desirable but not required.

Course Description

The course is intended for students interested in programming languages and system design. The following areas will be covered during the course:

A number of home assignments will be related to the material of the lectures.

We will also discuss the programming language Timber that is being developed at LTU and Chalmers University of Technology. Timber is a functional OO language with object-level concurrency. Several labs in the course will involve programming in Timber.

Course Plan (subject to change)

# Date & time Place Topic
1
Wednesday,
November 2, 14.45
A2523 Introduction to lambda-calculus.
Slides. See additional reading below.
2
Thursday,
November 3, 14.45
A2523 Programming languages. Different evaluation strategies.
Slides. Example .t file.
3
Monday,
November 7, 14.45
A2525 Programming paradigms.
Slides. See additional reading below.
4
Wednesday,
November 9, 14.45
A2523 Introduction to simply typed lambda-calculus. Curry-style and Church-style semantics.
Slides.
T1
Monday,
November 14, 10.15
A2524 The Timber language, part 1. Programs and modules. Namespaces. Data (enumeration) types and struct types, lists. Defining functions using pattern matching and guards. Patterns and bindings.
Pi-calculus example from HW. Notes from the lecture. A part of Prelude.t (study it!).
5
Tuesday,
November 15, 14.45
A2523 Type systems. Sub-typing and type variance.
Slides. Notes from the lecture.
6
Thursday,
November 17, 13.00
A2523 Polymorphic types. Qualified types. Kinds.
Notes from the lecture
.
T3
Thursday,
November 24, 14.45
A2523 The Timber language, part 2. Subtyping. Polymorphic types. Type classes and qualified types.
Notes from the lecture. Prelude.t.
T3
Friday,
November 25, 10.15
A2524 The Timber language, part 3. Environment and external events. Reactivity. Objects and messages. Classes. The concurrency model of Timber. The POSIX environment.
Notes from the lecture. POSIX.t.
7
Monday,
November 28, 13.00
A2524 OO programming (state encapsulation; multiple representation, separation between interface and implementation; creation of objects using procedures and using classes). Sub-typing as a relation on interfaces. Subclassing as a relation on classes. Inheritance by embedding and by delegation. Open recursion.
Slides. Notes (procedures and forall in Timber). Timber example (code, slides).
8
Tuesday,
November 29, 14.45
A2524 Parallelism and concurrency (visible and transparent parallelism; support for concurrency in a programming language; shared resources and synchronisation; implementation bottlenecks).
Slides.
  Wednesday,
November 30, 13.00
A109 Reserach seminar by Johan Nordlander "The calculus of a full-featured programming language".
The recording of the seminar is available here.
9
Thursday,
December 1, 14.45
A2524 Parallelism and concurrency (different approaches to implementing concurrency: threads, tasks (in Ada, in TinyOS), active objects, and reactive objects; functional programming and concurrency; synchronous languages and concurrency; transactional memory; lock-free data structures).
Slides.
10
Monday,
December 5, 14.45
A2523 Design of software systems (desirable properties of software systems; QoS; software design methodologies; model-based design; modelling languages; interface description languages; contracts).
Slides.
11
Tuesday,
December 6, 14.45
A2523 Design of software system (distributed systems, embedded systems, CBSE, SOC).
Slides.
R
Wednesday,
December 14, 14.45
A2524 Repetition / preparation for the exam. Prepare answers to all exam questions!
E Saturday,
December 17, 9.00
A2524 Exam (9.00 – 13.00)

Additional Reading

Home Assignments

You do not need to code and run your solutions, you submit it on paper or by e-mail. You can also share a document with andrey.kruglyak@gmail.com.

Home assignment 1 (deadline November 7).

Home assignment 2 (deadline November 11).

Home assignment 3 (deadline November 14).

Home assignment 4 (deadline November 25):

Labs

The Timber language webpage. Note that the description of concurrency on the web page is not quite up-to-date, it does not include the keyword send that has to be used for asynchronous communication without handshaking (including all delayed messages).

Lab 1 (deadline November 11).

Lab 2 (deadline November 25). A part of Prelude.t (use it!).

Lab 3 (deadline December 7). Prelude.t. POSIX.t.

Lab 4 (deadline December 20).

How to compile & run a program:

Timber is layout-sensitive, so please observe the layout and do not mix tabs and spaces for indentation.

Examination

Home assignments and labs are obligatory. In addition, a written exam on December 17 9.00 – 13.00 in A2524 will include a number of questions from this list.

Staff

Examiner: Prof. Per Lindgren

Instructor: Andrey Kruglyak (A2314, kruglyak@mac.com).