Exercises from Software Engineering 330 at the University of Victoria.
The topics covered in this course include:
- General Design Principles (separation of concerns, encapsulation, substitutability, interface segregation, etc.)
- Design patterns and design smells
- Design techniques such as Design by Contract and Refactoring
- Effective use of programming language mechanisms (exception handling, serialization, concurrency and synchronization, reflection, etc.)
- Software development tools such as automatic testing tools, coverage analyzers, static checkers