CS 87 Parallel & Distributed Computing

Schedule | Course Description | Course Goals | Textbook | Grading | Class Resources
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

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.


Class Schedule

note: this is a very tentative schedule: it will very likely be changed as we go
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.

Distributed Systems, Parallel systems, and Cluster links

Reading, Writing, Presentation Advice

Unix and programming resources