Spring Semester 1999
Class: Dennis Hall, Room 214
Lab: Dennis Hall, Room 201
10:30-11:50 T Th
Syllabus
The intended audience for the course includes students of computer science, math, physics, chemistry (and other disciplines like geology, biology, economics, sociology) who have an interest in computationally intensive numerical methods and simulations. Interested students outside Computer Science are particularly encouraged to participate.
Students who have taken CS35: Programming and Problem-Solving may be able to learn the rudiments of programming in C or Fortran necessary to apply the PVM parallel programming library used in the course, but not without significant additional effort. Please consult with the instructors if you do not already know C or Fortran.
Part I will be primarily lecture/discussion format and will make extensive use of the two texts. Your primary activities will include reading and programming exercises.
During this portion of the course, you will also assist in the construction of a parallel computing cluster using off-the-shelf computer parts. You will be responsible for building and configuring at least one of the nodes in the cluster. This work will require some additional laboratory time outside of class during the first few weeks of the course.
Part II will be primarily seminar format. Each of you will be working on an individual projects which employ parallel techniques to solve a particular problem which you identified earlier in the course. Come prepared each day to discuss the challenges you face and the accomplishments you've achieved.
This course will use two texts (see below). One is an introduction to parallel programming and problem-solving. The other is a tutorial and reference guide for PVM (Parallel Virtual Machine), a library of sub-programs which facilitate parallel programming.
The course will include exercise problems to help you build a foundation for understanding parallel computation, lab projects to give you direct experience with the hardware you'll be using, a mid-semester examination to gauge your progress, and individual projects to help you apply what you have learned. Your full participation and engagement in the course is a critical part of learning the techniques of parallel computation and developing learning strategies that work in interdisciplinary collaborations.
Your grade for the course should reflect how well you apply yourself in each of these components of the course.
There are a number of technology-enabled components to the course: this syllabus and other handouts will be available, where practical, on the course homepage, and a listserv is available to facilitate e-mail correspondence between members of the class.
Finally, this syllabus concludes with the course schedule and information on how to reach us.
Wilkinson, Barry, and Michael Allen. Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers. (Prentice-Hall, 1999).
Recommended text:
Geist, Al (editor), Adam Bequelin, Jack Dongarra. PVM: Parallel Virtual Machine : A Users' Guide and Tutorial for Networked Parallel Computing. (MIT Press, 1994).
Note: The recommended text is also available online in HTML form at http://www.netlib.org/pvm3/book/pvm-book.html.
Requests to join or modify your subscription to the list should be sent to cs40-request@cs.earlham.edu. For a list of commands, send e-mail with the word "help" as the message body to this address.
Exercise programs are due almost daily. For each section in the reading, you will be asked to choose a program from those suggested in the text or recommended by us, and complete it. Take the time to examine each of the suggested exercises and pick one that you think will be sufficiently challenging and educationally appropriate for you. Note that which exercise you pick will be a factor in your grade for that exercise, so don't pick one that's so easy you won't learn much by doing it, or so hard that you won't complete it.
The exercises are an excellent way to prepare for the mid-semester exam.
The exercise problems and programs are worth 40% of your grade.
The mid-semester examination will be given in-class and is worth 20% of your grade.
There will be no final examination.
Your lab participation will be worth 10% of your grade.
Your programming projects will be due at three-week intervals in the final six weeks of the semester. Your program will then be available (via your web-page) for comment for two days, during which time you will be able to make changes based on comments from the others in the course. During the final week of the semester others in the class will attempt to use your program and offer their comments and criticism.
For each of your projects you should prepare a web page with an introduction to the subject matter of your project, an overview of the program logic and parallel techniques you used, and a summary of the results. Your page should also include links to the program text of all modules, any data used by the programs, and sample output. You may also include links to any other useful information you were able to find on your topic. The primary audience for your page is the other students in the class, although the page should be useful to others on the world wide web.
After you complete each project, you will have two days to review the projects of two other members of the class. You should direct your review comments to the person whose project you are reviewing, and send copies of the comments to both Ray and Joy. 20% of your grade for the programming assignment depends on the quality of your review.
Note that the objective of this assignment is NOT to produce a clever web page. The objective is to add value for your classmates (and to the world wide web in general) by providing content. For my favorite rant on bad web page design, see Eric S. Raymond's The HTML Hell Page. Consider using Weblint and Doctor HTML to help improve the HTML in your page.
The grading for the programming project will be divided between functionality, style, and peer review:
A significant portion of your grade is for programming style, by which we mean the readability, maintainability, extensibility, and accessibility of the code. Few programs are ever the work of one person, and the most successful programs are often those that are modified and enhanced by others, both in industry and academia. Code which is unreadable or not understandable is ignored; write code which others would enjoy reading and enhancing.
Your grade for the programming projects will be based on the quality of your program and the quality of the criticism you offer others. As always, due means due (See below). Each of these programming project assignments are worth 15% of your grade in the course.
A word of warning: the functionality portion of the grade will not be a linear scale. If you set out to accomplish 10 things and only accomplish 5 of them, you will probably get 25% of the functionality points (assume an x**2 curve, 0<=x<=1). Programs which only half-work are often useless. So, choose the scope of your project carefully, and be sure to deliver what you set out to accomplish. As with many programming efforts, 80% of the project can be accomplished in 20% of the time; the remaining 20% often takes 80% of the time. Keep this in mind as you plan and work on your project.
We meet as a class for a number of reasons:
Therefore, your subject-matter grade will be multiplied by your participation grade.
Again, your final grade for the course will be computed by multiplying your subject-matter grade by your participation grade.
| A+ | greater than 97% | less than or equal to 100% |
| A | greater than 93% | less than or equal to 97% |
| A- | greater than 90% | less than or equal to 93% |
| B+ | greater than 87% | less than or equal to 90% |
| B | greater than 83% | less than or equal to 87% |
| B- | greater than 80% | less than or equal to 83% |
| C+ | greater than 77% | less than or equal to 80% |
| C | greater than 73% | less than or equal to 77% |
| C- | greater than 70% | less than or equal to 73% |
| D+ | greater than 67% | less than or equal to 70% |
| D | greater than 63% | less than or equal to 67% |
| D- | greater than 60% | less than or equal to 63% |
| NP | greater than 0% | less than or equal to 60% |
On days when problem sets are due, we will devote available time to answering specific questions about the problems, or other questions from the reading. We will address questions of interest to the largest number of class members present before addressing questions of individual interest.
Later in the semester the focus will shift toward your projects; always be prepared to discuss your own work. Although you will each have different subject-matter for your project, the methods you use will be similar; some discussion of research and programming method will be appropriate during that part of the course.
In general, the class sessions are available for you to get answers to questions you generate while reading, working on the problems, or from your research and programming. Always be prepared to discuss the material from the text and your own work in depth. We will facilitate or lead discussion which we think will be most valuable for the class as a whole. Be sure to bring your brain and your most inquisitive self. Make the most out of coming to class; it's your time.
We check e-mail several times each day, and e-mail is often the best way to get a specific answer to a specific question. Our e-mail addresses: rayo@ontko.com and willijo@earlham.edu. Note that rayo@cs.earlham.edu and ontkora@earlham.edu may also work, but these are forwarded hopefully to the first address listed above.
Ray's campus mailing address is Drawer 98. Joy's is Drawer 106. Due to the open access of our mailboxes, we do not recommend that you place your assignments there. If you want to turn in an assignment when we're not around, please place it under the door to Joy's office with the following clearly shown: your name, the name of the course, and the date and time you left it.
Joy's campus extension is 1683. Ray does not have a campus extension. If you wish to leave voice mail for Ray, dial his company voice mail at 966-6221, voicemail box 9001.
Ray's phone number at Ray Ontko & Company is 935-4283. Please feel free to call him there. When he is not on campus, it's where you're most likely to find him, often past 5:00 pm. If he's not there, leave a message including the phone number he should call and when he might reach you there.
Ray's home phone number is 935-1598. Joy's home phone number is 935-1318. Please don't call either of us before 9:00 am or after 9:00 pm unless it is an emergency. If it is an emergency, please do not hesitate to call.
Copyright © 1999,
Ray Ontko
(rayo@ontko.com)
and Joy Williams Lind
(willijo@earlham.edu)
.
If you're curious about why we copyright, see
Peter Suber's
Why Copyright Web
Documents?.