Subject: Advanced Programming Methods	Code: MID0004	

Semester	 Hours: C+S+L	Type	 Section	
3	2+1+2	compulsory	Computer Science	
3	2+0+2	compulsory	Mathematics and Computer Science	

Teaching Staff in Charge	Lect. LAZAR Ioan, Ph.D., ilazar@cs.ubbcluj.ro
Assoc.Prof. NICULESCU Virginia, Ph.D., vniculescu@cs.ubbcluj.ro
Lect. DARVAY Zsolt, Ph.D., darvay@cs.ubbcluj.ro
Asist. MIHAILA Cristina Aneta, aneta@cs.ubbcluj.ro
Asist. CHISALITA-CRETU Maria Camelia, cretu@cs.ubbcluj.ro	
Aims	Acquisition of the methods of data abstraction and object oriented programming	
Content	1. Java Language
   Fundamentals of the Java programming language
   Class libraries: Java classes, interfaces and packages
   Design by contract and exceptions handling

2. Designing a Framework for Applications with Graphical User Interfaces 
   Unified Modelling Language (UML)
     Use cases
     Static models
     Dynamic models
   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 Assignement Software Patterns (GRASP)
     Expert and creator design patterns 
     Low coupling and high cohesion
     Controller

3. 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	
Selective References	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	
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