[Home | MOTD | Course Info | Project Info | Office Hours | Documents | Pictures | Newsgroup]


Table of Contents

A PostScript version of the syllabus is available here.


Project Schedule and Reading Assignments

Follow this link.


Staff

Instructor: Professor David Laidlaw
Head TA: Jimmy Ho
TA: My Lan Payson

For more info, see the Office Hours page.


Class Schedule Information

CIT 506
MWF 09:00-09:50, (B Hour)
Final Exam Group 02


Office Hours

For office hours, click
here


Course Description

CS 190 is a course in which students working in teams implement significant software applications. Students learn and practice techniques of project management, specification, presentation, analysis, design, coding, documentation, testing, and maintenance. This class is one of the last in the undergraduate curriculum and it can tie together many of the earlier classes very practically. In addition to the focus on a group programming project, we will discuss, debate, and think about the group software development process. Groups introduce a non-determinism that can be refreshing but can also make a project more challenging that you might first imagine.


Aims

I have three aims for people taking CS190. First, learn enough of the issues about creating software in groups to successfully implement future projects. Second, become one of the team members on future projects to whom others turn for advice on software engineering and development. Third, continue to think clearly about the issues, articulate your conclusions, and adapt to changes.


Objectives

When you finish the course, you will have implemented a moderately large software systems as a group. That is the primary objective of the course. Along the way, you will need to determine requirements and specifications for a project in small groups and present it to the class. In a larger group, you'll design the overall project, design the pieces, implement the pieces, integrate them, and demo the result. Throughout, we'll discuss the problems that crop up and see what we can learn from them. We'll also try out a set of in-class programming experiments to evaluate some different software engineering strategies.


Assessment


Required Textbooks

For those of you who are interested, you can get your textbooks at http://www.bestbookbuys.com instead of the Brown Bookstore. This server will query over a dozen on-line booksellers and give you a listing of prices. The books we use in this course can be found for as much as 40% off in some cases. However, the most reliable source for fast shipping, on-hand stock, etc. is still Amazon.com.

The required texts are as follows:

  1. The Mythical Man-Month: Essays on Software Engineering, by Fredrick P. Brooks, Jr. (Addison-Wesley, 1995).
  2. Debugging the Development Process: Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams, by Steve Maguire (Microsoft Press, 1994).
  3. Large Scale C++ Software Design, by John S. Lakos (Addison-Wesley 1996).

Here are the recommended texts:

  1. Writing Solid Code, by Steve Maguire (Microsoft Press, 1993).

Just a little note from me (Jimmy, your Head TA) about Writing Solid Code. When I took Operating Systems as an undergrad, we worked in five-man groups, and this book saved us hundreds of hours of debugging agony. Since then, it's probably saved me hundreds more hours of torture. I kid you not. It's a fast read, and it'll save you a lot of pain and suffering. If you don't believe me, go to the Brown Bookstore and just peruse the text. Pick any chapter (or the preface) and read a little of it before you decide to buy it.

There are more recommended readings over in the documents section.
Jimmy Ho