|Course Name:||CS378H -- Concurrency: Honors|
|Lectures:||TTh 9:30AM-11:00AM Zoom!|
|Class Web Page:||http://www.cs.utexas.edu/users/rossbach/cs378h|
|Text:||Principles of Parallel Programming (ISBN-10: 0321487907)|
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:
|Karthik Velayutham||karthik DOT velayutham AT gmail DOT com||Zoom!||Monday/Wednesday 3:00pm-4:00pm, or by appointment|
|Chris Rossbach||rossbach AT cs DOT utexas DOT edu||Zoom!||Tuesday 11:00am-12:00pm, or by appointment|
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 378H: Concurrency: Honors" 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 is very important to the success of the course. While I will cover a lot of material essentially in lecture format, it is critical to keep in mind that the issues are difficult, and the ideas we will discuss almost always involve tradeoffs (e.g. between performance and programmability, etc.). Simply listening passively during class is unlikely to serve you well, while being courageous and asking/answering questions will.
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, FPGAs) 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.
Your final grade for the course will be based on the following approximate weights:
The student code of conduct is here. Intellectual dishonesty can end your career, and it is your responsibility to stay on the right side of the line. If you are not sure about something, ask.Critically, use of external repository services such as github.com, gitlab.com, and bitbucket.org should be done with care to keep repositories private. Viewing another student's solution to a lab in this class is considered plagiarism. Maintaining public repositories for solutions to labs in this class will be considered cheating as well.
Last updated: 2021-01-19 09:25:27 -0600 [validate xhtml]