|
Office Hours: Wednesdays from 10am-12pm and by appointment Office: ENB 334 Email: anda at cse |
Announcements:
|
| syllabus | schedule | notes |
projects |
This class introduces the basics of parallel
computing and
distributed systems. The course will cover knowledge on two plans:
theoretical
and practical. On the theoretical realm, we will discover the basic
principles
that are at the foundation of parallel programming and distributed
systems. On
the practical realm, we will apply the theoretical foundations in
developing
programming projects in different parallel and distributed environments.
The theoretical side of the parallel computing sections of
this course will cover how to think of parallel programs, how to
approach the
design of parallel programs, performance metrics and limitations. This
material
will be accompanied by hands-on mini-projects that will introduce
students to
the practice of parallel programming with POSIX threads, Java threads,
MPI, and
Google’s MapReduce.
Prerequisites: for everybody:
comfortable with
programming in C and/or Java.
Undergraduate students: COP 4600 (Operating Systems)
Graduate students in CS: none
Graduate students outside CS: instructor’s permission (email anda@cse.usf.edu)
Required textbook:
Distributed Systems: Concepts and Design, George Coulouris, Jean Dollimore, Tim Kindberg. 4th Edition. Addison-Wesley, 2005. ISBN: 0-321-26354-5 [CDK]
Other textbooks
(recommended):
Patterns for Parallel Programming, Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill. Addison-Wesley Professional; 1 edition (September 25, 2004). ISBN: 0321228111 [MSM]
Principles of Parallel Programming, by Calvin Lin and Larry Snyder, Addison-Wesley; 1st edition (March 7, 2008). ISBN: 0321487907 [LS]
|
Week |
Course Material |
Hands-on Projects |
|
1 |
Background and Terminology for Parallel Programming [MSM 2] |
POSIX threads and Java threads |
|
2 |
Parallel Abstractions. Parallel Programming Languages [LS 5] |
|
|
3 |
Message Passing Interface [LS 7; WA 2; MSM App B] |
MPI |
|
4-5 |
MapReduce [OSDI 2004 MapReduce paper] |
Hadoop/MapReduce |
|
6 |
Characterization of Distributed Systems. System Models. [CDK1-2] |
|
|
7 |
Distributed Objects and Remote Invocation [CDK5] |
|
|
8 |
Operating Systems Support [CDK6] |
PlanetLab |
|
9 |
Distributed File Systems [CDK8] |
|
|
10 |
Name Services [CDK9] |
|
|
11 |
Time and Global State [CDK11] |
|
|
12 |
Coordination and Agreement [CDK12] |
|
|
13 |
Transactions [CDK13-14] |
Amazon Web Services |
|
14 |
Web Services [CDK19] |
|
|
15 |
Final project presentations |
Grading and Attendance
There will be frequent small assignments with questions on reading material and problems. The 5 programming projects are more involved and will require comfort with programming environments (patience, debugging, reading man pages, etc). There will be a final project that can be a continuation of one of the 5 programming projects. There will be no exams or quizzes.
Grading system: