## Passing requirements

To pass the course, you must have passed the assignments (labs) and have passed the exam (see more information). For the exam, the only permitted material is a dictionary.

We hope the lectures and exercises will help you understand concurrency, but to prepare for the exam, you need strictly speaking only Chapters 1 through 9 of the textbook. Sections of the textbook specifically dealing with languages we don’t use (Ada, C and BACI) can be skipped with caution (be aware that important ideas might be illustrated in those sections; for example, protected objects in Ada). Promela and Spin are not examinable material; they will be used only as teaching aids.

Remember that the pseudo-code notation of the textbook and the lectures is the only programming language you need to know for the exam.

## Examination dates

These are the official examination dates:

• 22 Oct 2016
• 21 Dec 2016
• 21 Aug 2017

## Past exams

Some previous exams are available below for reference.

### Exams by Michał Pałka

Some student solutions to these exams can be found here.

• October 2014

• October 2013

• October 2012

Hints to solve the exercises:

• Q1 : (a) The scenario q1, q2, p1, q1 gives n=0 at the end. The scenario p1, q1, q2, p2, p1, q1 gives n=1 at the end.

• Q2 : The abbreviated version leaves out p1, q1, p4 and q4. Each state now shows where the program counters of p and q are, and the values of wantp and wantq. Draw the state diagram and show there is no state with p5 and q5.

• Q3 : (a) The state diagram is on p108 of the text-book (b) the definitions of wait and signal are on p109 and p110. (c) See algorithm 6.8 on p119.

• Q4 : (a) See p 161. (b). eating(i) becomes true only by executing takeForks(i) completely, or by by being unblocked in releaseForks(i+1) or releaseForks(i-1). In both cases, we have fork[i].

• Q5 & Q6 : These are programming problems, not involving formal reasoning.

• Q7 : (a) the processes can livelock, looping p- to p3 and q- to q3. The invariant is that exactly one of C, Lp and Lq is true, (b) We did this in class, in my 3rd lecture. If p does not progress, Lp must be false. So q must progress, and will then set C to true. Assuming fairness, p must then progress.

• October 2011 (old notation defined during the lectures in 2011)

• Sample questions from 2003 (old notation from the previous text-book)

## More exams?

The list above will give you a pretty good idea what to expect from an exam. Of course, the course has been run by different teachers and each of them has its own style. If you still want more exams, you can get a copy of them from the Studieexpedition. The structure of the exam and the type of questions is not drastically changing throughout the years. It is true that the used programming languages can be different but the problems the past exams ask to solve are relevant.

Concurrent Programming 2016 - Chalmers University of Technology & Gothenburg University