COM S 430: Concurrent Programming in Practice
(3-1) Cr. 3.
Prereq: COM S 311, COM S 362 or COM S 363, ENGL 250, SP CM 212
A practical course in concepts, techniques, languages, and frameworks for concurrent and asynchronous systems. Concurrency fundamentals: threads, synchronization locks, waiting and notification, memory visibility. Immutability and thread confinement. Concurrent data structures and utilities, thread pools. Asynchronous programming with callbacks, futures, and message passing. Issues of aliasing, ownership and borrowing. Transactional memory, immutable and versioned data structures. Alternatives to threads and locks: event-driven systems, the actor model, CSP, coroutines. Students will investigate several non-mainstream languages supporting different concurrency models. Oral and written reports.