AbstractThe 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.