The course will cover the rationale and benefits of object-oriented design patterns. Several example problems will be studied to investigate the development of good design patterns. Specific patterns, such as Observer, State, Adapter and Abstract Factory, will be discussed. Programming assignments will provide experience in the use of these patterns.
Designing object-oriented software is hard. Designing flexible, extensible, and reusable object-oriented software is even harder. Over the years, expert object-oriented designers have discovered solutions to many design problems that reoccur again and again. Now, some of these solutions, called Design Patterns, have been analyzed and documented. This course provides an introduction to these design patterns which will allow you to apply the knowledge of experts in your project.
Design patterns are reusable solutions to common software problems. They are distilled design lessons, learned the hard way by vast numbers of developers over decades. They capture successful experiences and convey expert insight to beginners; a good alternate name might be "learn from my pain." Design patterns are the hottest new development in the object-oriented design world.
An experienced software architect knows many patterns. A large part of the job of an architect is teaching those patterns to the software development team, and ensuring that the patterns are used correctly. Writing them down makes it easier for the architect to teach them, having standard names for patterns makes it easier for architects to communicate with each other, and developing an industry-wide set of standard patterns will raise the quality of our profession.
This course is an in-depth introduction to design patterns. It is design and programming intensive, and uses UML and Java for presentation and analysis of design patterns and for assignments and projects. This course is intended for experienced programmers and software engineers who want to better understand object-oriented design and make the transition from software engineer to software architect.
The course begins with an overview of standard O-O concepts before moving to design patterns in depth. The best selling object-oriented book is "Design Patterns" by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlisssides (the famous "Gang of Four - GoF" book). All the currently popular patterns covered by the GoF book are reviewed. Students will learn more than 30 object-oriented patterns, including most of the 23 micro-architectures in GoF book. Application examples and code snippets are provided to illustrate the patterns and the rationale for using that pattern in a given situation.
This course will help students:
After the first weeks devoted to covering the basics of design patterns, extreme programming, unit testing, and refactoring, students will apply design patterns to a real software project and be expected to deliver a working product. Students must be committed to delivering an elegant design, robust code, well-written documentation, ( and be able to present their work to an audience concisely and intelligibly ).
Courses: CENG 217 Object Oriented Programming, CENG 102 Computer Programming II, CENG 302 Software Engineering.
This course assumes considerable experience in object-oriented analysis, design and programming. It will use UML and Java, so familiarity with these languages is required.
Developing high quality communication software is hard; developing high quality reusable communication software is even harder. The principles, methods, and skills required to develop reusable software cannot be learned by generalities. Instead, developers must learn through experience how reusable software components and frameworks can be designed, implemented, optimized, validated, maintained, and enhanced by applying good development practices and patterns. (Douglas C. Schmidt)
This is the tentative schedule. Please check it once before the lecture.
Some Other Possible Subjects
Homework: There will be homework in every 2 or 3 weeks. The purpose of the homework is to give you a chance to exercise the knowledge gained from the recent class material.
Midterm Exam: There will be one midterm exam that will be given around the mid of the semester.
Final Exam: There will be one final exam that will be given during final exams period of the semester.
We will be very careful in grading the projects, homeworks, exams so that everybody gets the grade that he/she deserves. Copying will not be tolerated and will be checked and punished rigorously.
The Fatih University has a very strict policy on academic dishonesty. All work on homeworks and examinations must be strictly individual. Violations of this policy will result in an F grade for the class and may result in suspension/expulsion from the university.