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

Design Patterns
Code
Semes-
ter
Hours: C+S+L
Credits
Type
Section
MI095
7
2+0+2
6
optional
Informatică
MI095
7
2+0+2
6
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 design patterns in a real-world problem
c) use appropriate design patterns in solving real-world problems
d) build reusable designs
Content
1. Design patterns. General issues
1.1. Historical aspects
1.2. The design pattern concepts
1.3. Pattern classification
2. Creational patterns
2.1. Abstract Factory
2.2. Builder
2.3. Factory Method
2.4. Prototype
2.5. Singleton
3. Structural patterns
3.1. Adapter
3.2. Bridge
3.3. Composite
3.4. Decorator
3.5. Facade
3.6. Flyweight
3.7. Proxy
4. Behavioral patterns
4.1. Chain of Responsibilities
4.2. Command
4.3. Interpreter
4.4. Iterator
4.5. Mediator
4.6. Memento
4.7. Observer
4.8. State
4.9. Strategy
4.10. Template Method
4.11. Visitor

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

Lab activities
Design patterns implementation issues and using them in solving real-world problems. Each problem solution will be implemented in at least two different programming languages (Java, C#, Visual Basic 6.0, Visual Basic .NET).

The lectures (ppt slides) and lab material will be available on the Computer Science Department's server, in the folder ..\labor\romana\an4\depa
References
1. COOPER, JAMES W.: The Design Patterns Java Companion, Addison-Wesley, 1998.
2. COPLIEN, JAMES: Multi-Paradigm Design, PhD Thesis, Vrije Universiteit Brussel, 2000 [http://www.netobjectives.com/download/CoplienThesis.pdf].
3. ECKEL, BRUCE: Thinking in Patterns with Java [http://www.bruceeckel.com].
4. GAMMA, ERICH - HELM, RICHARD, - JOHNSON, RALPH - VLISSIDES, JOHN: Design Patterns - Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.
5. MARTIN, ROBERT CECIL: Agile Software Development: Principles, Patterns, and Practices, Prentice-Hall, 2002.
6. STELTING, STEPHEN - MAASSEN, OLAV: Applied Java Patterns, Prentice Hall, 2001.
7. Data and Object Factory Patterns, [http://www.dofactory.com/patterns/Patterns.aspx]
Assessment
The final mark is computed as follows, on a 10-point scale:
1pt by default
1pt lab attendance
4pt lab activity (homework, implementation issues, schedule conformance etc.)
4pt written exam - scheduled in the last week of the term.