[an error occurred while processing this directive]
Brown CS // CS190 Home // Syllabus

Syllabus

Professor: David Laidlaw
Office: CIT 449
Office Hours: By Appointment
Phone: x37647
Email: dhl [at] cs.brown.edu
Graduate TA: Kiran Pamnany
Office: CIT 361
Office Hours: by appointment
Phone: x36193
Email: kiran [at] cs.brown.edu
Head TA: Amy Simpson
Email: asimpson [at] cs.brown.edu
Undergraduate TA: Greg Howard
Email: ghoward [at] cs.brown.edu
Undergraduate TA: Tara Olson
Email: tolson [at] cs.brown.edu

Course Description

CS 190 is a course in which students working in teams of about 10 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 than 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 software systems. Second, become one of the team members on future projects to whom others turn for advice on software engineering and development. Third, learn 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 system 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 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 few in-class and homework programming experiments to evaluate some different software engineering strategies.

Assessment

Course Content Overview

Classes will be divided between lectures, student presentations, discussions, and group meetings. See the project handout and the course schedule for more details.

Textbooks

The required texts are:

  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).
  4. Writing Solid Code, by Steve Maguire (Microsoft Press, 1993).

We'll also read a few pages from A Practical Introduction to Software Design with C++ by Steve Reiss (from CS 32).

[an error occurred while processing this directive]