Module 19 Study Guide
Learning Objectives
- Distinguish between instruction-level, statement-level, unit-level, and program-level concurrency
 - Summarize the history of multiprocessor architectures (at an overview level)
 - Distinguish between physical and logical concurrency
 - State reasons for using concurrency
 - Explain fundamental terms in concurrency, including lightweight task(thread), and heavyweight task (process)
 - Distinguish cooperation from competition synchronization
 - Explain the terms race condition, liveness, and deadlock
 - Explain how task scheduling works
 - Explain what a semaphore is and how it can be used to provide synchronization
 - State the advantages and disadvantages of semaphores
 - Explain what a monitor is and why it is superior to a semaphore
 - Explain and contrast different approaches to error handling
 - State advantages of including exception handling in a programming language
 - Contrast generic GOTO statements with formal exception handling
 - Explain how event handling is similar to error handling
 - Contrast event loops and the observer pattern for implementing events
 
Resources
- CPL 13-14
 - Slides: Lam
 
Lab
Please complete the lab for this week: concurrency and error handling
Deliverables
The test for this module will take place in class on Friday. You will have an opportunity to re-take a different version of the same test next week. If you choose to do the re-take, your grade for this module will be the higher of the two scores.