"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., bparv@cs.ubbcluj.ro
Lect. DARVAY Zsolt, Ph.D., darvay@cs.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] Bruce Eckel: Thinking in Patterns with Java, www.bruceeckel.com
[2] James W. Cooper: The Design Patterns Java Companion, Addison-Wesley, 1998.
[3] Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns - Elements of
Reusable Object-Oriented Software, Addison-Wesley, 1995
[4] Stephen Stelting, Olav Maassen, Applied Java Patterns, Prentice Hall, 2001.
Assessment
The final mark is the arithmetic mean of the lab activity mark and a final test mark.