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	
MID0004	Advanced Programming Methods	

Semester	Hours: C+S+L+P	Category	Status	
3	2+1+2+1	speciality	compulsory	

II. Full status faculty members
Name and	Scientific	Didactic	Department	Type of activity	
surname	title	title		C	S	L	
LAZAR Ioan	Ph.D.	Lect.	Computer Science	*			
PETRASCU Dragos 	PhD Student	Assistent	Computer Science		*	*	

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

III. Course objectives
- Learn Java language
- Gain significant additional practice in applications’ analysis and design.
- Learn and apply the object-oriented (OO) approach in designing and implementing software systems
- Learn some basic design patterns
- Learn additional knowledge about UML
- Learn basic knowledge about GUI
- Learn to apply GRASP patterns.	

IV. Course contents
Java Language
   Fundamentals of the Java programming language
   Class libraries: Java classes, interfaces and packages
   Design by contract and exceptions handling
Unified Modelling Language (UML)

 Designing a Framework for Applications with Graphical User Interfaces 
     Windows and graphical components
     Containers and elements: window, menu, label, text box, and button
     Composite design pattern
     Drawing: adaptor and decorater patterns
   Abstract commands
     Callback and command patterns
     Menus implementations 
   Event Handling
     Observer pattern
     Decouplig the sender and the receiver of an event
     Model-View-Controller pattern 
   Java Foundation Classes (JFC/Swing) 
     Windows and menus 
     Graphical components: labels, text boxes, and buttons
     Lists
   General Responsibility Assignment Software Patterns (GRASP)
     Expert and creator design patterns 
     Low coupling and high cohesion
     Controller

Business Logic Layer
   Class Libraries for Data Structures
     Abstract factory, template method, and iterator design patterns
     java.util package
   Input/output class libraries
     java.io package
     Serializable objects
   Building a persistent frameworks
     Brokers for persistent objects 
     Virtual proxy pattern
     Complex object instantiation
   Decoupling presentation and logic layers
     Model-View-Controller pattern	

V. Bibliography
Eckel, B., Thinking in Java (3rd ed.), New York: Prentice Hall, 2002.
Larman, C.: Applying UML and Design Patterns: An Introduction to OO Analysis and Design, Berlin: Prentice Hall, 2000.
Fowler, M., Patterns of Enterprise Application Architecture, Addison-Wesley, 2002.
***, The Java Tutorial, SUN Microsystems, Inc, 2004. http://java.sun.com/docs/books/tutorial/index.html	

VI. Thematic of didactic activities per weeks
1. Java Language and Platform (C1)
	- general features of Java language
	- Java Virtual Machine
	- Differences between C++ and Java
2 Fundamentals of the Java programming language and UML basic review (C2+C3)
UML notations for classes, associations, dependencies, generalization
Java 
Primitive types, Reference types, Arrays
Statements
Classes and Objects
Subclasses and Inheritance
Packages
Garbage Collector
3.  Interfaces and Exceptions Handling (C4)
Abstract Classes
Interfaces
Template Method Design Pattern
Exceptions handling in Java
4. The Java I/O System (C5)
Input/ Output Streams
Decorator Design Pattern
Serialization/ Persistent Objects
5. GUI (C6+C7) 
- Swing Library/ Java Foundation Classes
- Windows and graphical components
- Containers and elements: window, menu, label, text box, and button 
- Lists and Menus
- Event Handling
- Decouplig the sender and the receiver of an event 

6. Model-View-Controller Pattern (C8)
Observer Design Pattern
Strategy Design Pattern

7. Stages in the programs construction (C9+C10)
Plan and elaborate phase –requirements, Use cases
Analyze phase
Design phase
8.  GRASP (General Responsibility Assignment Software Patterns (C11)
Expert and creator design patterns 
Low coupling and high cohesion 
Controller 
Construct (implementation)  phase (C12)
Packages
Presentation , Application Logic, Storage Layers(C12)
Decoupling presentation and logic layers 
Command Design Pattern
Persistency (C13-C14)
Building a persistent frameworks 
Broker and Bridge 
Virtual Proxy Design Pattern
XML
DOM
Processing XML documents using DOM	

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. 
Each student must develop several software projects.	

VIII. Assessment
The final assessment method is an exam. There will be two parts: 
a written part (consisting of a minicase study), 
and a practical part (consisting in a partial implementation of the minicase model).
The final mark (on a ten points scale, one point by default) will be obtained as:
A.  Lab activity: 4p
B.  Written exam (on paper): 3p
C.  Practical exam (at computer): 3p	

IX. Additional references

	Dean,							Department head,

	Date,							Course responsible,
	24.09.2011						Lect. LAZAR Ioan, Ph.D.