CS 636: Analysis of Concurrent Programs
Analysis of Concurrent Programs
- Programming Language Basics: Syntax, Semantics, Types
- Review of concurrent programming paradigms: shared-memory, message-passing, partitioned global address space
- Synchronization primitives: locks, monitors, semaphores, flags, barriers, condition variables
- Concurrency bugs: data races, race conditions, atomicity violations, deadlocks. livelocks
- Consistency models: strict consistency, sequential consistency, linearizability (atomic consistency), relaxed memory models, memory fences
- Dataflow analysis for concurrent programs
- Deductive Verification: Hoare Logic, Owicki-Gries, Rely-Guarantee, Concurrent Separation Logic
- State-space reduction techniques: Formal modeling of a concurrent system, Mazurkiewicz traces, Partial-Order reduction techniques (persistent sets, sleep sets), dynamic partial-order reduction
- Dynamic Analysis: Fuzzing, probabilistic concurrency testing, statistical analysis
- Bounded model-checking for concurrent programs
- Analysis of message-passing programs