McMaster University

CAS 766 Concurrent Programming
Emil Sekerinski

Term 1, 2019-2020


  • First class on Tuesday, September 3
  • No class on Friday, September 13

Location & Times

  • Classes are Tuesdays and Fridays, 10:30 - 11:50, ITB 222.
  • You can reach me in my office, ITB 215 Tuesdays and Fridays after class


    Familiarity with an imperative programming language is required. Knowledge of object-oriented programming, program verification, and formal logic is helpful.

Course Objectives

    Concurrency manifests itself in numerous form, historically first with operating systems, then with distributed and parallel systems, more recently with multi-core processors and heterogenous processors (where programs are being executed on a combination of CPU’s, GPU’s, and FPGA’s). Besides the practical aspects of efficiency, there exists also a rich theory of concurrency, including models of concurrency and verification. This course is on the principles, methods, and implementations, with focus on multi-core and heterogeneous processors; these promise to increase computational performance while lowering power consumption, an essential issue for small mobile devices up to large server farms.

Essential Reading

Further Reading


    Topics will be selected among the following:

  • Basics: Processes and Synchronization, Atomicity, Mutual Exclusion, Locks and Barriers, Semaphores, Monitors, Message Passing
  • Theory: Linearizability, Correctness Proofs, Consensus
  • Patterns: Map, Reduce, Fork/Join, Pipeline, Scatter, Gather, Master/Worker
  • Efficiency: Transactional Memory, Lock-free Algorithms
  • Implementations: Parallel Programming, Multi-core Processors, GPU's and FPGA's
  • Applications: Scientific Computing, Sorting, Compression, Encryption, etc.


  • Assignment 1, 20%, due October 11
  • Assignment 2, 20%, tentatively due November 8
  • Assignment 3, 20%, tentatively due December 6
  • Project 40%, presentations tentatively November 12 - December 4


Academic Dishonesty

  • Assignments are to be completed individually; they must constitute your own work and references to all used resources must be given. Details are announced with each assignment.
  • Academic dishonesty consists of misrepresentation of deception or by other fraudulent means and can result in serious consequences, e.g. the grade of zero on all assignments, loss of credit with a notation on the transcript (notation reads: "Grade of F is assigned for academic dishonesty"), and/or suspension or expulsion from the university.
  • It is your responsibility to understand what constitutes academic dishonesty. For information on the various kinds of academic dishonesty please refer to the Academic Integrity Policy, specifically Appendix 3. The following illustrates only three forms of academic dishonesty:
    • Submission of work that is fully or partly copied from someone else, or making your work available for copying to others.
    • Submission of work that has been fully or partly obtained from other sources like the Internet.
    • Copying or using unauthorized aids in tests and examinations.
  • All submitted assignments are always checked for similarities.