The University of Western Ontario
London, Canada

Department of Computer Science

Distributed and Parallel Systems

Course Web Site -- Winter 2015

Course Description

To best utilize parallel and distributed systems (multi-core, many-core and cluster) is nowadays an essential task for computer scientists.

This course studies the fundamental aspects of parallel systems and aims at providing an integrated view of the various facets of software development on such systems: hardware architectures, programming languages and models, software development tools, software engineering concepts and design patterns, performance modeling and analysis, experimenting and measuring, application to scientific computing.

Course topics may include but are not limited to:

Part of the materials (multi-threaded programming, hierarchical memory) are shared between this course: CS4435/CS9624 - High Performance Computing: From Models of Computation to Applications and previous editions of CS 9535 and CS 4402.

Follow this link for various resources (software tools and tutorials, hardware documentation, conferences, other HPC course web sites, etc.) regarding this course and HPC in general (

Prerequisites for Undergraduate Students


Name:Marc Moreno Maza
Office:MC 327
Office Hours: Tuesday 2:30-4:30 pm and Thursday 1:30-3:30pm in MC 327
Phone:661-2111 x3741

Lecture Notes and Textbook

Notes of each lecture will be available on the course website, approximately one or two days after the oral presentation. There is no textbook.

Course Website

The course web site is accessible from:

Please check the site often for updates on lecture notes and errata. Also be aware that the course website is not a substitute for actual classroom attendance!

Course outline

Please find the course outlie here.

Lecture Topics

The list of topics will be something on the order of:

Relation of CS4402 to CS3101

CS3101 is a new course which has started in the 2012-2013 academic year. Its web site is This course is meant to provide the necessary theoretical background (architectures, models of computations, algorithms) to understand and practice high-performance computing.

CS3101 can be seen as an extension of other CS courses such as

thus providing the parallel dimension of Today's Computer Science.

Students who are taking CS4402 this 2014-2015 academic year may not have taken CS3101 in previous years since it only existed for one year. Therefore, for the 2014-2015 academic year, CS4402 is a self-contained course (as in previous years) where a sufficient subset of this theoretical background is presented.

Students who will take CS4402 in later years would be required to go thtough CS3101 first. This will allow CS4402 to cover more programming topics, in particular regarding distributed computimg and hardware acceleration technologies (GPUs, FPGAs). This change could be effective from the 2015-2016 academic year. Please ask the instructor for details.

Lecture Notes

  • An Introduction to Software Performance Engineering slides and handouts.
  • An Introduction to Multicore Programming. slides and handouts.
  • Multithreaded Parallelism and Performance Measures. slides and handouts.
  • Analysis of Multithreaded Algorithms. slides and handouts.
  • Parallel Prefix Sum slides
  • Cache memories: complexity analysis and practical issues. slides and handouts and C programs.
  • MetaFork: A Compilation Framework for Concurrency Platforms Targeting Multicores (by Xiaohui Chen). slides
  • Many-core Computing with CUDA. slides and handouts. and simple CUDA programs.
  • High-Performance Computing with CUDA. slides and handouts.
  • Parallel Random-Access Machines. slides and handouts.
  • A Many-core Machine Model for Designing Algorithms with Minimum Parallelism Overheads.
  • Synchronizing without locks. slides and handouts.
  • Problem Sets

  • Problem set 1
  • Problem set 2
  • Quiz corrections

  • Quiz 1: elements of corrections for a 2014 quiz.
  • A CUDA quiz and its elements of correction.
  • 2015 Quiz 2 with elements of corrections.
  • Class Schedule

    Lectures: 3 hours (Wednesdays 10:30am - 11:20am in UCC - Room 59 and Thursdays 6:00pm - 8:00pm in MC-316.

    Each student is expected to attend the lectures. In particular, quizzes (short written tests) may take place without notice in advance.

    Student Evaluation

    Assignment/Project/Quiz Schedule

    All dates are tentative and currently subject to change, although it is doubtful by any significant amount.

    Evaluation Technique Weight Posted Date (tentative!) Due Date (tentative!) Workload
    Assignment One1/6Tu, Jan. 28Fr, Feb. 14regular
    Assignment Two1/6We, Mar, 11We, Mar. 25regular
    Project 1/3Fr, Feb. 14Wed, Apr. 8heavy
    Quizzes1/9 eachN/AvariousN/A

    If for any reason the schedule given above cannot be adhered to, the assignment, project and quiz marks will be pro-rated. For instance, if an assignment has to be canceled for any reason, the remaining assignment weight will be prorated to add up to 1/3.)

    Every effort will be made to have assignments, projects and quizzes marked and handed back within 3 weeks of the hand-in date, preferably sooner.


    Quizzes may be held without being announced in advance.

    Quizzes will be closed book.


    Assignments will be due on the (tentative) dates listed above. The assignment will be sent by email to the instructor.

    Extensions will be granted only by the course instructor. If you have serious medical or compassionate grounds for an extension, you should take supporting documentation to the office of the Dean of your faculty, who will contact the instructor.


    A project topic is chosen by the student and approved by the instructor. Presenting in class research articles is a typical project. See the resource page for possible research articles to review and present in class. More articles can be proposed by the instructor on a particular topic of interest, upon request by the student. Each student must choose a project topic by March 14. The projects will be presented in class by the students during the last week of classes. Each presentation will consist of a 15 minute talk followed by questions for 5 to 10 minutes. A detailed project report will also be required and due by April 8.

    For CS9535, there is no Assignment Two, while the Project is of much larger scale and start during the Assignment Two period. CS9535 projects must deal with current research topics (in the scope of this course's contents) and can be related to the student thesis (in fact, this is recommended). The topic of each CS9535 project must be discussed individually with the instructor during the Assignment Two period. This implies a literature review to be done by the student and presented to the instructor during a face-to-face meeting. By March 14, (preferably earlier) the objectives of each CS9535 project must be well-defined by the student and approved by the instructor. This will give the mark for Assignment Two. Projects must then be implemented and will be presented in class during the last week of classes, as for CS4402. With this definition of the CS9535 project and CS9535 Assignment Two, the mark allotment is the same as far CS4402. That is, assignments, projects and quizzes constitute 1/3, 1/3 and 1/3 of the CS9535 mark, respectively.

    Computing Facilities

    Each student will be given an account on the Computer Science Department senior undergraduate computing facility, GAUL. In accepting the GAUL account, a student agrees to abide by the department's Rules of Ethical Conduct

    Note: After-hours access to certain Computer Science lab rooms is by student card. If a student card is lost, a replacement card will no longer open these lab rooms, and the student must bring the new card to a member of the Systems Group in Middlesex College Room 346.

    Feedback from Previous Students