Remember tomorrow's tentagranskning! The Tentagranskning for the re-exam will be on Wednesday 25th from 12:00 to 13:00 in EDIT 6128 Grouproom.
The re-exam and solutions are posted in the exams section.
The Tentagranskning for the re-exam will be on Wednesday 25th from 12:00 to 13:00 in EDIT 6128 Grouproom.
The re-exam will be on Wednesday 21st December (see the examination dates website for more info). K.V.S. Prasad set the exam (you can find exams from previous years by Prasad in the exams section), Alejandro Russo is in charge of administering the grading, and Michal Palka will be visiting the exam itself.
There will be two sessions for Tentagranskning:
  • Monday 14th from 12:00 to 13:00 in room EDIT 3364
  • Tuesday 15th from 12:00 to 13:00 in room EDIT 3364
Answers to the Exam available! You can find the solutions to the exam on Oct 22 in the exams section.
The Appendix to the exam, summarizing the notation used in the question paper, has been revised. It includes new material on channel capacity, timeouts and an eval construct for Linda input. It is posted here. We recommend you look through it so that you are already familiar with it when you take the exam. Please post any queries to the Ping-Pong forum.
Deadline extension! We have changed the final deadline for lab 4. The new deadline is 29 Oct, instead of 26 Oct. Note that the first deadline is unchanged and you must still demo your lab on 20 Oct.
Information about the exam on 22 Oct 2016

This term’s exam, on 22 Oct 2016, will test you on ideas, concepts and techniques from the textbook. Here are the relevant sections from the textbook:

Chap 1: all
Chap 2: 2.1 through 2.7 + 2.14. Sections 2.12 and 2.13 are examples of language dependent sections worth reading.
Chap 3: all
Chap 4: 4.1 through 4.6 + 4.9 (i.e., all of Chap 4 except 4.7 and 4.8)
Chap 5: 5.1 + 5.2
Chap 6: 6.1 through 6.9
Chap 7: 7.1 through 7.10 (except the tiny section 7.9)
Chap 8: 8.1 through 8.4
Chap 9: 9.1 through 9.4


a. The list agrees with "Reading for the exam" in http://www.cse.chalmers.se/edu/course/TDA383/exams.html with a few exceptions that we have noted during the lectures. (See for example the note on 21 Sep on plan for the remaining lectures).

b. Language dependent sections are not listed above. These can in general be skipped, but with caution: you are expected to understand the concepts, though we will not use the notation in the exam. See "The Programming Languages Used/For the lectures and the exam/Pseudo-code" in http://www.cse.chalmers.se/edu/course/TDA383/course_inf.html where the key idea is that an extended version (summarised version here of Ben-Ari's pseudo-code notation is the only programming language you need to know for the exam.
Guest lecture on Monday 10 Oct 2016 by Cons T Åhs (Cisco). Here are the details:

Title: Real World Distributed and Concurrent Programming using Erlang

Abstract: This talk will present how Cisco is using Erlang for network and network device configuration. Models of distributed, concurrent and multicore programming will be presented, both for a general setting and in terms of Erlang. Models and cases for both concurrent and distributed programming will be presented. Some amount of time will spent on Erlang, BEAM (the virtual machine that it runs on) and why Erlang/BEAM is a good choice for certain types of projects, especially if one considers what is happening on the hardware side of things.
We kindly ask to all students planning to take the exam on Oct 22nd to join the Ping-Pong forum here. There is a fair amount of material on the forum (solutions to old exams, for example) that will not be on the website.
Given that spurious wakeups were not extensively covered during the lectures, rejections related to spurious wakeups in lab 2 will not deduct points.
Here is a list of suggestions by John Camilleri to get started with Erlang:

  1. As a basic resource I suggest the Erlang 4-day course, in particular modules 2 and 3: http://www.erlang.org/course
  2. The lectures I gave cover everything they need to get started with the lab. The notes can be found here: http://www.cse.chalmers.se/edu/year/2016/course/TDA383/lec.html#erlang-tutorials
  3. In particular, it is essential that you understand how genserver works (covered in the lecture).
  4. Exception catching was covered in the lectures, which will be needed but in a minor way.
  5. You should be able to complete the exercises which I created here: http://www.cse.chalmers.se/edu/year/2016/course/TDA383/erlang-exercises.html
Important note! We have changed the order of labs 3 and 4, which involved updating the deadlines for lab 3 (now Linda). Check the labs section to see the changes. Here is a summary of the changes:
  1. Lab 3 deadlines are: (First) 9 Oct, (Final) 16 Oct. It does not require to pass a demo.
  2. Lab 4 deadlines are: (First) 19 Oct, (Final) 26 Oct. It requires to pass a demo on Thursday 20th Oct.
We have made some exceptions in the rules for lab submission for lab 1. But we would like to remind you that it is mandatory to submit the labs in groups of two members and for the remaining labs we will make no exceptions. Therefore, we strongly recommend people submitting alone lab 1 to make an effort to find a lab partner.
Remember the extra lab session today (Tuesday 13th) from 15:15 to 17:00 in EDIT room 3364.
The lecture notes for 8 and 9 of September are available in Ping Pong.
We apologise for having only one TA in this morning's lab session. It occurred due to a confusion in the TAs' schedule. To compensate we will have an extra lab session on Tuesday 13th from 15:15 to 17:00 in EDIT room 3364. Unfortunately this room does not have computers, so it is recommended to bring your own machine.
The source code fo the Java programs we used in Lecture 4 is available in the lectures section.
Hi class,

The goal for the first week was to get past introduction (including to the critical section problem), and get to semaphores, monitors and protected objects. We did do semaphores in some detail, but only saw one program using protected objects. We only just mentioned what monitors are. See the lectures section for a detailed description of the material we have covered and references to it in the textbook, online and the slides.

Next week, Raul will do concurrency in Java. I will do two lectures on message passing (Chap 8 in the textbook) + an introduction to Functional Programming (F.P.)

Here is the preliminary lecture plan as of Wed 31 Aug:

  • Week 1 until Friday: Overview of atomic actions, critical sections, semaphores, monitors, protected objects. Detail only as far as time permits. Sections 2.1–2.5, 3.1-3.2, 6.1-6.4, maybe 6.7, 7.1-7.4, 7.10.
  • Week 2 Monday: Concurrency in Java.
  • Rest of week 2: Message passing (chap 8) + intro to functional programming with messages.
  • Week 3: Erlang.
The submission system Fire 2.0 is now open, please register!
Information regarding people who passed the labs in an older run of the course has been added to the labs section.
If you have questions related to the Ping Pong system please contact Nick Smallbone (nicsma@chalmers.se). For questions related to the website, SPIN web interface or lab organisation please contact Raúl Pardo (pardo@chalmers.se).
The slides of Lecture 1 are uploaded! See the lectures section
This first session is not for the labs. It is tutorial introduction to concurrent programming, running Promela examples. It is no way compulsory, but you are strongly urged to attend. If you can, look at the lab document here, though we expect to keep updating it.
You can now sign up in the Ping Pong instance of the course here.
The SPIN web interface is available in the Programming resources section.
Welcome to the course!

Concurrent Programming 2016 - Chalmers University of Technology & Gothenburg University