Concurrency and Parallelism Course Schedule
- Understand the differences between concurrency and parallelism
- Learn to create a simple threaded Python program
None
- Create a simple threaded Python program (Due next Tuesday)
- Understand race conditions and why they happen
- Learn how to avoid race conditions with locks
- Learn to use C++11 threads
- Create a program using C++11 threads (Due next Thursday)
- Independently learn about different lock types (Discussion next Tuesday)
- Learn how to avoid race conditions without locks
- Learn about different locking problems and how to avoid them
- Independently learn how to use PThreads in C++
- Know what OpenMP is
None
- Locking problem presentations (Due next Tuesday)
- Create a program using PThreads (Due next Thursday)
- Learn how to use OpenMP
None
- Create a program using OpenMP (Due Thursday of Week 6)
- Independently learn common threading patterns (Discussion next Tuesday)
- Learn common threading patterns
- Make progress on OpenMP project
None
None
- Understand where threading is appropriate and useful
- Understand how threading benefits different kinds of tasks
- Understand patterns used with I/O bound threading
- Learn strategies for dividing work into threads
- Learn about at least 3 methods of IPC covered in the reading (Discussion next Tuesday)
- Understand how multiprocessing is different from multithreading
- Understand how interprocess communication relates to multiprocessing
- Create an application that implements some IPC other than pipes (Due Thursday Week 9)
- Learn about more methods of IPC
- Make progress on IPC assignment
None
- Begin design work on final project
None
None
- Understand how multiprocessing and distributed computing are related
- Learn sufficient networking to create a distributed system
None
None
- Understand different distribution architectures
None
- Create a client/server program that handles multiple clients (Due next Thursday)
TBA
TBA
None
TBA
TBA
None
- Demonstrate your ability to create a more complex program using concurrency and/or parallelism
None
None