The objective of this course is to introduce the fundamentals of parallel and distributed programming. This course will concentrate the basic algorithmic, programming, and software engineering issues associated with the development of parallel/distributed applications.
Manish Parashar,
CoRE 628
(732) 445-5388
parashar@ece.rutgers.eduSumir Chandra,
CoRE 627
(732) 445-6348
sumir@caip.rutgers.eduOffice Hours: Monday/Wednesday - 4:00 PM - 5:00 PM
Monday/Wednesday, 6:40 PM - 8:00 PM, CoRE 538
http://www.ece.rutgers.edu/~parashar/Classes/05-06/ece451-566/
This course requires courses in data-structures, programming (C, C++) and computer architecture. Recommended courses are:
Undergraduate
- ECE 331: Computer Architecture & Assembly Language
- ECE 351: Programming Methodology - II
Graduate
- CS 503/513: Data Structures
- ECE 563/564 Computer Architecture
Lecture Notes Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers, Barry Wilkinson and Michael Allen, 2nd Edition, Prentice Hall, 2005, ISBN 0-13-140563-2. Tools and Environments for Parallel and Distributed Computing, Salim Hariri and Manish Parashar, Wiley-Interscience, 2004, ISBN 0-471-33288-7.
Introduction to Parallel Computing, Ananth Grama, Anshul Gupta,George Karypis and Vipin Kumar, Addison Wesley, January 2003, ISBN 0201648652.
Parallel Programming with MPI, Peter Pacheco, Morgan Kaufmann, 1996, ISBN 1-55860-339-5.
Parallel Programming in C with MPI and OpenMP, Michael J. Quinn, McGraw Hill, 2004, ISBN 0-07-282256-2.
Java Distributed Computing Jim Farley, O'Reilly Publishers, 1998. ISBN 1-56592-206-9. Java Network Programming and Distributed Computing, David Reilly and Michael Reilly, Addison Wesley, 2002, ISBN 0-201-71037-4.
Foundations of Multithreaded, Parallel, and Distributed Programming, Gregory R. Andrews, Addison Wesley, 2000, ISBN 0-201-35752-6.
Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering, Ian Foster, Addison Wesley, ISBN 0-201-57594-9.
This course will introduce students to fundamentals parallel and distributed programming. The course will cover the current parallel and distributed architecture, basic issues in parallel/distributed application development, parallel/distributed algorithms, data-structures and programming methodologies, and current technologies. The course will be a "hands-on" course with programming assignments and a final project.
Introduction to Parallel and Distributed Programming (2 Lectures)
Parallel Computing – Architectures, Paradigms & Issues (2 Lectures)
Parallel Programming using Message Passing (4 Lectures)
Parallel Programming using Shared Memory (4 Lectures)
Parallel Algorithms & Applications (4 Lectures)
Introduction to Distributed Computing (2 Lectures)
Distributed Programming Issues and Algorithms (4 Lectures)
Distributed Computing Tools & Technologies (4 Lectures)
Metacomputing and the Computational Grid (2 Lectures)
Undergraduate (ECE 451)
- Programming Assignments: 30%
- Midterm: 40%
- Final Project (Group of 2 Students): 30%
- Quizes/Class Participation: 10%
Graduate (ECE 566)
- Programming Assignments: 30%
- Midterms: 40%
- Final Project (Individual): 30%
- Quizes/Class Participation: 10%