"Babes-Bolyai" University of Cluj-Napoca
Faculty of Mathematics and Computer Science

Design Patterns
Code
Semes-
ter
Hours: C+S+L
Type
Section
MI095
7
2+0+2
optional
Informatica
MI095
7
2+0+2
optional
Matematică-Informatică
Teaching Staff in Charge
Prof. PÂRV Bazil, Ph.D.,  bparvcs.ubbcluj.ro
Lect. DARVAY Zsolt, Ph.D.,  darvaycs.ubbcluj.ro
Asist. PETRASCU Dragos,  petrascucs.ubbcluj.ro
Aims
At the completion of this course, the students will be able to:
a) know and understand the core design patterns
b) identify the potential patterns in the design
c) use appropriate design patterns in solving real-world problems
d) build reusable designs and components
Content
1. Introduction
1.1. What is a design pattern
1.2. A template for describing design patterns
1.3. The catalog of design patterns
1.4. Design problems solved by using design patterns
1.5. Design pattern: how to choose the right one
1.6. Design patterns: how to use
2. Case study
2.1. Problem statement
2.2. Design problems
2.3. Document structure
2.4. Formatting
2.5. User interface
2.6. Many look-and-feel standards
2.7. Many windowing systems
2.8. User operations
2.9. Analytical processing
3. Creational patterns
3. Creational design patterns
3.1. Introduction
3.2. Factory Method
3.3. Abstract Factory
3.4. Builder
3.5. Prototype
3.6. Singleton
4. Structural design patterns
4.1. Introduction
4.2. Adapter
4.3. Bridge
4.4. Composite
4.5. Decorator
4.6. Facade
4.7. Flyweight
4.8. Proxy
5. Behavioral design patterns
5.1. Introduction
5.2. Chain of Responsibility
5.3. Command
5.4. Interpreter
5.5. Iterator
5.6. Mediator
5.7. Memento
5.8. Observer
5.9. State
5.10. Strategy
5.11. Template Method
5.12. Visitor

Each design pattern description follows the following template: intent, the problem to be solved, the structure (including OMT/UML diagrams), examples (a structural and at least one real-life example).

Lab activities
Three mini-projects, dealing with creational, structural, and behavioral design patterns respectively. Each problem solution will be implemented in two different programming languages (Java, C#, Visual Basic 6.0, Visual Basic .NET, Python, etc).

Course notes and lab material are available on the Win server, in the folder ..\labor\romana\an4\Design Patterns
References
1. COOPER, J.W.: The Design Patterns Java Companion, Addison-Wesley, 1998.
2. COPLIEN, J.: Multi-Paradigm Design, PhD Thesis, Vrije Universiteit Brussel, 2000 [http://www.netobjectives.com/download/CoplienThesis.pdf].
3. ECKEL, B.: Thinking in Patterns with Java [http://www.bruceeckel.com].
4. GAMMA, E., R. HELM, R. JOHNSON, J. VLISSIDES: Design Patterns - Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.
5. MARTIN, R.C.: Agile Software Development: Principles, Patterns, and Practices, Prentice-Hall, 2002.
6. STELTING, S., O. MAASSEN: Applied Java Patterns, Prentice Hall, 2001.
7. Data and Object Factory Patterns, [http://www.dofactory.com/patterns/Patterns.aspx]
Assessment
The final mark will cover lab work (i.e. mini-projects) and the written exam results (last week, during regular class). It is computed as follows, on a 10-point scale:
1pt by default
1pt seminar/lab attendance
4pts the mini-projects
4pts the written exam.
Links: Syllabus for all subjects
Romanian version for this subject
Rtf format for this subject