CSCI 8730: Parallel and Distributed Computing, Spring 2004
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 (2 weeks)
-
modeling parallel program behavior (1 week)
-
logical clocks (1 week)
-
energy-aware cluster and parallel computing (2 weeks)
-
energy-aware mobile applications (2 weeks)
You can find the class web page at: http://www.cs.uga.edu/~dkl/8730/Spring04/syllabus.html
Recommended Prerequisite: CSCI 4730 or 6730 (Operating Systems)
Helpful, but not necessary to have: CS 6570 (Compilers), CS 6720 (Architecture)
Note: If you don't have the prerequisite, see me; your background may be
just fine.
Lectures: TR, 3:30-4:45pm, Forestry 303, and W 3:35-4:25pm, GSRC 306
Final Exam: Thursday, May 6, 3:30-6:30pm
I am a faculty member in the Computer
Science Department at the University of Georgia. My main areas of
research are parallel and distributed computing, operating systems, and
mobile computing.
Email: dkl@cs.uga.edu
CSCI 8730 email: We will be using a listserv for the class
mailing list. To sign up for the listserv,
go to this
address. To send email to the list, send mail to
parallel@greenhouse.cs.uga.edu.
Where to send email: Unless you are asking a
personal question that you only want me to read (e.g., you are very
sick,
you have a situation that warrants a deadline extension, you want to
know about your grade), please send email
to the class account.
Office: GSRC 219C, 542-9269
Office Hours: Tue 12:15-1:45, Wed 8:30-10, 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 --- Mondays 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. If you appear more
than three times, you will fail the course. Assuming that
you can present a paper when called upon, you will be graded on your presentation,
and receive detailed comments from me.
Midway through the course, I will evaluate the composite performance
of (1) students presenting papers, (2) students asking questions
of other students, and (3) programming assignments. If the
performance is not up to my standards, there will be a midterm covering
all of the papers that we have read so far. This process will be
repeated at the end of the class to determine whether or not we have a
final. Please note: if I give an exam, it will be because I am disappointed
with your performance as a (whole) class. The exam will be very,
very hard. I advise all of you to work hard and avoid this situation.
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.
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): 15%
-
Class presentations: 15%
-
Programming assignments: 20%
-
Class participation: 10%
-
Project: 40%
Please note that these are tentative. Relative weights of assignments
may change slightly. An 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.
If
you have more than 3 unexcused absences, you will fail the class unless
you withdraw prior to the midpoint of the semester.
Workload
Please note: this course will require a lot of work. If you are
not willing to work hard, this might not be the right course for you. Please
see the instructor for any questions regarding this.
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. For example, discussing the need for locking address spaces
is perfectly fine; however, telling one exactly how that is done is not.
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. I hand over all cheating cases directly to the Academic Honesty
department. Their punishment, if you are found guilty, carries with it
a minimum of a failing grade on the assignment and a transcript
notation; the latter item will certainly hinder your efforts to find a
good job. This means that if I catch you cheating, you're not just going
to get away with an F on that assignment; the punishment is much stricter
than that. So, simply put, don't cheat.
If I catch you copying code, I will do my best to make sure
you get the harshest penalty possible, including expulsion from the university.
Note
that we have had violations of the course policy in the past.
If you cheat, we will catch you.
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.
Warnings
First, you are responsible for reading and understanding this entire syllabus.
I will hold you to the rules set forth within this document. Second, any
computer science programming course involves a significant amount of work.
This class will have more work than most computer science courses. If you
do not feel you have the time to spend, you may want to think about taking
a different course. Ask previous students about the workload in this class.
I expect you to treat this class professionally.
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. If you make an error because you did not read your email,
I will hold you fully responsible.
You must sign...
You must sign the statement below and return this document to me.
By signing at the bottom of this document I state that I have read the
entire syllabus and agree to abide by its terms.
Signed: