This course builds on the fundamental programming and ada95 language skills from prerequisite courses to explore advanced concepts used in modern program design. Object-oriented techniques, concurrent processing, static and dynamic polymorphism, controlled types, and other constructs are used to illustrate the creation of software that is robust, reusable, and extensive in varying problem domains. Cadets gain confidence in their abilities to model, implement, and test solutions to demanding programming problems.