Course description:
This course is designed for students with Java background. The course objective is to familiarize the student with techniques for designing reusable combinations of Java classes and organizing their cooperation to produce modular and maintainable Java programs. Upon completion of the course, the student will be able to understand most important design patterns and apply object-oriented techniques for designing reusable, maintainable and modifiable software.