Search course

Use the search function to find more information about the study programmes and courses available at Chalmers. When there is a course homepage, a house symbol is shown that leads to this page.

Graduate courses

Departments' graduate courses for PhD-students.

​​​​

Syllabus for

Academic year
TDA384 - Principles of Concurrent Programming  
 
Syllabus adopted 2017-02-20 by Head of Programme (or corresponding)
Owner: TKDAT
7,5 Credits
Grading: TH - Five, Four, Three, Fail
Education cycle: First-cycle
Major subject: Computer Science and Engineering, Information Technology
Department: 37 - COMPUTER SCIENCE AND ENGINEERING


Course round 1


Teaching language: English
Open for exchange students
Block schedule: A+

Course elements   Credit distribution   Examination dates
Sp1 Sp2 Sp3 Sp4 Summer course No Sp
0117 Laboratory 3,0c Grading: UG   3,0c    
0217 Examination 4,5c Grading: TH   4,5c   17 Mar 2018 pm SB-MU,  19 Dec 2017 pm M   22 Aug 2018 pm M

In programs

TKDAT COMPUTER SCIENCE AND ENGINEERING, Year 3 (elective)
TKDAT COMPUTER SCIENCE AND ENGINEERING, Year 2 (compulsory elective)
TKITE SOFTWARE ENGINEERING, Year 3 (elective)
MPCSN COMPUTER SYSTEMS AND NETWORKS, MSC PROGR, Year 1 (elective)
MPSOF SOFTWARE ENGINEERING AND TECHNOLOGY, MSC PROGR, Year 1 (compulsory elective)
MPSOF SOFTWARE ENGINEERING AND TECHNOLOGY, MSC PROGR, Year 2 (elective)
TIDAL COMPUTER ENGINEERING, Year 3 (elective)

Examiner:

Docent  Carlo Furia A



Course round 2


Teaching language: English
Open for exchange students
Block schedule: C

Course elements   Credit distribution   Examination dates
Sp1 Sp2 Sp3 Sp4 Summer course No Sp
0117 Laboratory 3,0c Grading: UG   3,0c    
0217 Examination 4,5c Grading: TH   4,5c   28 Oct 2017 am SB,  19 Dec 2017 pm M,  22 Aug 2018 pm M

In programs

TKDAT COMPUTER SCIENCE AND ENGINEERING, Year 3 (elective)
TKITE SOFTWARE ENGINEERING, Year 3 (elective)
TKTEM ENGINEERING MATHEMATICS, Year 3 (compulsory elective)
MPCSN COMPUTER SYSTEMS AND NETWORKS, MSC PROGR, Year 2 (elective)
MPSOF SOFTWARE ENGINEERING AND TECHNOLOGY, MSC PROGR, Year 2 (elective)
MPSOF SOFTWARE ENGINEERING AND TECHNOLOGY, MSC PROGR, Year 1 (elective)
TIDAL COMPUTER ENGINEERING, Year 3 (compulsory elective)

Examiner:

Docent  K V S Prasad



Replaces

TDA381   Concurrent programming TDA382   Concurrent programming TDA383   Concurrent programming


  Go to Course Homepage

 

Eligibility:

In order to be eligible for a first cycle course the applicant needs to fulfil the general and specific entry requirements of the programme(s) that has the course included in the study programme.

Course specific prerequisites

Solid background in programming, including object oriented languages (for example Java), and basic knowledge of (propositional) logic. Some knowledge of functional programming (for example Haskell) is a plus.

Aim

Concurrent and parallel programming has become ubiquitous in modern software and systems, where concurrency is leveraged to exploit physical parallelism and speed up computations, to provide interactive multi-tasking, and to handle the interactions with asynchronous external events. This course aims to provide an introduction to the principles underlying concurrent systems, as well as to practical programming solutions for modeling and exploiting concurrency in programs. Domains where such principles and practices are relevant include operating systems, distributed systems, real-time systems, and multicore architectures.

Learning outcomes (after completion of the course the student should be able to)

Knowledge and understanding:
  • demonstrate knowledge of the issues and problems that arise in writing correct concurrent programs;
  • identify the problems of synchronization typical of concurrent programs, such as race conditions and mutual exclusion

Skills and abilities:

  • apply common patterns, such as lock, semaphores, and message-passing synchronization for solving concurrent program problems;
  • apply practical knowledge of the programming constructs and techniques offered by modern concurrent programming languages;
  • implement solutions using common patterns in modern programming languages

Judgment and approach:
  • evaluate the correctness, clarity, and efficiency of different solutions to concurrent programming problems;
  • judge whether a program, a library, or a data structure is safe for usage in a concurrent setting;
  • pick the right language constructs for solving synchronization and communication problems between computational units.

Content

  • Physical vs logical parallelism
  • Concurrency problems: race conditions, interference, deadlock, fairness, livelock
  • Mutual exclusion
  • Shared memory synchronization: using semaphores or fine grained locking
  • Message-passing synchronization: using message queues

Organisation

The course is organized in lectures and laboratory assignments.

Literature

The literature to be used is announced in advance on the course's home page. We often use "Principles of Concurrent and Distributed Programming (Second edition)", M. Ben-Ari, Addison-Wesley, 2006. ISBN 0-321-31283-X.

Examination

The course is examined by an individual written exam (4.5 hec), carried-out in an examination hall, and laboratory assignments (3.0 hec) which are normally carried out in pairs of students. The complete course grade is then determined by the score of both the laboratory part and the written exam.


Published: Fri 18 Dec 2009. Modified: Wed 04 Apr 2018