CSE 424

Course Code: CSE 424
Course Name:
Parallel Programming
Credit Hours:
3.00
Detailed Syllabus:

Parallel Models: PRAMs; machines- SIMD; architectures’ meshes, arrays, hypercubes; basic algorithms- Pointer jumping, prefix computation, Loader election; sorting- Cole’s sorting networks; Numerical methods- matrix operations. PDE solutions; Graph problems- connected components, shortest paths, spanning trees; combinatorial search; the class NP and P-completeness.

Writing distributed programs: socket related system calls (stream and datagram), Remote Procedure Calls (RPC), Writing network utilities. Using utilities for the development, of distributed programs. Demonstration/ hands-on-experience on the issues involved in managing large network systems. Study of the performance of Ethernet LAN under varying load conditions.

Process oriented versus object based Model:. Synchronization Mechanisms: Threads, the critical section problems, some important Synchronization problems, language and abstraction mechanism for synchronization, axiomatic verification of mutual exclusion.

Architecture of Distributed systems: Communications Networks, Client/server architecture etc, Logical clocks and ordering of messages. Distributed mutual exclusion and dead lock detection algorithms and their analysis. Agreement protocols’, fail stop and non-fail stop protocols. Distributed resource management and scheduling failure Recovery and Fault Tolerance: Backward and Forward error recovery, operation based and state based approach, synchronous and asynchronous check pointing; Commit protocols, Voting protocols, Resiliency through primary site and modular redundancy approaches, Reliable Communication, Case studies: Tragon/32 Fault tolerance under UNIX.