The University of Arizona

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.