CS378 Concurrency

Course Details

Course Name: CS378 -- Concurrency
Unique Number: 51665
Lectures: TTH 9:30-11AM GDC 5.302
Class Web Page: http://www.cs.utexas.edu/users/rossbach/cs378
Instructor: Chris Rossbach
TA: Joshua Landgraf
Text: Principles of Parallel Programming (ISBN-10: 0321487907)

Course Objectives

In modern systems, concurrency is no longer a niche area reserved for specialists and experts, but a cross-cutting concern to which all designers and developers are exposed. Its increasing prevalence has been accompanied by a proliferation of new technologies and programming models that each address long-standing challenges of programmability and performance in the presence of parallelism in unique ways.

The objective of this course is to provide students with strong background on concurrency fundamentals along with experience with a diversity of both classical and modern approaches to managing and exploiting concurrency, including shared memory synchronization, parallel architectures such as GPUs, as well as distributed parallel frameworks such as MPI and map-reduce. Material will be presented through readings and discussion of background material as well as occasional recent research papers when appropriate. The course requires a number of programming and project assignments to provide direct experience with design, programming, and measurement methodologies for concurrent systems.

The course assumes background commensurate with that provided by an undergraduate course on operating systems such as UT's CS 439. The course will consider the following topics:

Teaching Assistant

Joshua Landgraf GDC 6.416 Thursday 4pm-5pm


Chris Rossbach GDC 6.508 Tuesday 1:00pm-2:00pm, or by appointment

Course Materials

Readings. Readings for the course will be drawn from the textbook Principles of Parallel Programming by our own Calvin Lin and his collaborator Lawrence Snyder. The book should be available at the campus bookstore. I believe it is expensive. Good education is priceless, but if cost is truly an issue for you, please discuss with me rather than avoid taking the class. We will also read journal, conference, and other papers that describe the history and state of the art for various aspects of concurrency, and materials will be provided online for this purpose.

The preliminary list of readings and schedule is available here. You must do the readings before class.

Online resources. I have created CS 378 Rossbach in piazza (piazza.com) for this course (here). I will use it mostly for announcements and as a discussion forum, but feel free to provide feedback, and suggestions. Similarly, feel free to use email for questions and discussion. Comments and thoughts about proper use of piazza can be found here.

Class Participation

In-class Presentation

The course includes a final project, which can be done individually or in pairs. During one of the final class meetings, each project group is responsible for a presentation about their project.

Programming Assignments

The course requires several programming assignments that will give you experience working with a number of different concurrency paradigms and programming models, and will also expose you to methodological issues such as how to model, measure, report, and understand performance.

The goal of the assignments is to demystify concurrency and convince you that concurrency is a powerful tool at your disposal. Sometimes puzzling behavior can be understood and worked around by reading and understanding the documentation or source code of a framework or runtime.

While most of the assignments will use Linux and can be completed on CS public machines, not all of the labs have a platform/OS dependency, and some may require hardware (GPUs) that is only available on a small set of machines. I'm open to you using your own hardware and software stack of preference when the objectives can easily be achieved with a different platform or software stack. Similarly, I can give out accounts on my research group's machines if and when other solutions are not readily available.

Independent Inquiry

This course carries the Independent Inquiry flag. Independent Inquiry courses are designed to engage you in the process of inquiry over the course of a semester, providing you with the opportunity for independent investigation of a question, problem, or project related to your major. This course carries this flag because the class involves a final project which represents a substantial portion of your grade, and which will be based on the independent investigation and presentation of your own work--specifically a project of your choosing for which concurrency is a fundamental or cross-cutting concern.


Your final grade for the course will be based on the following approximate weights:

Course Policies



Special offer: you can write your own exam questions! Submit a question with your solution in advance of the exam, and if we like it, it will appear on the exam.

Late Policy

Last updated: 2018-01-30 14:19:22 -0600 [validate xhtml]