# Course Requirement and Examinations

To pass the course, you must have passed the assignments (labs) and have passed the exam. See exam schedule (including re-exam/omtenta) for TDA381/TDA380/TDA211/INN390 Concurrent Programming. The only permitted material is a dictionary.

# Past exams

Some previous exams are available below for reference.

• Exam-1303(with JR)
• 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]â‰ˆ2.
• 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.
• Exam-1203(with JR)
• Exam-1103(with JR)
• Exam-1008(with JR)
• Exam-1010(with JR)
• Exam-0910(with JR)
• Exam-0710(with JR)
• Exam-0310(with MPD)
• Exam-0210(with MPD)