COMS 4300: Concurrent Programming in Practice
Credits: 3. Contact Hours: Lecture 3, Discussion 1.
Prereq: COMS 3110 and COMS 3620 or COMS 3630 and ENGL 2500 and SPCM 2120
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.