CSC 125/259: Concurrent and Parallel Programming

Dr. Chuck C. Liang
Office: Adams 102
Office Phone: (516 463) 5559

Course Description:

A theoretical and practical introduction to concurrency and high-speed parallel computing and programming. Topics include Milner's Pi-calculus, the POSIX Thread Library, thread synchronization with semaphores and monitors, distributed synchronization. Course will also cover parallel computer architectures including Beowulf clusters, and scientific programming with the Message Passing Interface API. Programming will be in Ada, Java and C.

Prerequisite: CSC 17, calc 2 or equivalent.

Reference Material:

Class Web Page:

List of Major Topics (tentative):

  1. Introduction to Ada Programming.
  2. Concurrent programming concepts and implementation in Ada.
  3. Synchronous and Asynchronous operation.
  4. Concurrency in Java; Event Handling
  5. Models of Concurrency: shared memory v.s. message passing
  6. CCS and Pi-Caclulus (process algebras)
  7. Distributed synchronization with RMI.
  9. IPC in UNIX
  10. Parallel computer architecture (beowulf)
  11. MPI
  12. Parallel algorithms
  13. Map/Reduce and Hadoop

Exams, Assignments and Grading

Both undergraduate and graduate students are expected to attend all classes and complete all assignments on time. Late work will not be accepted. There will be regular programming assignments as well as one or two exams.

All material handed in must be in hard copy, and be well organized and legible. Unreadable material will not be graded. Consultation of outside sources (including books, friends) for completion of assignments must be pre-approved.
Students are required to keep copies of all programming assignments throughout the semester. When working in a group, all group members must posses current versions of the assignment.

Final Note: The contents of the this syllabus may be modified depending on the progress of the course.