Emphasize models, code contracts, code clarity, and documentation as integral parts of the development process
Evaluate the correctness of programs via unit testing
Exploit data abstraction (classes and objects) to decompose a program into manageable pieces
Leverage inheritance and polymorphism as cornerstones of the object-oriented programming design process
Recognize what it means to be a computing professional and apply ethical codes of conduct to various scenarios
Understand the organization of common application types such as command-line programs, graphical user interfaces, and internet-based applications
Use type-independent collections from a language library to effectively solve problems