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

Instructor: David Lowenthal

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.

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

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

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