CS314: Concurrency

This course covers the principles of concurrent systems and process management in Operating Systems. The major topics that will be covered are Parallel Computer Architecture, Parallel Programming Models, Performance Analysis, Process Management in Operating Systems, Message Passing Programming, and Shared Memory Programming

Dr. Cornelia P. Inggs
cinggs at cs dot sun dot ac dot za
Room 509
Computer Science
General Engineering Building
Stellenbosch University
c.o. Banghoek Road & Joubert Street
Stellenbosch, 7600
+27 21 808 4232
Please make an appointment via email if you would like to come and see me, or come and talk to me after class.
Assistants for 2021:
Claire Biassac (20981848)
Travis de Bruin (21802580)
Hendrik du Toit (21746877)
at sun dot ac dot za
Postgrad Lab
Computer Science
General Engineering Building
Class Representative for 2021:
To be elected.

at sun dot ac dot za
If there are any course-related issues you do not want to raise directly with the lecturer or the assistant, please contact your class representative.

Important arrangements and rules are listed here, please read the information carefully.


Cover: An Introduction to Parallel Programming, Peter Pacheco
An Introduction to Parallel Programming

Peter Pacheco
Morgan Kaufmann

All the material in the book will be covered in the course; it is thus recommended that you buy yourself a copy (hardcopy or ebook) of the text book.


Computer Science 2


Upon successful completion of this course, the student should understand

  1. different parallel programming models and environments
  2. the principles of parallel algorithm design; which includes
    • using decomposition, ordering, and mapping techniques to identify concurrency and
    • organising tasks and data to choose the correct algorithm structure and supporting structures for implementation
  3. performance analysis, which includes topics such as efficiency, speedup, overheads analysis, and scalability
  4. the operating system's responsibility with regards to managing processes, including process creation, scheduling, and synchronisation.

Time table

Day Time slot Description Venue
Monday 10:00–10:50 Lecture A407, General Engineering Building
Tuesday 08:00–08:50 Lecture A407, General Engineering Building
Wednesday 14:00–17:00 Tutorial Narga A
Friday 11:00–11:50 Lecture A407, General Engineering Building


The Stellenbosch University Policy on Plagiarism, available at www.sun.ac.za/english/legal/Pages/Student-dicipline.aspx, defines plagiarism as "the use of the ideas or material of others without acknowledgement...". 


Less serious cases will be handled departmentally by following the Faculty of Engineering plagiarism procedure (until further notice that the Faculty of Science plagiarism procedure has been finalised). More serious cases will be referred to the Central Disciplinary Committee, in accordance with the SU Policy on Plagiarism.  If there are instances of copying, all parties involved will be subject to the disciplinary procedures and applicable sanctions.


You must cite your sources for all handins. In reports they should be included as citations and appear in the Bibliography and in your source code they should be included as comments. Enough detail should be provided for the lecturer or moderator to check without trouble.


You may discuss ideas and strategies with fellow students away from the computer, but while coding, you should work alone.   In general:

  1. Never copy-and-paste code into your source file.
  2. Do not program or debug together on the same computer.
  3. Stay away from public repositories.
  4. Prefer pseudocode explanations to coded examples.
  5. Do something mindless for at least 10 minutes after having discussed work with fellow students.


You have to include a signed copy of the following plagiarism declaration with every submission.

  1. I have read and understand the Stellenbosch University Policy on Plagiarism and the definitions of plagiarism and self-plagiarism contained in the Policy.
  2. I declare that the work contained in this assignment is my own original work -- except for the inclusion of resources explicitly permitted for this assignment, and assistance as noted in item 3 -- and that I have not previously (in its entirety or in part) submitted it for grading in this module/assignment or another module/assignment.
  3. My submission acknowledges all external libraries and sources used, and identifies any other students and/or staff (including demis, tutors, and lecturers) with whom I have discussed this assignment.  ♦  Unless explicitly stated otherwise, submissions or solutions to assignments in a previous module at this university or any other educational institution, and which correspond to (significant portions of) this assignment, may not be used as external sources. In particular, if available, do not look at or use solutions to assignments from previous years. 
  4. I have not allowed, and will not in the future allow, anyone to copy any portion of my work, or give them access to it in any way. In addition, I will not make my work publicly available in any way, including posting my code in public source code repositories or forums.  ♦ You may, however, allow other people to look at selected portions of your code for the purposes of debugging, but you may not make the code available to them otherwise. 
  5. I have not and will not facilitate plagiarism, such as by allowing access to/distributing any written work or source code created by myself or a fellow student. 
  6. I understand that any code I submit may be inspected for plagiarism (either manually or by automated systems) and be retained for detecting plagiarism in other modules.  ♦ All code for this module will be checked both manually and automatically. 
  7. I understand that, if there are instances of copying, all parties involved will be subject to the disciplinary procedures.

An original version of this description was compiled in accordance with the Stellenbosch University Plagiarism Policy and the Stellenbosch Faculty of Engineering Plagiarism Policy by Willem Bester.

  • This module is evaluated by flexible assessment; there are thus no re-assessment opportunities. You should familiarise yourself with the rules as set out in ¶8 of the chapter “University Examinations” in Part 1 of the 2016 Calendar (available in Afrikaans and English).
  • According to university regulations you are not allowed to register for two modules at the same time if there are timetable clashes. In special cases permission can be obtained for incomplete attendance. To apply for this, speak to the instructor. However, there will be no alternate arrangements made for any of the assessment opportunities, some of which will be written during the tutorial classes.
  • All assessments (tests and tuts) count towards the final mark, unless explicitly stated otherwise.
  • The two semester tests and two projects are compulsory. If a student misses a test due to illness and has a valid sick certificate, the student will be assessed via an oral exam during the normal examination period.
  • If a student misses more than 12% of the assessment opportunities, the student will receive an incomplete for the module. 
  • There is a sub-minimum of 40% for the cumulative project marks.
  • When a hand-in is late, 15% is subtracted for every day that it is late.
  • A final mark of at least 50% is required to pass the module, on condition that all the attendance criteria are met.
  • A final mark of at least 75% is required to pass the module with distinction, on condition that all the attendance criteria are met.

If you are allowed extra writing time per arrangement with the administration, you have to schedule that with the lecturer at least one week before the first test opportunity.