Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Masterat
Domeniul: Informatica
Programul de studii: Programare bazată pe componente - în limba engleză
Limba de predare: Engleză

SYLLABUS

I. General data
Code	Subject	
MID1001	Component-Based Programming	

Semester	Hours: C+S+L	Category	Status	
1	2+1+1	speciality	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) feel 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 

Seminar activity
S1- The survey of information sources available on Internet and Intranet
S2 - Planning of the working papers 
S3 - S14 - Presentation of the working papers, with the following topics
1. Software components and their economical impact. Component markets.
2. Alternative definitions of software components.
3. Ways of specifying interfaces
4. Callbacks and contracts
5. Communication between components
6. Types, subtypes, and type checking
7. Safety issues in a component-based system
8. Component extensibility issues
9. The fragile base class problem
10. Approaches to disciplined inheritance
11. Class and object composition
12. Components and software reuse

V. Bibliography
1. Michael Barnes, Component Road Map. A Hurwitz Group White Paper, 1997, http://hurwitz.harvard.net/component.html.
2. Component Technology Homepage, http://www.odateam.com.
3. Rich Levin, Components on the Track, 1998,  http://techweb.cmp.com/iw/663/63iucmp.htm.
4. Bob Orfali, Dan Harkey, Jeri Edwards, The Essential Distributed Objects Survival Guide, Wiley, 1996.
5. Cuno Pfister, Component Software: A Case Study using BlackBox Components, http://www.oberon.ch/docu/case_study/index.html.
6. Keith Short, Component Based Development and Modeling, Sterling Software 1997, http://www.cool.sterling.com/whitepaper/coverpg.htm.
7. Clemens Szyperski, Component-Oriented Programming - A Refined Variation on Object-Oriented Programming, The Oberon Tribune No 1/2, December 1995.
8. Clemens Szyperski, Component Software. Beyond Object-Oriented Programming, Addison-Wesley 1998.

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.