CSCI 8730: Parallel and Distributed Computing, Spring 2008
Course Overview
The course will focus on compile- and run-time techniques applied to fundamental
parallel and distributed computing problems. In general,
tentative topics along with amount of time spent on them are:
-
overview, parallel architectures, writing parallel programs (3 weeks)
-
cache coherence protocols, distributed shared memory (1 week)
-
parallelizing compilers (2 weeks)
-
thread-level speculation and run-time parallelization (1 week)
-
data distribution on both clusters and NUMA machines (2 weeks)
-
modeling parallel program behavior (1 week)
-
parallel performance evaluation (1 week)
-
energy-aware cluster and parallel computing (1-2 weeks)
You can find the class web page at: http://www.cs.uga.edu/~dkl/8730/Spring08/syllabus.html
Recommended Prerequisite: CSCI 4730 or 6730 (Operating Systems)
Note: If you don't have the prerequisite, see me; your background may be
just fine.
Lectures: TR, 3:30-4:45pm and M 3:35-4:25, TBA
Final Exam: Tuesday, May 6, 3:30-6:30pm
Office: GSRC 545, 542-9269
Office Hours: M 8:30-10; R 1:45-3:15, and by appointment
Office hours are for you; they will be scheduled such that as many people
as possible do not have a conflict with them. Please do not hesitate to
come to my office. Office hours will usually be very busy right before
an assignment is due; if you start the assignments early and come to my
office well before they are due, you have a better chance of avoiding the
rush. Due to my busy schedule, I cannot accept drop-ins outside of office
hours.
I will also be available by appointment; please send me email to set
one up. Please note that I will not be able to accept all requests for
appointments, especially around program due dates. If you do wish to see
me outside of office hours, you need to make an appointment. I am more
likely to accept appointments on Tuesdays and Thursdays --- Wednesdays and
Fridays are my research days.
Finally, please keep in mind that office hours are not a substitute
for missed lectures.
Purpose of Course
The purpose of this course is threefold: (1) to introduce students to current
research in the field of parallel and distributed computing, (2) to teach
students to read, write, and think critically, and (3) for each student
to carry out an independent research project related to the material covered
in the course.
Papers will generally be drawn from this list. Note that this list
is evolving, so papers that we eventually read may not currently
appear on this list.
Class Style
Class will be structured as an open discussion. There will be lectures
as well as class discussions in which everyone is expected to participate.
In
fact, class participation is part of the grade. I will be asking
questions to students at random, in a modified Socratic method of instruction.
The beginning of the class will be primarily lecture based, as I will
get everyone up to speed on parallel computing. So, don't worry if you
don't know anything about parallel computing more than what you learned
about threads in operating systems. Later, students will present the material.
There is no text for this class; reading will be drawn from the literature.
All students will be expected to read all papers. On days
where students will present the material, the presenting student
will be chosen at random, at the beginning of class. Each time you
have not read the paper or cannot present the material in a reasonable
manner, your name will be entered on a "failed to present" list. If
at the end of the semester, you appear on this list more than once, you
will lose one full letter grade. Note: this has never happened
in 10 years of teaching this class.
You will be graded on your presentation,
and receive detailed comments from me.
There will be a midterm examination that covers the papers and programming
assignments.
Near the end of the course, I will evaluate the composite performance
of (1) students presenting papers, (2) students asking questions
of other students, (3) programming assignments, and (4) the midterm. If the
performance is not up to standards, there will be a final exam.
There will also be unannounced quizzes covering the papers, and
I reserve the right to request written reviews of papers if necessary.
I also reserve the right to, at some point in the class, assign presentations
of papers to students ahead of time and require a PowerPoint (or like tool)
presentation.
Course Attendance
Attendance at lectures is required. Please clear any absence with the instructor
first. Class participation comprises part of the course grade, and attendance
is part of that.
Programming Assignments
There will be at least two programming assignments. These will consist
of implementations of parallel algorithms; one will be a shared-memory
parallel program, and the other will be a distributed-memory parallel program.
For each, you will also perform experimental studies and submit a report.
The report is expected to be of high quality and prepared by a text formatter.
A writing guide is available to assist you.
New:
things to avoid when writing.
For ease of experimentation, it is useful to simulate dynamically sized
arrays in C. A brief dynamically sized array guide
may be useful to you.
Course Project
The most significant part of this course will be the project. You will
have approximately eight weeks to complete it. Projects will be related
to the course theme and must be a significant undertaking. No project may
be done without prior consent of the instructor.
The ultimate goal of a project is to produce a high-quality, publishable
paper. This is often very difficult in the short time of one semester;
however, it is clearly possible to produce something that results in a
high-quality, publishable paper with a summer's worth of work.
Grading
Grades will be assigned on the usual A-F basis. Grading will be absolute;
there will be no "curve". Achieving a 90% will guarantee an "A",
80% a "B", and so on. However, when the final grades are given, it could
be the case, for example, that an 85% gets an "A". Do not confuse this
with a curve, however. If everyone does A work (as I hope), everyone will
get an A. If everyone does C work, everyone will get a C. So that you know
your grade at all times, four fictitious students will be given grades
for each assignment and exam. These students will be named "Min A", "Min
B", etc., indicating the minimum score for each grade.
The course grade will be determined as follows:
-
Unannounced quizzes (plus written reviews, if required): 05%
-
Class presentations: 10%
-
Programming assignments: 15%
-
Midterm: 20%
-
Class participation: 10%
-
Project: 35%
Please note that these are tentative. Relative weights of assignments
may change slightly. A final exam, if given, will be worth at least 15%
and will force a rebalancing of weights. Furthermore, if the class
does so well that quizzes and reviews are not required, the 15% will be
reallocated mostly between presentations and participation (this would
be beneficial to you).
Because class participation is obviously subjective, I will inform you
of how you are doing in this category several times througout the semester.
Note that you do not get credit for just saying the first thing that comes
into your head; I am looking for helpful participation. For
example, volunteering to answer questions, and doing so correctly, will
help a lot. Answering incorrectly will help a little (it will never
hurt). Also, if I assign a problem during class to be answered, and
you volunteer to answer it, that will also help your grade (assuming that
you actually carry out the task).
When you do presentations, I will immediately inform you of your grade
on that particular presentation (before the next class period), along with
constructive criticism of how you can improve next time.
Finally, this class is designed around student participation.
Late Assignments
All assignments are due at the start of class. Late work will not
be tolerated and receive zero credit unless previously cleared by the instructor.
If you are sick and have appropriate documentation, always let me
know as soon as you get sick. It will be to your disadvantage to tell
me after the fact that you were sick; you may not be excused from the regular
due date.
Note that scheduled downtimes are not an excuse for late work.
Cheating
Cheating will not be tolerated in this class. You are allowed to discuss
the programming assignments with other students. However, these must be
general
discussions.
Any duplication of even one line of code is a violation of the academic
honesty policy. If you have any doubts about what you are doing,
ask me.
Please note that unfamiliarity with the rules and regulations of the
academic honesty environment at the University of Georgia will not be grounds
for leniency. In other words, if you come from a background where collaborative
work is the norm, you must realize immediately that it is not allowed in
this class, unless cleared by me first.
Withdrawals and Incompletes
You may drop the class during the first three days without an annotation
ending up on your transcript. Thereafter until the drop day, you may drop
the class with an annotation. An incomplete will only be considered
in a case where there is a documented medical evidence and you are
making satisfactory progress in the course. If you have a medical emergency
and are not making satisfactory progress after the drop date, you may
be offered a late withdrawal; this is up to the instructor.
Dissemination of Information
I will be using the Web as much as possible for this course. Handouts will
be rare.
Class announcements, such as due date and assignment changes, will be
made by email notification. You are therefore responsible for checking
your email.