INF329 - Selected Topics in Programming Theory / Concurrent programming

INF329 - Utvalde emne i programutviklingsteknologi / Multiprogrammering

Spring 2015

This is a trial version of INF214 - Concurrent programming which will be taught for the first time autumn 2017. The teaching format is therefore seminar oriented (more informal) in the trial version, offering more space for student input.

Contents on this web page

Course outline and curriculum

In the ubiquitous era of multi-core processors and networked computers (e.g. Internet, telephone networks, etc) with common applications ranging over desktop applications, the world wide web, client-server apps, distributed databases, etc., there is a great demand for programming skills that deliver spot-on solutions leveraging the underlying hardware. This course introduces principles for programming secure, reliable and robust software in a multi-threaded or multi-process environment. Concurrent programming techniques are particularly central to the course, but related techniques may also be covered. The course combines a strong theoretical foundation with practical exercises.

After successfully completing the course, the students shall be able to:

Reading Material

The curriculum is primarily based on the following text book, and includes all lectures, notes, handouts, exercises, and related course material.


Lecturers and course responsible: Magne Haveraaen and Eva Burrows
Teaching assistant: none

The participants are adviced to organise study groups for discussing the topics of the course and assist each other in solving the exercises.

Schedule for lectures and seminar groups

From 2015-02-06 the schedule has changed from Tuesdays in room 2104 and Fridays at 1015 to:

Teaching starts Tuesday January 27 2015 (week 5). Teaching will be in the form of lectures, exercises and time off for self studies.

Semester plan

The following teaching plan is very tentative and guaranteed to change.

  1. Introduction: What is concurrent programming
    The concurrent program abstraction
  2. The critical section problem
    Exercise sets 1
  3. Verification of concurrent programs
    Exercise sets 2
  4. Advanced algorithms for the critical section problem
    Exercise sets 3
  5. Semaphores
    Exercise sets 4
  6. Monitors
    Exercise sets 4 (continued), 5
  7. Exercise sets 5 (continued)
    Exercise sets 6
  8. Programming problems
    Programming problems
  9. Programming problems
    Programming problems
  10. Easter break
  11. Channels
    Exercise sets 7
  12. Spaces
    Exercise sets 7 continued
  13. --
    Exercise sets 8
  14. Distributed algorithms
    May Day
  15. Consensus / Global properties
    Exercise sets 9
  16. --
  17. Reflection on the course

The exam is planned for early June.


The exercises will be provided as the course evolves, check miside.


There will be compulsory exercises, and the participants are expected to give presentations on selected topics throughout the semester.

If students engage more actively in the course activity (e.g., showing up persistently throughout the course and being pro-active, willing to give presentations on several selected topics, etc.) there is an option for Pass/Fail examination based solely on each individual's course activity throughout the semester. Alternatively, the course can be evaluated by an oral exam. Hence, the actual form of evaluation will be decided in conjunction with the students over the first month.

Last modified 2015-05-06 by Magne Haveraaen and Eva Burrows