6515 S '13
Lab Book

Software Design and Development


The course covers proven techniques for constructing maintainable software that consists of many components. Coding techniques include: interface specifications for both internal and external components, including protocols and contracts; they assume knowledge of program design based on data definitions. People techniques include so-called code walks, where software engineers present their code for rigorous inspection to panels. Over the course of the semester, students will design, implement, and maintain a reasonably large software system in the programming language of their choice.

MS students: This course is the continuation of the Program Design Principles (PDP) course. While PDP focuses on complete program design, this follow-up course concerns the design of components and their interaction with a context. Similarly, while PDP teaches code presentation techniques, this course expands your role to that of a panelist.

BS students: This course extends the learning process of Fundamentals I through III (aka Object-Oriented Design) plus one co-op; the ideal student is a middler. It is teaches how to transition from programming to engineering software with a large-scale project (for college-level courses). The course counts in lieu of "Software Construction."

In addition, this course adds "people skills" to your repertoire. Modern software engineering practices require that programmers present their code and inspect other people's code. Put differently, programmers must learn to discuss their code bases on a high technical level and without investments into their egos. This course covers both. You will present your code to a panel of three peers, in a class room setting, and you will serve as panelist several times during the semester.

Prerequisite: The key prerequisite is that you can read and comprehend fragments of Java and DrRacket aka "teaching languages" code.

good software

last updated on Tue Jan 8 12:07:19 EST 2013generated with Racket