Here are previous
announcments.
Course Overview
Parallel programming is becoming increasingly critical for a computer
scientist/engineer. New machines today are parallel, and tomorrow,
all machines are all going to be parallel, and a
sequential program will be a slow program.
There is already a movement that suggests that all students be taught
parallel programming in the introductory courses, and tech sequential
programming as a special case
(see Bleloch's
keynote speech at PPoPP 2009).
Patterson's
keynote
talk at LCPC 2006
eloquently makes that argument that we were, even then at the end of the
"La-Z-Boy Programming" era (here are
his slides).
This course will train you to be ready for this challenge. It will teach you
the basic concepts of writing, debugging, analyzing, benchmarking, and
designing parallel programs. It covers the two main paradigms: shared memory,
and message passing. We will also examine a number of parallel algorithms for
a range of problems. The class is intended to be very hands-on: you will
- write a number of programs (in C);
- run them on the CS department's Unix platforms and on a large scale
supercomputer at NERSC;
- measure the running time as a function of two parameters (problem size
and number of processors);
- analyze your observations; and
- write reports on your observations and analyses.
Because this class is a capstone course for the undergraduate Computer
Science curriculum, there is a significant writing component. This will be in
the form of detailed lab reports, and a term paper, for which you will receive
critical feedback on your writing and expository skills.
Prerequisites: CS 370 System Architecture and Software or
instructor consent. Another key prerequisite is intellectual
curiosity.
The tentative schedule of lecture topics, titles and due dates of the
Homework and Lab assignments and the associated reading material is also
posted there. Note that it is tentative and we may not be able to cover all
topics. The table will be modified as the course proceeds.
Details
- Class meets: Tuesday, Thursday 2:00-3:15 PM in Clark A 206.
- Instructor: Sanjay
Rajopadhye 340 CSB,
(email:
Sanjay.Rajopadhye@colostate.edu), (phone: 491-7323).
Office Hours: Please see
Sanjay's weekly
schedule.
- Graduate Teaching Assistants: TBA
Office Hours: TBA
- Textbook: Parallel Programming in C with MPI and OpenMP,
Michael J. Quinn (Mc Graw Hill, 2003 ISBN 0-07-282256-2). This textbook
is out of print in North America. If you are able to get it from any
other source (eBay, Amazon, international, etc.) that's fine, but we're
also working with the publisher to make the required chapters available to
students). This will cost about $30, and can be purchased at the CSU
bookstore (it's not there yet).
- Tentative Grading: Homework 45%, Labs 5%, Midterms 30%, Final
Project 20%.
- Most homeworks will involve writing programs and analyzing them,
both analytically and empirically. Assignments must be submitted at the
beginning of class on the due date. Programming assignments must be
checked in by the time indicated. Late assignments will not be accepted
(exceptions may be announced in class or posted).
- There will be two midterms and a project, but no final exam.
- Final Project For your final project, you will work with a
partner and parallelize a complete application, or do a comparative study
of different approaches to parallel programming. More on this later.
The university calendar has scheduled the final exam on
Thursday, December 18, 5:50-7:50 PM, in the classroom. We do not have a
final exam. Your final project report (the last thing that you will turn
in for this class) will be due on Wednesday, December 17 at 5:00 pm.
- Important Information: Be sure to read the Computer Science
Department Student Information
Sheet. You are expected to be aware of the policies outlined there.