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+0	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
2. Components, interfaces, re-entrance
3. Polymorphism
4. Ways of implementing polymorphism
5. Components: scale and granularity
6. Architecture issues in component-based systems
7. Programming styles in a component world.
8. Wiring models for software components	

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/].	

VI. Thematic of didactic activities per weeks
Course lectures - 14 weeks
Week 1 1. Software component definition. Basic terms: software component, object, module, interface, software reuse. Standardization issues
Week 2 2. Components, interfaces, re-entrance. Different interface types for components. The constituents of a contract.
Week 3 2. Components, interfaces, re-entrance. The client-server relation in procedural-, object-, and component-based systems. Components and distributed systems
Week 4 3. Polymorphism. The data type concept in a programming language context. Type extensibility and independent extensibility of software components. 
Week 5 3. Polymorphism. Safety issues in component-based systems. Interfaces and contract evolution
Week 6 4. Ways of achieving polymorphism. Kinds of inheritance. Using inheritance: advantages and pitfalls.
Week 7 4. Ways of achieving polymorphism. Interface inheritance. Delegation, composition, inheritance, and polymorphism
Week 8 5. Components: scale and granularity. Components and the software development process: old and new issues. Execution and maintenance issues in component-based systems
Week 9 6. Architecture issues in component-based systems. Reusing components. Classifying components with respect to their reuse 
Week 10 6. Architecture issues in component-based systems. Design patterns. Frameworks. Software architecture in component-based systems.
Week 11 7. Programming styles in a component world. Connexion-oriented programming. Events and messages
Week 12 7. Programming styles in a component world. Dispatch interfaces and metaprogramming. Scripting
Week 13 8. Wiring models for software components. General features of a wiring model. OMG CORBA, OMA
Week 14 8. Wiring models for software components. Sun Java: JavaBeans, Enterprise Java Beans. Microsoft: COM, ActiveX, COM+, .NET. Final review

Each week course is a two-hour lecture. The lectures take the form of Powerpoint presentations and Word  and PDF documents, available on the Win server. All course materials are stored in the folder \win\labor\Romana\Master\pbc241\cbp

The students are invited to read the course material in advance.

Seminar/lab activities: 1 hour/week, paper and project wprk
The first two seminars are dedicated to surveying information sources available on Internet and Intranet, and scheduling of the papers.  Seminars 3 to 6 are dedicated to paper presentations.
Suggested topics for papers (but not mandatory)
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

In the lab 2 the student must communicate the project title. Live demos are scheduled in the last week.	

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. Lectures are given in the form of Powerpoint presentations.
Seminar and lab work consist of individual assignments. Each student must prepare a research paper on an established topic, and a software project.	

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
1. Java Platform, Enterprise Edition, Sun Corp., 1999-2008. [http://java.sun.com/j2ee/].
2. Microsoft Component Object Model Technologies, [http://www.microsoft.com/com/ default.mspx].
3. OMG CORBA/IIOP Specifications, [http://www.omg.org/technology/documents/ corba_spec_catalog.htm].	

	Dean,							Chair head,
	Prof. ȚÂMBULEA Leon, Ph.D.			Prof. PÂRV Bazil, Ph.D.

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