L0-Admin
L0-Admin
Concurrent Programming
Admin Information
Teaching Staff – Lecturer
• Dr. Cristina Carbunaru
• Contact Information:
2 [ CS3210 - AY2122S1 - L0 ]
Teaching Assistants
• Grace
• Zhao Wei
• Jiefan
• Pep
• Anton
• Nicholas
• Yi Teng
• Peigeng
CS3211 L0 - Admin 3
Overview
• CS3211 teaches the challenging field of parallel and concurrent
programming
• The world is concurrent! (Joe Armstrong)
• At the end of the module
• Understand and confidently use concurrency in major programming
paradigms popular nowadays
• Write programs understanding the concurrency overhead
• Understand safety constraints, robustness, and
• Know the differences among different concurrency paradigms.
CS3211 L0 - Admin 4
Not just one topic…
• Cover new parallel and concurrent programming paradigms and programming languages
• C++20
• Go Lang
• Rust
• Full set of principles and challenges that need to be followed and addressed in any piece of concurrent
software.
CS3211 L0 - Admin 5
Concurrency is pervasive
• Not only in the real-world
• Our computers have
• Several cores + several types of memories
• Operating system
• Compilers
• Programming languages
• Concurrent code often runs in parallel
CS3211 L0 - Admin 6
Learning Outcomes
By the end of the module, the students should be able to
• explain the concurrent programming challenges.
• define and correctly use different synchronization mechanisms.
• apply concurrent programming principles in programs in different
programming languages.
• define and identify different issues in the concurrent programs.
• adapt the concurrent programming principles to new programming languages
or paradigms.
CS3211 L0 - Admin 7
Assessment
• 7% - Tutorial attendance
• 9% - 3 Quizzes
• 34% - 3 Assignments – individual or in pairs
• Modern C++ (C++20) ~18%
• Golang ~ 8%
• Rust ~ 8%
• 50% - In-person open-book final exam
CS3211 L0 - Admin 8
Tentative schedule – aka
Week Lecture (Tue, 12-2pm, LT16) Tutorial / Lab (Mon-Fri, BIZ2-0404) Deadlines
1 Introduction to Concurrency
2 Tasks and Threads in Modern C++
3 Synchronization, Mutexes, and Condition Variables in No class due to PH holiday
Topics covered
C++ (recording only, due to PH)
T0.5: Startup with Modern C++ (no class)
4 Atomics and Memory Model in C++ T1: Threads and Synchronization in C++
6 Testing and Debugging Concurrent C++ Programs T3: Debugging Sun, 8pm - Quiz 1
Recess
7 Concurrency in Go T4: Lock-free data structures Sun, 8pm – Assignment 1
8 Concurrency Patterns in Go T4.5: Startup with Go (not presented in class) By Fri: Release A2
T5: Introduction to Go
9 Classic Synchronization Problems in C++ and Go T6: Synchronization in Go Sun, 8pm - Quiz 2
10 Safety in Rust Mon-Thu: T7: Comparison of Synchro Problems in C++ / Go Sun, 8pm – Assignment 2
Fri: No class due to Well-Being Day; attend another tutorial slot
11 Asynchronous Programming in Rust T7.5: Startup with Rust (not presented in class) By Fri: Release A3
Mon: No class due to PH; attend another tutorial slot
Tue-Fri: T8: Introduction to Rust
12 Formal Verification and Model Checking T9: Asynchronous Programming in Rust Sun, 8pm - Quiz 3
13 Recap T10: Implementing Synchronization Primitives Sun, 8pm - Assignment 3
Fri: No class due to PH; attend another tutorial slot
9
Exam In-person Open-book Exam Mon, 5 May, 1pm - Exam
References
• C++ Concurrency in Action - Practical Multithreading, Second Edition
• Author: Anthony Williams
• First 6 weeks of the semester
CS3211 L0 - Admin 10
Minimal overlap with other modules
• CS3210
• CS4231
• CS4211(?)
CS3211 L0 - Admin 11
Why study this module?
• Industry writes concurrent code in many of the programming
languages that we cover
• Tour of different languages for concurrency
• Look at different PLs and how concurrency is achieved in these PLs
CS3211 L0 - Admin 12