Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Informatică
Programul de studii: Informatică - în limba engleză
Limba de predare: Engleză

SYLLABUS

I. General data
Code	Subject	
MID0004	Advanced Programming Methods	

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

II. Full status faculty members
Name and	Scientific	Didactic	Chair	Type of activity	
surname	title	title		C	S	L	
LAZAR Ioan	Ph.D.	Lect.	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
- 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
1. Eckel, B., Thinking in Java (3rd ed.), New York: Prentice Hall, 2002.
2. Eckel, B., Thinking in Patterns with Java, MindView Inc, 2004. 
3. Gamma, E., Helm, R., Johnson, R., Vlissides, J., Design Patterns - Elements of Reusable Object-Oriented Software, Massachusets, Addison-Wesley, 1994. 
4. Larman, C.: Applying UML and Design Patterns: An Introduction to OO Analysis and Design, Berlin: Prentice Hall, 2000.
5. Fowler, M., Patterns of Enterprise Application Architecture, Addison-Wesley, 2002.
6. ***, 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 
9.	Construct (implementation)  phase (C12)
-	Packages
10.	Presentation , Application Logic, Storage Layers(C12)
-	Decoupling presentation and logic layers 
-	Command Design Pattern
11.	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
Lectures, practical works, projects, exercises and individual study.	

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,							Chair head,

	Date,							Course responsible,
	24.09.2009						Lect. Dr.  LAZAR Ioan