Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Masterat
Domeniul: Informatica
Programul de studii: Metode formale în programare
Limba de predare: Engleză

SYLLABUS

I. General data
Code	Subject	
MI365	Component-Based Programming	

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

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) have a systematic knowledge about fundamentals of component-based programming;
b) have a good understanding of the following terms: component, interface, polymorphism;
c) know the similarities and differences between component-based programming and object-oriented programming in the frame of inheritance and composition issues;
d) understand the importance of component's scale, granularity, and architecture aspects;	

IV. Course contents
1. Software component definition
1.1. Basic terms: software component, object, module, interface, software reuse
1.2. Standardization issues
2. Components, interfaces, re-entrance
2.1. Different interface types for components
2.2. The constituents of a contract
2.3. The client-server relation in procedural-, object-, and component-based systems
2.4. Components and distributed systems
3. Polymorphism
3.1. The data type concept in a programming language context
3.2. Type extensibility and software component@s independent extensibility
3.3. Safety issues in component-based systems
3.4. Interface and contract evolution
4. Ways of implementing polymorphism
4.1. Kinds of inheritance
4.2. Using inheritance: advantages and pitfalls
4.3. Interface inheritance
4.4. Delegation, composition, inheritance, and polymorphism
5. Components: scale and granularity
5.1. How components affect the software development process
5.2. Components and the software development: old and new issues
5.3. Execution issues in component-based systems
5.4. Maintenance issues in component-based systems
6. Architecture issues in component-based systems
6.1. Ways of reusing components
6.2. Classifying components with respect to the way of reusing them
6.3. Design patterns
6.4. Frameworks
6.5. Software architecture in component-based systems
7. Programming styles in a component world.
7.1. Connexion-oriented programming
7.2. Events and messages
7.3. Dispatch interfaces and metaprogramming
7.4. Scripting
8. Wiring models for software components
8.1. Wiring models: general features
8.2. OMG CORBA, OMA
8.3. Sun Java: JavaBeans, Enterprise Java Beans
8.4. Microsoft: COM, ActiveX, COM+, .NET 

Each week course is a two-hour lecture. The lectures take the form of Powerpoint presentations, available on the Win server. The students are invited to read the course material in advance.

Seminar activities
The first seminars are dedicated to surveying information sources available on Internet and Intranet, and planning of the papers and projects.  Seminars 3 to 11 are dedicated to paper presentation, while project demos will be scheduled in the last three seminars

Additional info and course materials are available on the course folder on the win server:
\win.me

V. Bibliography
1. D'SOUZA, DESMOND FRANCIS - WILLS, ALAN CAMERON: Objects, Components, and Frameworks with UML : The Catalysis Approach, Addison-Wesley, 1999.
2. SZYPERSKI, CLEMENS: Component Software. Beyond Object-Oriented Programming, Addison-Wesley (1st ed. 1998, 2nd ed. 2002). 
3. BlackBox Component Builder, [http://www.oberon.ch/BlackBox.html].
4. Component Technology Homepage, [http://www.fja-odateam.com/cop/].
5. Java Platform, Enterprise Edition, Sun Corp., 1999-2004. [http://java.sun.com/j2ee/].
6. Microsoft Component Object Model Technologies, [http://www.microsoft.com/com/ default.mspx].
7. OMG CORBA/IIOP Specifications, [http://www.omg.org/technology/documents/ corba_spec_catalog.htm].

VI. Thematic of didactic activities per weeks

VII. Didactic methods used

VIII. Assessment
The final mark will cover lab work (i.e. completing a project) and research work (preparing a research paper), as well as the written exam results. It is computed as follows, on a 10-point scale:
1pt by default
1pt seminar/lab attendance
2pts the project
2pts the paper
4pts the written exam.

IX. Additional references

	Dean,							Chair head,

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