0% found this document useful (0 votes)
1 views

L0-Admin

CS3211 is a module focused on parallel and concurrent programming, teaching students to understand and apply concurrency in various programming languages including C++20, Go, and Rust. The course includes assessments such as quizzes, assignments, and a final exam, with a focus on practical applications and challenges of concurrent programming. By the end of the module, students will be equipped to handle concurrency issues and principles across different programming paradigms.

Uploaded by

Chang Jingyan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1 views

L0-Admin

CS3211 is a module focused on parallel and concurrent programming, teaching students to understand and apply concurrency in various programming languages including C++20, Go, and Rust. The course includes assessments such as quizzes, assignments, and a final exam, with a focus on practical applications and challenges of concurrent programming. By the end of the module, students will be equipped to handle concurrency issues and principles across different programming paradigms.

Uploaded by

Chang Jingyan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

CS3211 – Parallel and

Concurrent Programming
Admin Information
Teaching Staff – Lecturer
• Dr. Cristina Carbunaru
• Contact Information:

Phone number: 65168850


Email: ccris@comp.nus.edu.sg

• Comments / suggestions welcome

• Email in advance to book a consultation slot

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.

Concurrent programming is pervasive nowadays


and software development should be carefully crafted with this in mind.

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++

5 Concurrent Data Structures in C++ T2: Atomics in C++ By Fri: Release A1

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

• Make your code have better performance


• There are many aspects to performance

CS3211 L0 - Admin 12

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy