This course provides an introduction to software design principles, covers many of the "classic" design patterns from the "Gang of Four" textbook (Design Patterns: Elements of Reusable Object-Oriented Software, Gamma et. al.), and several other categories of patterns. There is also study guide information for the two classtime exams, and the final exam. The learning outcomes for the topics studied during the term are given below.
The course introduction described the principles that you will strive to follow throughout your software design activities. Coupling, cohesion, encapsulation, interface over implementation, and composition over inheritance are a number of those principles. The learning outcomes are:
Domain modeling is a modeling concept introduced at the beginning of this course. It is used early in the development process to create a common understanding between the customer and the developers of the scope and major entities that exist in the system. The learning outcomes are:
The model-view-control architecture is a primary architecture used for building interactive software systems. The learning outcomes are:
For each pattern studied, you should be able to:
On the two exams, you will have a design pattern cheat sheet that gives you the first three items for each pattern studied. There will not be questions directed at this level of memorization. The exam questions will be at a higher level of understanding of the design patterns. You should still know this information for each pattern, however, so that you can have meaningful discussions while working on your software design without having to constantly refer to reference material.
In addition, there are pattern-specific learning outcomes that you are responsible for:
The following patterns will not be presented in class. You should study these patterns on your own. One or more of these patterns will most likely be appropriate to use in your project work in the course. In addition, there may be questions on these patterns on the exams that you can answer for bonus points. To get bonus points, you should be able to answer questions on items 1 through 7 above, and the pattern-specific learning outcomes linked below.
The learning outcomes for our discussion of refactoring are:
In class, we discussed the following anti-patterns: The Blob, Copy-and-Paste Programming, Lava Flow, Poltergeists, Golden Hammer, and Functional Decomposition. The learning outcomes for anti-patterns are:
The design problem will be similar to the design exercise done at the very start of the course, and the one that was done as part of the Final Exam review. The requirements for a small software system will be provided to you. You will be required to:
There are three exams during the course. Each exam will cover the Classic Design Patterns listed above for that exam. These were the patterns discussed in class and you should have been doing additional studying of them outside of the class discussion. Each exam may also have questions on one or more of the bonus patterns. You can answer questions on these patterns for bonus points on the exam.
Exam 1 will cover any design patterns that were introduced in class prior to the exam (possibly including the bonus patterns). It also will cover the introduction to software design material discussed at the beginning of the course, the model-view-control architecture, and domain modeling concepts.
Exam 2 will cover any patterns that were introduced in class after the first midterm and the bonus patterns.
The Final Exam will present you with two design problems and ask you to produce a "mini-design" for each that includes a Noun/Verb analysis, a UML class diagram, a GoF pattern card, and a sequence diagram. You will also need to write a design rationale explaining your choice of design patterns and the impact on the design of the system using design language.
For patterns covered by the exams, you will be expected to demonstrate the common learning outcomes applicable to every pattern, as well as the pattern-specific learning outcomes. You may also refer to this list of potential exam questions. Questions may also be taken from the weekly discussion topics in myCourses.
You may bring to each exam one 8.5" x 11" sheet of paper with notes on the front and back. This must be handwritten. At Exam 1, you will be given a design pattern information packet that has the intent and structure for each classic pattern and bonus pattern listed above. Save this design pattern information packet and remember to bring it to Exam 2 and the Final Exam. If you lose your copy, you will have to print another copy on your own.