Basic Information
- Course Number: 263-2800-00L, 9 Credits
- Autumn 2024, lectures: Mo 10-12 in HG E 5.; recitation sessions Thu 14-16 in CHN C 14.
- Instructors: T. Hoefler (htor at inf, OAT V 15)
- TAs: Timo Schneider (timos at inf, OAT V 19.2), Calotoiu Alexandru (alexandru.calotoiu at inf, OAT V 14.2)
News
- 2024-09-09: Webpage online
Course overview
This course exposes students to the principal issues involved in software
development for parallel computing and discusses a number of approaches to
handle the problems and opportunities caused by the increased availability of
parallel platforms.
The course includes lectures, assignments, self-study, and a project. 50%
of your grade is determined by project work and 50% is determined by a written
exam; the exam is given during the official examination period, and there is no
makeup exam. Students must be able to program using Java and C/C++.
The course may cover: memory coherence and consistency models, implications
for language-specific memory models, Java memory model, models of parallel
programming and parallel program execution, performance models for parallel
systems, transactional memory, compiler extraction of parallelism, language and
compiler support for parallel programming, threads and their execution
environment, synchronization, and implementation issues of these topics.
Course schedule
Lectures are given Mondays 10:15 - 12:00 in HG E 5.
Recitation sessions take place Thursdays 14:15 -- 16:00 in CHN C 14.
Some of the recitation session hours will be devoted to other
activities (tutorials, reviews, etc) or will be devoted to group meetings.
Please watch the course Moodle for lecture and recitation slides, updates, and announcements. The first lecture will take place on the 23. 9. 2024 and the first recitation will take place on the 26. 9. 2024.
Moodle
You can ask questions about the course material on Moodle .
Assignments
Assignments are an important part of the course. You will not learn this
material from listening to a lecture alone and should do the assignments.
Note: Do not hesitate to write an email to your TA if you have trouble with the assignments!
Project
The project is an integral part of the course and accounts for 50% of the grade.
Proposed projects can be found here.
How it works
- Each project is done in teams of four or five.
- We will track progress during the semester
Timeline
- Before October 14: Find team (let TA know names). Find project. If you have a suggestion send email
with topic and rough plan and references to TAs and lecturer for approval. Note that this may take more than one
iteration.
- October 14: You have a team and an approved project.
- Before November 22: Mandatory progress presentation. A short presentation on the status of the project
It should include a brief summary what was done, how the work was divided, and initial results.
- Last week of semester (December 16-20): Project presentations with project supervisor.
- January 10: Project reports due.
Template for project report
Grading
50% of your grade is determined by the project, and the other 50% of the
grade is determined by a written 2 hr exam (Example Exam). You are not allowed to use any
electronic devices or books, notes, etc. in the exam.
Resources
There exist a large number of books on programming multi-processors, multi-core
system, or threads. These books may explore some topics in more depth than the
lectures, or may provide background information. None of these books is
mandatory. Copies of the first two books are "on reserve" in the CS library.
- Brian Goetz, Joshua Bloch, Joseph Bowbeer, Doug Lea, David Holmes, Tim
Peierls, Java Concurrency in Practice Addison-Wesley, 2006.
A good
introduction to using threads for Java programmers, assumes proficiency in Java
and concepts of object-oriented programming.
- Maurice Herlihy and Nir Shavit: The Art of Multiprocessor Programming
(Revised Reprint), Morgan Kaufmann June 2012.
A good book for advanced
students, thorough treatment of key concepts. Make sure you get the "revised
reprint" edition unless you enjoy re-discovering bugs & typos.