CSC 125/259: Concurrent and Parallel Programming
Dr. Chuck C. Liang
Office: Adams 102
Office Phone: (516 463) 5559
Email: cscccl@hofstra.edu
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:
- "The C Programming Language" second edition by
Kernighan and Ritchie
- "Unix Network Programming" by
W. R. Stevens
Class Web Page:
http://www.cs.hofstra.edu/~cscccl/csc125/
List of Major Topics (tentative):
- Introduction to Ada Programming.
- Concurrent programming concepts and implementation in Ada.
- Synchronous and Asynchronous operation.
- Concurrency in Java; Event Handling
- Models of Concurrency: shared memory v.s. message passing
- CCS and Pi-Caclulus (process algebras)
- Distributed synchronization with RMI.
- POSIX THREADS
- IPC in UNIX
- Parallel computer architecture (beowulf)
- MPI
- Parallel algorithms
- 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.