Basic Information
- Course Number: 263-2800-00L, 9 Credits; Course Number: 263-2800-10L, 4 Credits;
- Autumn 2026, lectures: Mo 10-12 in HG E 5.; recitation sessions Thu 14-16 in CHN C 14.
- Instructors: Calotoiu Alexandru (alexandru.calotoiu at inf, OAT V 14.2)
- TAs: Timo Schneider (timos at inf, OAT V 19.2)
News
- 2026-09-11: 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 21. 9. 2026 and the first recitation will take place on the 24. 9. 2026.
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
For the 9 CP version of the course, the project is an integral part of the course and accounts for 50% of the grade.
Proposed projects can be found here.
The 4 CP version of the course has no project component.
How it works
- Each project is done in teams of four or five.
- We will track progress during the semester
Timeline
- Before October 12: 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 12: You have a team and an approved project.
- Before November 20: 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 14-18): Project presentations with project supervisor.
- January 8: Project reports due.
Template for project report
- Hard page limit: 8 pages. Template below.
- Everybody reads this and this.
- For latex use: report.zip.
- For word use (discouraged): report-word.doc.
- You are responsible for the report and the code you develop during the project regardless of the tools used during the project. Responsible use of agents and LLMs is encouraged.
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.