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 Communication
- Message Passing and RPC
- Shared Memory programming and Distributed Shared Memory programming
- Time, event ordering, and agreement in distributed systems
- Distributed State, Naming
- Scheduling
- Fault Tolerance
- Security
- Clusters
- Grid Computing
- Peer-to-peer systems
- Distributed File systems
-->
Resources
Distributed Systems, Parallel systems, and Cluster links
Reading, Writing, Presentation Advice
- Tips for Reading Research Papers
- Research and Writing Guide
This is written as a CS honors thesis guide, but is applicable
to the type of research and writing that you will do for your course
project. Look at the "Getting Started" part for links to starting
points for finding related work to your project.
- Oral Presentation Guide
Guidelines for preparing a research talk, and links to other
oral presentation advice.
Parallel and Distributed programming links
-
Links to Parallel and Network Programming Resources MPI, OpenMP,
posix threads, socket programming, CUDA...
-
My CS and Unix Documentation make, tar, cvs, rcs, debugging tools,
editors, email, 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