Professor:
Tia Newhall
Semester: Spring 2010
Time:lecture: 12:20 MWF, lab: 2-3:30 F
Location:264 Sci. Center (lab 256)
Office hours: 2-3:00 W, and by appointment
Course Description
This course covers a broad range of topics related to parallel and distributed
computing, including parallel and distributed architectures and
systems, parallel and distributed programming paradigms, parallel
algorithms, and scientific and other applications of parallel and distributed
computing. In lecture/discussion sections, students examine both
classic results as well as recent research in the field. The lab portion
of the course includes programming projects using different programming
paradigms, and students will have the opportunity to examine one course
topic in depth through an open-ended project of their own choosing. Course
topics may include: multi-core, SMP, MMP, client-server,
clusters, clouds, grids, peer-to-peer systems, GPU computing,
scheduling, scalability, resource discovery and allocation,
fault tolerance, security, parallel I/0, sockets, threads, message passing,
MPI, RPC, distributed shared memory, data parallel languages,
MapReduce, parallel debugging, and applications of parallel and distributed
computing.
Class will be run as a combination of lecture and seminar-style discussion.
During the discussion based classes, students will read research
papers prior to the class meeting that we will discuss in class.
During the first part of the course, we will
examine different parallel and distributed programming paradigms.
During the second part of the course, students will propose and carry
out a semester-long research project related to parallel and/or
distributed computing. The department's gigabit cluster, two eight processor
workstations, as well as the CS lab machines, are available for course
projects.
Previous course work in Operating Systems, Networking, Databases, or
Architecture is helpful, but not necessary for taking this course.
Course Goals
- Analyze and critically discuss research papers both in writing and
in class
- Formulate and evaluate a hypothesis by proposing, implementing
and testing a project
- Relate one's project to prior research via a review of related
literature
- Write a coherent, complete paper describing and evaluating a
project
- Orally present a clear and accessible summary of a research work
- Understand the fundamental questions in parallel and distributed
computing and analyze different solutions to these questions
- Understand different parallel and distributed programming
paradigms and algorithms, and gain practice in implementing and
testing solutions using these.
Required Textbook
Principles of Parallel Programming, by Calvin Lin, Larry Snyder
Addison-Wesley, 2008
textbook errata
We will also read a number of research papers that will be available
through ACM and IEEE digital library.
Grading
- Class Participation and Paper Summaries: 20%
- Labs: 40%
- Final Project: 40%
Class Schedule
note: this is a very tentative schedule: it will very likely be
changed as we go
| WEEK |
DAY |
ANNOUNCEMENTS |
TOPIC |
READING & ASSIGNMENTS |
| 1 |
Jan 18 |
|
Introduction, Parallel and Distributed Computing |
Chapt. 1, 2 lab 1 Friday lab |
| 2 |
Jan 25 |
|
Parallel and Distrubuted Architectures, Socket programming |
Chapt. 2 lab 2 Friday lab |
| 3 |
Feb 01 |
|
Parallel Performance, Shared Memory and Threads |
Chapt. 3, start chapt 4 |
| 4 |
Feb 08 |
|
Parallel Algorithms |
Chapt. 4, 11 (p.305-310) textbook errata (p.145-179 pthreads) lab 3 |
| 5 |
Feb 15 |
|
Parallel Algorithms, OpenMP |
Chapt. 5 (p.193-199: openMP) Reading for Friday Reaction Notes
lab 4 |
| 6 |
Feb 22 |
|
Scalable Algorithms, Message Passing |
Chapt. 5, Chapt. 7 (MPI) Reading for Wed and Fri |
| 7 |
Mar 01 |
course project part 1 course project part 1 |
MPI and Teragrid |
week 7 in-class work
Course Project Part 1: Proposal and Annotated Bibliography |
| |
Mar 08 |
Spring Break |
| 8 |
Mar 15 |
|
Distributed Systems, MapReduce, Clusters |
Reading for week 8 |
| 9 |
Mar 22 |
proj proposal due (Mar 26) |
Distributed Coordination, Security |
Reading for week 9 |
| 10 |
Mar 29 |
|
Distributed File Systems, Security |
Reading for week 10
Course Project Part 2: Midway Report and Presentation |
| 11 |
Apr 05 |
proj progress reports |
DFS |
Reading for week 11 |
| 12 |
Apr 12 |
|
Distributed Shared Memory, Peer-to-Peer |
Reading for week 12
Course Project Part 3: Final Report, Presentation, Demo |
| 13 |
Apr 19 |
|
Cloud Computing and Final Project Presentations |
Reading for week 13 Presentation Schedule |
| 14 |
Apr 26 |
|
Final Project Presentations |
Presentation Schedule |
| 15 |
May 03 |
Seminar Dessert Party Monday May 3, 7:30pm Robot Lab |
Final Project Demos |
Sign-up for a Demo time slot |
| 16 |
May 10 |
Written Reports Due by noon |
Final Written Reports Due by noon Monday May 10 |
Turn in a hardcopy of your written report to Bridget and email me an electronic version by noon Also email me a tar ball of your project code by noon. |
Resources
Distributed Systems, Parallel systems, and Cluster links
Reading, Writing, Presentation Advice
Unix and programming resources
-
My CS and Unix Documentation make, tar, cvs, rcs, debugging tools,
editors, programming guides and tutorials, linux and parallel
computing links, ...
-
CS Department's Unix Help Pages
-
CS Project Etiquette Tools and Guidelines for using shared CS
resources to run long-running, intensive applications.
-
Tools for running experiments and collecting performance measurements
condor, screen, nice, profiling tools, script, ...