Software Design and Development

Abstract

The course covers proven techniques for constructing maintainable
software that consists of many components. In this context, these
techniques include: problem and data analysis, data definitions, concise
specifications, interfaces and contracts, example and test data design,
program design based on data definitions. Over the course of the
semester, students will design, implement, and maintain a software system
in the language of their choice.

MS students: This course is the continuation of the Bootcamp course.

BS students:
This course extends the learning trajectory of Fundamentals
I, Fundamentals II, and Object-Oriented Design with a first application
of your programming skills to a large-scale evolving project. The course
counts in lieu of "Software Construction" formerly known as CS U 670.

Previous instances of "Software Construction" (see
Teaching) provide a good idea of how this
course is run.

Prerequisite:
The above prerequisites imply that you can read and comprehend fragments
of Java and Racket (formerly PLT Scheme) code.
In addition to the above mentioned courses, some familiarity with the
ideas of finite state machines (the "theory" behind regular expressions)
is assumed.