Courses
CS 422: Principles of Concurrent Programming
| Objective |
- To learn how to design, understand, and use parallel and distributed
programs.
|
| Pre-Conditions |
- [Math243] Discrete math: formal logic (e.g., predicates, axioms, inference
rules) sets, graphs
- [CS340] Implementation concepts: stacks, memory
layout, contexts, OS kernels
- [CS127b/CS227] Language
concepts: procedural languages, parameter passing methods, recursion, abstract
data types
- [CS342] Data structures and algorithms: linked
lists, trees, graphs, dynamic memory, basics of complexity, divide and
conquer
- [CS340] Hardware concepts: processors, caches,
I/O, interrupts, disks
- [CS318] Facility with Unix: make, separate
compilation,
|
Post-Conditions
(Topics) |
- [1 week] basics of concurrency and synchronization
- [1 week] axiomatic programming logic (program proofs); safety and
liveness
- [1 week] critical sections
- [1 week] barriers and data parallel programming
- [3 weeks] semaphores, conditional critical regions, monitors
- [1 week] parallel programming: applications; hardware; techniques
- [2 weeks] message passing: asynchronous, synchronous, RPC, rendezvous
- [1 week] the SR language (actually spread throughout the term)
- [2 weeks] distributed programming paradigms: filters, client/server,
heartbeat, probe/echo, broadcast, tokens
- [1 week] additional languages (Linda, Occam) and systems (PVM)
|
Authored by Greg Andrews.
Last revised on 29 April 1997 by John Hartman.