Last updated on: 2019-06-01


Course Details

Course Codes COMP3151 (undergraduate), COMP9154 (postgraduate)
Course Title Foundations of Concurrency
Convenor Vladimir Tosic
Admin Vladimir Tosic
Classes Lectures (including some tutorial-like exercises) :
Mondays 6pm-8pm in Central Lecture Block 2
and Wednesdays 4pm-6pm in Central Lecture Block 2
Separate Thursday tutorial classes listed previously within the UNSW Class Timetable 2019 have been cancelled!
Consultations Mondays 5:30pm-6pm around Central Lecture Block 2
Mondays 8pm-9pm around Central Lecture Block 2
Wednesdays 6pm-6:30pm around Central Lecture Block 2
Units of Credit 6
Course Website
Handbook Entries

Course Summary

In this course you will learn about the foundational concepts of concurrent programs (including multi-threaded, parallel, and distributed programs) and the crucial abstractions used to implement or understand behaviour of concurrent programs. Classical problems arising in concurrent programs will be examined and solutions to these problems will be analysed. Practical work will include proofs of program properties, plus some programming in a concurrent programming language (Java or a suitable alternative) with simultaneous model checking.

Assumed Knowledge

The pre-requisites for this course are: COMP1927, or (COMP1521 and COMP2521), or COMP9024

Before commencing this course, you should be able to:
  • demonstrate understanding of the basics of computer system architecture and organisation
  • design, implement and test programs written in a procedural programming language
  • represent data using the fundamental data structures and process these data structures using the standard algorithms
  • reason about applicability, effectiveness and efficiency of algorithms

These are assumed to have been acquired in COMP1927 or in the combination of COMP1521 and COMP2521 or in COMP9024, along with their pre-requisite courses.

Additionally, it is highly desirable that you can formulate and prove simple propositions in mathematical logic. It is also desirable (albeit not mandatory) that you have some knowledge of operating system concepts (such as processes and threads) and some familiarity with programming in Java.

Student Learning Outcomes

After successfully completing this course, you will be able to:

  1. design and implement multi-threaded, parallel, and distributed programs,
  2. talk, write, and reason about such programs, and
  3. appreciate the complexities involved in the previous two.

In addition to the technical knowledge and skills, you will develop further your critical thinking and problem-solving skills, communication skills, information literacy skills and group (team) work skills.

This course also contributes to the development of the following graduate capabilities:

Graduate Capability Acquired in
Scholars capable of independent and collaborative enquiry, rigorous in their analysis, critique and reflection, and able to innovate by applying their knowledge and skills to the solution of novel as well as routine problems 1-10
Entrepreneurial leaders capable of initiating and embracing innovation and change, as well as engaging and enabling others to contribute to change -
Professionals capable of ethical, self- directed practice and independent lifelong learning 1-10
Global citizens who are culturally adept and capable of respecting diversity and acting in a socially just and responsible way -

Teaching Strategies

This course uses the standard set of teaching strategies employed by most CSE courses:

  • Lectures ... introduce concepts, show examples
  • Tutorial-like exercises within lectures ... reinforce concepts and provide additional examples with exploration of questions
  • Assignments ... allow you to solve larger problems or research solutions to problems

Teaching Rationale

Lectures are used to present theoretical knowledge about concurrency by explaining the concepts and abstractions studied in this course, as well as by illustrating them on examples. They include examinations of problems arising in concurrent programs, followed by critical analyses of solutions to these problems. Lectures help develop your deep knowledge and deep understanding of computer science, along with your critical thinking and problem-solving.

In 2019 Term 2 (19T2) there will be no separate tutorial classes. However, tutorial-like exercises within lectures are used to clarify ideas, work through exercises based on the lecture material and homework problems, explore questions and discuss topics related to the assignments. They are guided by the lecturer, but your participation is essential in order to achieve deeper active learning. You should make sure that you use them effectively by examining in advance the material to be covered each week, by preparing solutions to the assigned homework problems, by presenting these solutions to the class, by providing constructive feedback to peers, by asking questions. Tutorial-like exercises further strengthen your knowledge and understanding, together with critical thinking, problem-solving and communication skills.

Assignments reinforce and deepen your knowledge and understanding by requiring from you to apply on relatively larger problems the knowledge and skills you have learnt previously in this course. They allow you to translate the theory into problem-solving and critical thinking practice. They will challenge you, in order to advance your scholarship and your professionalism. Further, presenting your assignment solutions hones your communication skills, while completing an assignment in pairs improves your group (team) work skills.

Student Conduct

The Student Code of Conduct ( Information , Policy ) sets out what the University expects from students as members of the UNSW community. As well as the learning, teaching and research environment, the University aims to provide an environment that enables students to achieve their full potential and to provide an experience consistent with the University's values and guiding principles. A condition of enrolment is that students inform themselves of the University's rules and policies affecting them, and conduct themselves accordingly.

In particular, students have the responsibility to observe standards of equity and respect in dealing with every member of the University community. This applies to all activities on UNSW premises and all external activities related to study and research. This includes behaviour in person as well as behaviour on social media, for example Facebook groups set up for the purpose of discussing UNSW courses or course work. Behaviour that is considered in breach of the Student Code Policy as discriminatory, sexually inappropriate, bullying, harassing, invading another's privacy or causing any person to fear for their personal safety is serious misconduct and can lead to severe penalties, including suspension or exclusion from UNSW.

If you have any concerns, you may raise them with your lecturer, or approach the School Ethics Officer , Grievance Officer , or one of the student representatives.

Academic Honesty and Plagiarism

Plagiarism is defined as using the words or ideas of others and presenting them as your own. UNSW and CSE treat plagiarism as academic misconduct, which means that it carries penalties as severe as being excluded from further study at UNSW. There are several on-line sources to help you understand what plagiarism is and how it is dealt with at UNSW:

Make sure that you read and understand these. Ignorance is not accepted as an excuse for plagiarism. In particular, you are also responsible that your assignment files are not accessible by anyone but you by setting the correct permissions in your CSE directory and code repository, if using. Note also that plagiarism includes paying or asking another person to do a piece of work for you and then submitting it as your own work.

UNSW has an ongoing commitment to fostering a culture of learning informed by academic integrity. All UNSW staff and students have a responsibility to adhere to this principle of academic integrity. Plagiarism undermines academic integrity and is not tolerated at UNSW. Plagiarism at UNSW is defined as using the words or ideas of others and passing them off as your own.

If you haven't done so yet, please take the time to read the full text of

The pages below describe the policies and procedures in more detail:

You should also read the following page which describes your rights and responsibilities in the CSE context:

Course Schedule

The following is a rough schedule of when topics will be covered. This will most likely change over the term as topics take more or less time to cover.

Week Topic
Assessments Quizzes
1 The concurrent programming abstraction - Quiz 1
2 The critical section problem (note: public holiday on Monday 10 July 2019) - Quiz 2
3 Verification of concurrent programs - Quiz 3
4 Advanced algorithms for the critical section problem - Quiz 4
5 Semaphores
Midterm Exam -
6 Monitors - Quiz 5
7 Channels and other higher-level concepts for concurrent programming Assignment 1 due Quiz 6
8 Distributed algorithms - Quiz 7
9 Global properties - Quiz 8
10 - (note: revision and exam preparation)
Assignment 2 due -

The last 2 scheduled lectures (on Week 10 Wednesday and Week 11 Monday) are kept as a reserve in case of any disruptions to the above schedule.

The expected workload is about 12 hours per week on average, including the 4 hours of lectures per week. Note that this means that you should spend about 8 hours per week (on average) learning independently, e.g. by reading the textbook and other resources, revising past lecture materials, solving posted homework problems, working on Assignments 1 and 2, preparing in advance for the next lecture, etc.

Resources for Students

The required textbook for this course is:

Additional notes and links to free online resources will be published on the course website. However, please note that the course slides will not be detailed and that it will be essential for you to read the textbook and do the textbook exercises.

The course website will also display important notices related to this course. It is your responsibility to check this page regularly.


Item Topics Due Marks Notes
Quizzes All topics Every week in Wednesday lectures (except in Weeks 5 and 10) 10% 10-15 minutes each
Midterm Exam
Concepts and algorithms for the critical section problem, verification of concurrent programs In the lecture on Week 5 Monday 1 July 2019 at 6pm 10% 1 hour
Assignment 1 Concepts (e.g. semaphores, monitors) and algorithms for solving various problems in concurrent programs, verification of concurrent programs
Week 7 Monday 15 July 2019 at 10pm 15% In pairs
Assignment 2 Higher-level concepts for concurrent programming Week 10 Monday 5 August 2019 at 10pm 15% In pairs
Final Exam All topics Exam period (timetabled centrally) 50% 2 hours

Both assignments will have small peer-marking components due 3 days after the main assignment due date specified above (i.e. 10pm on Thursday 18 July for Assignment 1 and 10pm on Thursday 8 August for Assignment 2).

Your final overall mark will be the sum of your marks for each component. However, marks may be moderated/scaled consistently across all students, if this is appropriate.

To pass the course, your final overall mark must be 50 or higher and the sum of your marks for the midterm and the final exam must be 30 or higher.

Note that marks for individual weekly quizzes might vary, but their sum will be mapped into a mark out of 10. There will be some bonus quiz marks, so it is possible for the total quiz mark to be 10/10 even when some quiz answers are incorrect or missing.

Both assignments will be pair assignments marked as a group, i.e. groups of one will be marked the same as groups of two. Pairs can consist of 2 undergraduates, 2 postgraduates or 1 undergraduate plus 1 postgraduate. Both pair members are expected to contribute equally. In submitting your assignment, you are agreeing you have contributed equally unless you also submit an agreed-to statement from both pair members identifying differing levels of contribution.

Late assignment submissions incur a penalty of (0.5% * maximum mark / hour) for up to four days (i.e. up to 48%), after which submissions are no longer accepted.

All assignment submissions are routinely submitted to plagiarism detection. Recall that you are bound by various university policies, such as those summarised above about Academic Honesty and Plagiarism, as well as Student Conduct.

Special Consideration

If your work in this course is affected by unforeseen adverse circumstances, you should apply for Special Consideration. If your request is reasonable and your work has clearly been impacted, then:

  • for a quiz or the Midterm Exam, you may be allowed to sit it later (as soon as you are well)
  • for an assignment, you may be granted an extension
  • for the Final Exam, you may be offered a Supplementary Exam

Note the use of the word "may". None of the above is guaranteed. It depends on you making a convincing case that the circumstances have clearly impacted your (and, for pair assessments – your pair’s) ability to work.

UNSW handles special consideration requests centrally (in the Student Lifecycle division), so all special consideration requests must be submitted via the UNSW Special Consideration website. Special consideration requests must be accompanied by documentation, which will be verified by Student Lifecycle. Do not email the lecturer (course convenor) directly about special consideration.

If you cannot attend the Final Exam because of illness or misadventure, then you must submit a Special Consideration request, with documentation, through MyUNSW within 24 hours of the exam. If your request is reasonable, then you will be awarded a Supplementary Exam (aka "Supp"). Note that UNSW expects you to be available to sit Supplementary Exams (held in the week of September 9-13) if required. If you are awarded a Supplementary Exam and do not attend, then your exam mark will be zero.

For further details on special consideration, see the UNSW Student website.

If you are registered with Disability Services, please forward your documentation to the lecturer within the first two weeks of the term.

Contact with the Instructors

The course website contains forums for posting messages by students. All but the truly confidential questions/requests should be posted there. Requests of a confidential nature can be emailed to the course email address: with the Subject line “COMP3151/9154 19T2 Confidential Request”. However, it is usually better to first discuss such requests verbally with the lecturer (if this is possible).

Course Evaluation and Development

This course is being continuously improved and we will conduct a survey through UNSW's myExperience process at the end of session to obtain feedback on the quality of the various course components. Your participation in the survey will be greatly appreciated, especially since this is the first time that this course re-prioritised some topics and is run in the new format outlined above. Students are also strongly encouraged to provide informal feedback during the session and to notify the lecturer of any issues so that they can be addressed as soon as possible.

This Course Outline should be relatively stable at the beginning of the term. Any updates will be discussed in class and posted on the course website.

Resource created Thursday 31 January 2019, 11:25:03 PM, last modified Saturday 22 June 2019, 08:10:45 AM.

Back to top

COMP3151/COMP9154 19T2 (Foundations of Concurrency) is powered by WebCMS3
CRICOS Provider No. 00098G