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: 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

Instructor: David Lowenthal

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.

Reading List

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:

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.

Class Schedule

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.