PROSPECTUS

Software Systems Design

CS190, Spring 2002

Steven P. Reiss

PURPOSE

This course will teach, through practice and lectures, how to design and implement moderate-sized software systems. The emphasis will be on the design of systems and on developing the proper techniques for building such systems correctly. The course offers you the opportunity to apply the knowledge you have gained in other Computer Science courses to a practical project.

Note however, that this is a course in software engineering and not programming. You are expected to be competant (or better) programmers. In this course you will learn how large systems can be built effectively with teams of people. You will find that the course is as much or more on dealing with people and working in groups as it is on design and programming.

PROJECT

The heart of the course is a team programming project that will occupy the whole semester. Details of the project are shown in the project handout.

LECTURES

Class are scheduled on Mondays, Wednesdays and Fridays from 10:00-10:50 in CIT 506. Classes will be divided between lectures, student presentations, and group meetings.

GRADES

Grades will be determined from the project. In theory, everyone on a project will receive the same grade. This will be an A if and only if the project is a usable, working system by the end of the semester. If you do a mediocre job at the start of the course, it will hurt throughout. This, more than anything else, has been the reason for failing projects over the past years. As you will discover through this course, a good understanding of the problem and a good overall design are necessary steps toward a good working system. In practice, we feel free to lower (or raise) anyone's grade based on their effort or quality of work.

TEXTBOOKS

There are two primary text books for this course this year. The first, Extreme Programming Installed by Jeffries, Anderson and Hendrickson (EPI), is light, fairly non-technical reading that outlines the approach we are going to take this year to implementing the project. (See the project handout for details on this.) The second, Software Engineering Theory and Practice (Second Edition) by Pfleeger (SETP), is just the opposite. It is quite comprehensive and often has more technical detail than you will need or want to know. You probably want to read the whole of EPI at the start of the course and then refer back to it as we cover the various topics. You should at least skim the appropriate chapters of SETP as we cover the various topics, reading the introductory sections in depth and the latter sections of each chapter as they seem appropriate or interesting.

A third book, Fred Brooks' Mythical Man Mont h, provides optional but very informative readings that provide a good deal of the background to why software engineering is done the way it is.

ACCOUNTS

Much of the specification and design work in the early part of the course will be done on-line. To this end, we will provide Sun or MS accounts (as appropriate) at an early date. You might want to become familiar with a word processor (i.e. FrameMaker, Word, or Latex) so that your documentation and hand-ins can be done reasonably.

OFFICE HOURS

Mr. Reiss does not maintain office hours, but is generally available in his office from 8 to 5 weekdays, and is available by email as spr. As of now, there are no TAs for the course.