Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Calculatoare şi tehnologia informaţiei
Programul de studii: Ingineria informatiei - in limba engleza
Limba de predare: Engleză

SYLLABUS

I. General data
Code	Subject	
MID0016	Design Patterns	

Semester	Hours: C+S+L+P	Category	Status	
5	2+0+1+1	speciality	optional	

II. Full status faculty members
Name and	Scientific	Didactic	Chair	Type of activity	
surname	title	title		C	S	L	
PÂRV Bazil	Ph.D.	Prof.	Programming  Languages and Methods	*			

Associated faculty members
Name and	Scientific	Institution	Type of	Type of activity	
surname	title		position	C	S	L	

III. Course objectives
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	

IV. Course contents
1. Introduction
2. Case study
3. Creational design patterns
4. Structural design patterns
5. Behavioral design patterns	

V. Bibliography
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]	

VI. Thematic of didactic activities per weeks
Lectures: 2 hours per week, 14 weeks
Week 1. Administrivia. Ch 1. What is a Design Pattern (DP). Descrieption of a DP.  DP Catalog. Use of DP to solve design problems. 
Week 2. Ch. 1. Design problems solved by using DP. How to choose the right DP?. How to use a DP.
Week 3. Ch. 2. Case study.  Problem statement. Design problems. Document structure. Formatting
Week 4. Ch. 2. Case study. User interface. Many look and feel standards. 
Week 5. Ch. 2. Case study. Many windowing systems. User operations. Analytical processing
Week 6. Ch. 3. Creational patterns. Abstract Factory. Builder. Factory Method
Week 7. Ch. 3. Creational patterns. Prototype. Singleton. Conclusions
Week 8. Ch. 4. Structural patterns. Adapter. Bridge. Composite.
Week 9. Ch. 4. Structural patterns. Decorator. Facade. Flyweight. Proxy. Conclusions
Week 10. Ch. 5. Behavioral patterns. Chain of Responsibility. Command. Interpreter. 
Week 11. Ch. 5. Behavioral patterns. Iterator. Mediator. Memento. 
Week 12. Ch. 5. Behavioral patterns. Observer. State. Strategy. 
Week 13. Ch. 5. Behavioral patterns. Template Method. Visitor. Conclusions
Week 14. Written exam
The description of each DP includes the following: purpose, the problem, structure and participants (including UML diagrams), examples (a structural and a real one). 

Lab and project activities: 1 hour per week lab and 1 hour per week project
Lab work is grouped into three mini-projects.
P1. Creational patterns - due date week 5
P2. Structuralal patterns - due date week 9
P3. Behavioral patterns - due date week 13
Each mini-project will lead to a software design with the following requirements
•	uses at least three (two in the case of creational) DP from the corresponding category.
•	is implemented in two different programming languages (Java, C#, Visual Basic 6.0, Visual Basic .NET, Python, etc)
•	has a documentation with the following content
1.	Problem statement: problem to be solved
2.	Requirements: use case model, class model (classes only, problem domain entities)
3.	Analysis: class model (classes+attributes + relationships)
4.	Design: 
•	detailed class model (classes+attributes + relationships + operations), 
•	interaction diagrams (sequence and collaboration), state and activity diagrams (if needed), 
•	solution-specific objects (where and why are used)
•	design patterns used, described using a template containing: pattern name, problem, solution (including diagrams), consequences
5.	Implementation (two different programming languages)
•	for each language: advantages and drawbacks of its use for the problem at hand; how it eases or not the implementation of the design solution
•	a comparison of the languages regarding the degree of support they offer for the implementation of the design solution
    6. Executable demos
    7. References
       Appendix: source code

Course lectures and lab material are available on Win server, in the folder \win\labor\Romana\an3\DesignPatterns		

VII. Didactic methods used
The course is based on the following methods: exposure, conversation, didactical proof, modelling, and the discussion of some case studies and programming examples. Lectures are given in the form of Powerpoint presentations and Java implementations. Lab and project work consist of three design mini-projects. 	

VIII. Assessment
The final mark will cover lab/project work and the written exam results (last week, in the classroom). It is computed as follows, on a 10-point scale:
1pt by default
1pt lab attendance
4pts the mini-projects
4pts the written exam	

IX. Additional references
1.	Data and Object Factory Patterns, [http://www.dofactory.com/patterns/Patterns.aspx]
2.	Object Mentor Homepage, [http://www.objectmentor.com]
3.	Agile Modeling Homepage, [http://www.agilemodeling.com]	

	Dean,							Chair head,
	Prof. ȚÂMBULEA Leon, Ph.D.			Prof. PÂRV Bazil, Ph.D.

	Date,							Course responsible,
	October 1, 2009					Prof. PÂRV Bazil, Ph.D.