This course covers advanced concepts and practices of object-oriented software construction. Topics includes software quality, modularity, and reusability, abstract data types, foundations of object techniques, design by contract, exception handling, as well as object-oriented (visual) modeling using Unified Modeling Language (UML) and formal specification using Object Constraint Language (OCL). Students are required to do both writing assignments to answer conceptual questions and programming assignments to practice the concepts, as well as a term project to practice object-oriented modeling. |