CS 498-598 - Extreme Programming

Summer 2001

"Jim in four weeks created the GigAssembler by working night and day," Dr. Haussler said. "He had to ice his wrists at night because of the fury with which he created this extraordinarily complex piece of code."

--- David Haussler, quoted in Grad Student Becomes Gene Effort's Unlikey Hero,
by Nicholas Wade, page F1, The New York Times, 13 February 2001

Table of Contents

Course Description

This is a special topics course in Extreme Programming, cross listed under both the graduate and senior-level undergraduate special topics numbers CS 598 and CS 498.

The prerequisite for this course is significant programming experience. At the undergraduate level that means senior standing; at the graduate level that means completion of all the required 50* bridge courses.

This course will be run as a programming practicum involving three one-month projects. See the syllabus for details.

The class runs from Tuesday, 22 May, through Tuesday, 14 August. The class meets in Howard Hall 530 on Tuesdays and Thursdays, 4:00 to 6:15 p.m. There will be class on Tuesday, 3 July, and Thursday, 5 July.


The course objective is to learn the software development process known as extreme programming. Extreme programming is explicitly (or perhaps extremely) oriented around programming. Most software development processes have the opposite orientation: they attempt to minimize programming (which they reduce to coding) by extensive planning, scheduling, and documentation. Traditional software development processes reduces coding to between 10 to 30% of total effort; in extreme programming, programming represents upwards of 90% of total effort. Those familiar with software development processes can draw an analogy between extreme programming and evolutionary prototyping.

This course will be taught as a programming practicum, which means we will be learning about extreme programming by applying it in programming projects.


R. Clayton, Howard B-13, rclayton@monmouth.edu, 732 263 5522. Office hours are on Tuesdays and Thursdays from 3 to 4 p.m. in my office. I'm also usually happy to talk to you any time you can catch me; setting up an appointment is recommended, see my schedule for available times.


There will be three programming projects; each programming project is one month long. See the syllabus for the schedule and for information on the current and previous programming projects.

The final grade is a straight, unweighted average of the programming project grades; that is, there are three grades total and each grade constitutes one-third of your final grade.

The usual grade ranges are in effect:

95 <=A
90 <=A-< 95
86.6<=B+< 90
83.3<=B < 86.6
80 <=B-< 83.3
76.6<=C+< 80
73.3<=C < 76.6
70 <=C-< 73.3
60 <=D < 70
F < 60
All grades are kept with one digit of precision to the right of the decimal point and 0.05 rounded up. No grades are adjusted to a curve; that means, for example, that 89.9 is always a B+, never an A-.



There is one textbook required for this course:
Extreme Programming Installed by Ron Jeffries, Ann Anderson, and Chet Hendrickson; Addison Wesley, 2001.
A copy of the textbook has been placed on reserve at the Guggenheim Library.


You should feel free to send me e-mail. Unless I warn you beforehand, I'll usually respond within a couple of hours during the usual work days; if I don't respond within a day, resend the message.

Mail relevant to the class will be stored in a hyper-mail archive. If your message is of general interest to the class, I'll store it, suitably stripped of identification and along with my answer, in the archive.

Home page

If you're reading this on paper, you can find the class home page at http://www.monmouth.edu/rclayton/web-pages/u01-498-598/index.html. You should get in the habit of checking the home page and the syllabus regularly.

As an experiment, the class also has a FAQ-O-Matic to allow many-to-many communication via the WWW. Currently, the class FAQ-O-Matic can only be accessed from within the Monmouth University domain; if this turns out to be a problem, then access can be extended to the whole WWW.



People who need assistance or accommodations above and beyond what is usually provided in class should contact the University's ADA/504 coordinator to get those needs met. See me or the Disability Services page for more details.


I have no class attendance policy; you may attend class or not as you see fit. However, I hold you responsible for knowing everything that goes on in class; "I wasn't in class for that." is not an acceptable excuse for a wrong answer, or for giving no answer at all.

My attendance policy applies only to lecture attendance; it does not apply to other kinds of attendance which may be required for the course. Repeated failures to meet the attendance expectations set for tests, meetings, projects, labs or other forms of course work will have a bad influence on your grade.

Monmouth University does have a class attendance policy, which you can find in the Academic Information chapter of the Student Handbook. To the extent that I need to keep the record straight, I will take attendance. Attendance lists, however, are entirely for the University's benefit; I will make no use of them in grading.


Cheating's not nice; don't do it. Anyone caught cheating fails the course. The chapters on Academic Information and the Student Code of Conduct in the Student Handbook describe academic honesty and how it can be violated.

Complaining about Grades

I recognize and encourage a student's sacred right to complain about their grade. There are, however, a few rules under which such complaining should take place, and those students who don't follow the rules will be less successful in their complaints than those students who do follow the rules.

First, the only complaint that matters is that something got marked wrong when it was actually right. When you come to complain, be prepared to present, in explicit detail, what it is you did and why you think it's right.

Second, complaints about a particular test or assignment are only valid until the next test or assignment is due; after that point the book is permanently closed on all previous test or assignment grades.

Late Assignments

Assignments must be turned in by their due date; assignments turned in after their due date are late. You should contact me as soon as possible if you need to negotiate a due-date extension. The longer you wait to negotiate, the less likely it is you'll be successful; in particular, you have almost no chance of getting an extension if you try for one the day before the due date, and you have no chance of getting an extention on the due date.

A late assignment is penalized five points a day for each day it's late. I use a 24-hour clock running from midnight to midnight to measure days; note this means that an assignment handed in the day after it's due is penalized ten points: five for the day it was due and five for the next day.

Missing Tests

There may occasionally be a conflict between taking a test and doing something else, particularly among those working full time. If you're going to be out of town, or on jury duty, or whatever, on a test day, let me know beforehand and we'll discuss a make-up test.

A make-up test must be scheduled to be taken by the date of the test following the missed test (or the final exam if you miss the last test). If a missed test is not made up by the time of the next test, you get a zero for the missed test.

There will be only one make up given per missed test. If more than one person misses the same test, those people will have to coordinate among themselves to pick a mutually agreeable date for the make up.


There are many, many, many, many, many Web sites for extreme programming.

Extreme programming uses pair programming, unit testing, and refactoring as part of its development method.

"I'd like to take your course, but I don't know anything about extreme programming. Is it a lot of work? Will it hurt much?"
The answers depend on your tolerance for work and pain. However, you can learn a bit about extreme programming by reading this example extreme programming session.

Another, somewhat less demonstrative, explanation of extreme programming, with bonus reader-response letters (which always make good readin').

Whoa, even e-business architects at IBM use extreme programming.

The papers from a workshop on customer involvment in extreme programming at XP 2001, the 2nd International Conference on eXtreme Programming and Flexible Processes in Software Engineering.

The course textbook is one of three or four books in the Extreme Programming Series. Slashdot had a review (which also includes a sizeable collection of the always amusing Slashdot reader responses) of another book in the series, Extreme Programming Explained. I have a copy of this book if you're interested in looking at it.

A bunch (40 or so) of extreme-programming mailing lists.

This page last modified on 7 August 2001.