CS 87 Parallel & Distributed Computing

Schedule | Course Description | Course Goals | Grading | Reading List | Class Resources
 
Professor: Tia Newhall
Semester: Spring 2010
Time:
Location:
Office hours:

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, studens 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 and you will get some practice writing programs using these different paradigms. In distributed systems, parallel computing is used in cluster and grid environments, and distributed computing is used in client-server systems such as the WWW and peer-to-peer systems.

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, four 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.


Grading

TBA

Class Schedule

WEEK DAY ANNOUNCEMENTS TOPIC READING & ASSIGNMENTS
1 Jan 20   Introduction, Lexical Analysis Chapt. 1, 2-2.6
hw 0
hw 1
2 Jan 27 add/drop ends (Jan 30) Lexical Analysis, Regular Expressions, FSMs Chapt. 2.6, 3
hw 2
lab 0: project set-up
3 Feb 03   Parsing, CFG Chapt. 2.2, 2.4, 4-4.3
lab1: lexical analyzer
fri lab: svn
4 Feb 10   Top-Down Parsing, LL(1) grammers Chapt. 4-4.4
5 Feb 17   Parsing, Error Recovery, Syntax Directed Translation Chapt. 4.4, 2.3, 2.5, 5-5.3
hw 3
lab2: parser
6 Feb 24   ASTs, Syntax Directed Translation Chapt. 2.3, 2.5, 2.8, 5-5.3
7 Mar 03   Symbol Table and Run-time Environments Chapt. 2.7, 7-7.3
 

Mar 10

Spring Break

8 Mar 17   Parameter Passing, variable access Chapt. 7-7.3

Mar 19

Midterm Exam (Thursday evening, 7-9pm) room 102 Sci Ctr

9 Mar 24   Code Generation Chapt. 2.8, 6, 8-8.3
hw 4
fri lab: mips spim
lab3: code gen 1
10 Mar 31   Code Generation (cont.) Chapt. 6, 8-8.3
11 Apr 07   Code Gen, Bottom-up Parsing Chapt. 4.5-4.6

in-class Tuesday
lab4: code gen 2
12 Apr 14   Bottom-up Parsing, SLR(1) parse tables Chapt. 4.5, 4.6
hw 5
13 Apr 21 No class on Thursday (Apr 23) Compiler Optimization Chapt. 8.4-8.8
14 Apr 28   Compiler Optimization, Data Flow Analysis Chapt. 8.4-8.8, 9-9.2
 

May 12

Final Exam (9am-12pm) room 264 Sci Ctr

Topics may include: -->

Distributed Systems, Parallel systems, and Cluster links

Reading, Writing, Presentation Advice

Parallel and Distributed programming links