ECE-451/ECE-566 - Introduction to Parallel & Distributed Programming

Fall 2005


Course Overview


Course Objective:

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. 

Instructor:

Manish Parashar, 
CoRE 628
(732) 445-5388
parashar@ece.rutgers.edu

Sumir Chandra, 
CoRE 627
(732) 445-6348
sumir@caip.rutgers.edu

Office Hours: Monday/Wednesday - 4:00 PM - 5:00 PM

When/Where:

Monday/Wednesday, 6:40 PM - 8:00 PM, CoRE 538

WWW:

http://www.ece.rutgers.edu/~parashar/Classes/05-06/ece451-566/

Prerequisites:

This course requires courses in data-structures, programming (C, C++) and computer architecture. Recommended courses are:
  • Undergraduate
    1. ECE 331: Computer Architecture & Assembly Language
    2. ECE 351: Programming Methodology - II
  • Graduate
    1. CS 503/513: Data Structures
    2. ECE 563/564 Computer Architecture

    Principal Texts:

  • 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.
  • Supplemental Texts:

  • 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 Network Programming and Distributed Computing, David Reilly and Michael Reilly, Addison Wesley, 2002, ISBN 0-201-71037-4.

  • Java Distributed Computing Jim Farley, O'Reilly Publishers, 1998. ISBN 1-56592-206-9.
  • 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.

  • Course Description:

    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.

    Tentative Lecture Outline:

    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)

    Grading Policy:

  • Undergraduate (ECE 451)
    1. Programming Assignments: 30%
    2. Midterm: 40%
    3. Final Project (Group of 2 Students): 30%
    4. Quizes/Class Participation: 10%
  • Graduate (ECE 566)
    1. Programming Assignments: 30%
    2. Midterms: 40%
    3. Final Project (Individual): 30%
    4. Quizes/Class Participation: 10%

    Manish Parashar, parashar@ece.rutgers.edu
    Department of Electrical & Computer Engineering
    Rutgers University