cs190: Software System Design

Spring 2004

You might be interested in reading a retrospective article about innovations in this instance of the course (pg 31-34).

Course Staff

Office Hours
ShriramMonday, 2-4PMCIT 445
JohnFriday, 2-4PMFishbowl
NathanThursday, 1-3PM, or by appointmentCIT 409


Unless indicated otherwise, assignments are always due at 2am on the due date. That is, if an assignment is listed as due on a Wednesday, it's due during the night between Tuesday and Wednesday. The reason we make it due at 2am, rather than in class, is because we want you to turn it in and then get a good night's sleep before attending class, rather than working down to the wire and not being alert in the classroom.

  1. What Makes Modern Software Hard? Due Wed, February 11
  2. Gradebook Requirements Exercise Due Mon, February 2
  3. Scenarios for Orbitz Exercise
  4. Library Requirements Due Sat, February 14
  5. Library Budget Due Fri, February 20
  6. Questions About the Film "Spider" Due Wed, March 3


  1. Structuring Use Cases With Goals, Alistair Cockburn
  2. This is an article that helped us to understand use cases. It's not necessary to read the whole thing carefully, but you may find it helpful to refer to as you are working on the library assignment.

  3. Techniques for Requirements Elicitation, Joseph Goguen and Charlotte Linde
  4. While this article proposes a methodology that is somewhat controversial, it nevertheless provides a good survey of requirements elicitation techniques.

  5. A Survey on Quality-Related Activities in Open Source, Luyin Zhao and Sebastian Elbaum
  6. A study of quality-assurance practices in open source projects.

  7. An Experimental Evaluation of the Assumption of Independence in Multi-Version Programming, John C. Knight and Nancy G. Leveson
  8. A dicussion of the use of multiple, independent implementations to build fault-tolerant software. Additional papers on the topic can be found at http://sunnyday.mit.edu/papers.html#ft.

  9. Software Aspects of Strategic Defense Systems, David Parnas.
  10. Essays on the obstacles to implementing a missile-defense system, and on the difficulty of building software in general. Also raises some related ethical issues.

Project Documents


Please read the course syllabus. You are responsible for everything in it whether you read it or not, so you might as well read it.

Where, When

The class meets during D Hour, i.e., 1100-1200 on Monday, Wednesday and Friday in CIT 368 (a new third-floor classroom!).


cs190 is not a course that easily lends itself to shopping. Unlike in most regular courses, what you see and do at the beginning of the semester will qualitatively be very different from that later into the term. In addition, we need to form groups soon, and get started on the course projects. Therefore, while we support and encourage the principle behind shopping, we ask that you let us know if there's a chance you won't be in the course come week 3. We need to account for this when creating teams, etc.

What Will Be Different This Year


In a significant departure from tradition, the entire class will work on (different parts of) one project, and we will assign the project. The project has been carefully chosen to illustrate various important aspects of software engineering. There will be no exceptions to this policy.

In addition, we will not impose any programming language choices on you. You may use any language you wish, but we will make you justify your choice of language.


There is no prescribed textbook for the course. (This doesn't mean we won't be reading anything. We'll read quite a bit, just not in textbook format. In fact, the readings may be quite a bit harder than what you'll find in a text, and you'll need to then write about what you read.)

About Software Projects

In the long run every program becomes rococo—then rubble.

—Alan Perlis, Epigrams in Programming

Max Ernst's Europe after the Rain:

Max Ernst, Europe after the Rain