Software design (Computer Science 223)

``Software design'' is a course in the design, implementation, testing, and maintenance of software. The course includes a substantial amount of program development and presupposes some previous experience in small-scale programming. Computer Science 152 or 153 is the normal prerequisite.

The instructor

The instructor for this course is John David Stone. My office is Science 2418; my e-address is stone@cs.grinnell.edu; my telephone extension is 3181; my mail stop is Y-3.

This semester, my regular office hours are from 9:30 to 11 a.m. on Mondays, from 1:30 to 3 p.m. on Wednesdays, from 3 to 5 p.m. on Thursdays, and from 9:30 to 11 a.m. on Fridays.

The textbooks

There are four required textbooks for the course, all of them available at the College Book Store:

We'll be using the Java programming language for software development. Follow this link for a list of recommended books about Java.

Some of you have asked how to create your own packages in Java. The handout ``Making packages'' guides you through the mechanics of making and using them on MathLAN.

Project sites

Atlantis: the Defense

FLIP

Mlanchat

Railroad Madness!

STIM

Exercises and exams

Exercise #1

Exercise #2

Final examination (with answers)

Useful links

Green, Roedy. ``How to write unmaintainable code,'' November 19, 1999.

Irlam, Gordon. ``Software patents,'' November 11, 1998.

Isys Information Architects. ``Interface Hall of Shame,'' September 7, 1999.

Kramer, Doug. ``How to write doc comments for Javadoc,'' undated.

Laramée, François Dominic. ``The Game Industry: Economics of Failure,'' August 12, 1999.

Lea, Doug, ``Implementing basic design patterns in Java,'' March 2, 1998.

Leveson, Nancy ``Medical devices: the Therac-25,'' from Safeware: System safety and computers (Addison-Wesley, 1995).

Miller, Barton P., et al. ``Fuzz revisited: a re-examination of the reliability of Unix utilities and services,'' University of Wisconsin Madison Computer Sciences Technical Report CS-TR-95-1268, April, 1995.

Paranj, Bela, ``Java tip 68: Learn how to implement the Command pattern in Java: Add flexibility and extensibility to your programs with this object-oriented equivalent of the callback,'' Java world, July 30, 1999.

Patrizio, Andy. ``Sierra Shuffle Rocks Gamers,'' September 22, 1999.

Sun Microsystems, ``Java(TM) platform docutmentation,'' undated.

Sun Microsystems. ``java.sun.com -- The source for Java(TM) technology,'' undated.

Sun Microsystems, ``The Java tutorial,'' undated.

Talin, ``Slashdot: Feature: Why Being a Computer Game Designer Sucks,'' August 20, 1999. (The document also includes replies -- some skeptical, some sympathetic.)

Thompson, Clive, ``Bomb squad,'' Shift, volume 7, number 6 (undated).

Turner, Daniel Drew, ``A worm in the Apple?'' Salon, September 30, 1999.

Previous offerings of this course

Spring, 1997


This document is available on the World Wide Web as

http://www.cs.grinnell.edu/~stone/courses/software-design/

created July 28, 1999
last revised January 5, 2000

John David Stone (stone@cs.grinnell.edu)