Home > Teaching > CS 636: Analysis of Concurrent Programs

CS 636: Analysis of Concurrent Programs

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