The objective of the course is to provide students with a working knowledge of the underlying foundations of object-oriented design and analysis and the current state of practice. Object-oriented analysis involves developing conceptual models of the problem domain of a software product. Object-oriented design involves developing models of the software solution to the problem clarified during analysis, and constructing programs that implement the design models. A fundamental objective of the course is for students to learn to think in terms of objects, so that they can identify the objects in a system and assign responsibilities to system components.
During the course, students will learn to analyze problems and develop conceptual models, generate designs from the models, and write program code that implements the designs. Students will also learn to evaluate and improve object-oriented models and code. They will use the Unified Modeling Language (UML) to develop object models, and Java to implement the designs. The course will also introduce some facets from agile programming: very short software build cycles, and test-first programming.The topics covered in this course are listed below (subject to change, not in exact order, as time permits):