CMSC 483/691p: Parallel and Distributed Processing

Spring 2006 Course Syllabus

  • Instructor: Dr. Howard E. Motteler
  • Class Time: MW 4:00-5:15, MP 105
  • Office Hours: MW 5:30-6:30 and by appointment
    • office: Physics 428
    • phone: 410 455 1936
    • e-mail: motteler@umbc.edu
  • Course webpage: http://www.umbc.edu/~motteler/parpro
  • Text: Parallel Programming: Techniques and Applications
    Using Networked Workstations and Parallel Computers,
    second edition, Wilkinson and Allen, Prentice Hall, 2004
The goal of the course is to introduce students to parallel and distributed processing, including both theory and hands-on experience with state-of-the-art hardware. The prerequisite is undergraduate operating systems. Due to the importance of matrix operations in parallel processing, undergraduate linear algebra is strongly recommended. If you are not sure about your background, ask.

The course will for the most part follow the text, with some outside material added on architecture, languages for parallel processing, and systems administration. The topics to be covered are:

  • An overview of parallel computing
  • Languages and programming environments
  • Message-passing computing
  • Embarrassingly parallel computations
  • Partitioning and divide-and-conquer strategies
  • Pipelined computations
  • Synchronous computations
  • Load balancing and termination detection
  • Programming with shared memory.
  • Algorithms and applications
Material from the section on algorithms and applications will be interspersed with the topics above. This material includes matrix multiplication, solving systems of equations, matrix iterative methods, sorting and searching, image processing, and optimization.

There will be regular problem sets, three or four projects, a midterm, a final exam, and a short review or survey paper assigned. Many students find the projects are the most difficult part of the course. Students may propose their own projects, if a detailed description and design sketch is first submitted, but ask beforehand about this. Coursework is divided up as follows.

projects 40% 200 points
midterm exam 20% 100 points
final exam 20% 100 points
homework 20% 100 points
------------- ----- -----------
total 100% 500 points

I don't grade on a curve, and try instead to rely on experience and student feedback to balance the workload as the course proceeds. I will use the following break points: 85%=425 points gets you an "A", 70%=350 points a "B", 55%=275 a "C", and so on. All points have the same value, so an exam point is worth the same as a project, paper, or homework point; that way you can always add up your points to date and know how you are doing. The 483 and 691p students will cover the same material but students enrolled for 483 get 50 extra points added to whatever their total would be otherwise, just for showing up.

The course webpage is at http://www.umbc.edu/~motteler/parpro. This has more detailed information and other course resources, and is updated regularly with class announcements, projects, assignments, current readings, and examples.