This course teaches the students the necessary skills to analyze a problem, convert the results of the analysis to an efficient, resilient design, and to implement that design.
The prevailing paradigm for building software systems today is the object-oriented paradigm. It is applied in building complex systems of all sizes and in various domains. This course focuses on the analysis, design, and implementation aspects of software systems. We will examine how to analyze requirements in such a way that we can develop a well-structured, flexible, and maintainable design and implementation. A key skill in object-oriented developers today is the ability to recognize and apply design patterns to their software solutions. A significant part of the course is devoted to learning and applying patterns.
Upon completion you will be able to do the following:
There are several expected outcomes for the course:
More information about the course, including the structure and approach, assignments, readings, and so on can be found on the course notes page. The course notes are developed using a mind-mapping technique developed by Tony Buzan. The notes pages were generated by the MindManager® X5 Pro software tool from MindJet®. If you are interested in mind-mapping as a way to capture and review information, there is a free tool called FreeMind that is available for download from SourceForge.
Students taking this course should have an understanding of software engineering principles. If you have passed CS3733, Software Engineering, you should be prepared for the course. You should specifically understand use cases and requirements engineering, project management and scheduling, iterative and incremental development, and testing. You should also be proficient in Java programming.
There is one required textbook for the class: Object-Oriented Design & Patterns, Cay Horstmann, John Wiley, 2004, ISBN 0-471-31966-x.
Modified:
12-Oct-2004
Gary Pollice