nPattern-Oriented
Design: Design Patterns From Analysis To Implementation. This course goes beyond merely teaching several design patterns. It also
teaches the principles and strategies that make design patterns good designs.
This enables students to use these advanced design techniques in their problems whether design
patterns are even present. After teaching several patterns and the
principles underneath them, the course goes further by
showing how patterns can work together
to create robust, flexible, maintainable designs.
nRefactoring and Unit Testing – Key Skills for Agile Development. The practice of Agile Software Development requires, among other things, a high degree of flexibility in the coding process. As we
get feedback from clients, stakeholders, and
end users, we want to be able to evolve our
design and functionality to meet their needs and expectations. This implies an
incremental process, with frequent (almost constant) change to the code we're working on. Refactoring, the discipline of changing code without harming it, is an essential technique to
enable this process. Unit testing, which ensures that a
given change has not caused an unforeseen
ripple effect in the system, is another.