Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Masterat
Domeniul: 
Programul de studii: Scoala doctorala
Limba de predare: Română

SYLLABUS

I. Date generale
Codul	Disciplina	
MID2005	Concepte avansate de programare imperativă	

Semestrul	Ore: C+S+L+P	Categoria	Statutul	
1	2+1+0+0		obligatorie	

II. Cadre didactice cu norma de bază în Universitate
Numele şi	Titlul	Gradul	Catedra	Tipul activităţii	
prenumele	ştiinţific	didactic		C	S	L	
PÂRV Bazil	Dr. 	Prof.	Limbaje şi Metode de Programare	*			

Cadre didactice asociate
Numele şi	Titlul	Instituţia	Tipul	Tipul activităţii	
prenumele	ştiinţific		postului	C	S	L	

III. Obiectivele disciplinei
La terminarea acestui curs, studenţii vor poseda:
a) cunoştinţe sistematice despre paradigmele programării imperative;
b) o bună înţelegere a conceptelor de: variabilă, procedură, modul, clasă, obiect, componentă, interfaţă, polimorfism;
c) cunoştinţe privind asemănările şi deosebirile dintre programarea orientată pe obiecte şi programarea bazată pe componente, din punctul de vedere al mecanismelor de reutilizare;
d) o bună înţelegere a importanţei dimensiunii şi granularităţii unei componente;
e) cunoştinţe de bază privind arhitectura sistemelor software	

IV. Conţinutul disciplinei
1. Paradigmele programării imperative - evoluţie şi caracteristici
2. Componente, interfeţe, re-entranţă
3. Polimorfism
4. Mecanisme de reutilizare a codului: moştenirea şi compunerea
5. Componente: scală şi granularitate
6. Arhitectura sistemelor bazate pe componente
7. Stiluri de programare.
8. Modele de interconectare a componentelor	

V. Bibliografie
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. Tematica activităţilor didactice pe săptămâni
Lecţii - 14 săptămâni
Week 1 1. Paradigmele programării imperative - evoluţie şi caracteristici. Termeni şi concepte de bază: variabilă, procedură, modul, clasă, obiect, componentă, interfaţă, polimorfism, reutilizare.
Week 2 2. Componente, interfeţe, re-entranţă. Tipuri de interfeţe: directe şi indirecte, furnizate şi cerute. Părţile unui contract.
Week 3 2. Componente, interfeţe, re-entranţă. Relaţii client-server în sisteme procedurale, modulare, obiectuale şi bazate pe componente. Componente în sisteme distribuite
Week 4 3. Polimorfism. Conceptul de tip de date într-un limbaj de programare. Extensibilitatea tipurilor. Extensibilitatea independentă a componentelor software. 
Week 5 3. Polimorfism. Siguranţa în sistemele bazate pe componente. Evoluţia interfeţelor şi contractelor
Week 6 4. Mecanisme de reutilizare a codului: moştenirea şi compunerea. Tipuri de moştenire. Avantaje şi dezavantaje ale moştenirii.
Week 7 4. Mecanisme de reutilizare a codului: moştenirea şi compunerea. Moştenirea de interfeţe. Delegarea şi compunerea. 
Week 8 5. Componente: scală şi granularitate. Folosirea componentelor în procesul de dezvoltare a softului. Aspecte privind execuţia şi întreţinerea sistemelor bazate pe componente
Week 9 6. Arhitectura sistemelor bazate pe componente. Reutilizarea componentelor. Clasificarea componentelor din punctul de vedere al reutilizării 
Week 10 6. Arhitectura sistemelor bazate pe componente. Şabloane de proiectare. Framework-uri. Arcitectura sistemelor bazate pe componente.
Week 11 7. Stiluri de programare. Programare orientată pe conexiuni. Evenimente şi mesaje
Week 12 7. Stiluri de programare. Interfeţe de dispecerare şi metaprogramare. Scripting
Week 13 8. Modele de interconectare a componentelor. Caracteristicile generale ale unui model de interconectare. Componente OMG: CORBA, OMA
Week 14 8. Modele de interconectare a componentelor. Componente Sun Java: JavaBeans, Enterprise Java Beans. Componente Microsoft: COM, ActiveX, COM+, .NET. 

Fiecare lecţie de curs are 2 ore. Toate materialele de curs sunt disponibile în directorul \win\labor\Romana\Master\pbc241\cbp
accesibil doar din intranet-ul departamentului
Studenţii sunt invitaţi să citească în avans materialul de curs.

Activităţi de seminar/laborator: 1 oră/săptămână (7 seminarii de două ore), pregătirea unui referat şi a unui proiect
Primele două seminarii sunt dedicate informării documentare şi planificării susţinerii referatelor.  Seminariile de la 3 la 6 sunt rezervate pentru presentarea referatelor.
Teme recomandate pentru referate (lista este deschisă)
1. Component definition
 2. Components vs objects
 3. Whitebox, blackbox, graybox, and glassbox components
 4. Explicit context dependencies
 5. Direct and indirect interfaces
 6. Interfaces and contracts
 7. Callbacks / event systems
 8. Object re-entrance
 9. Types and subtypes
10. Types and interfaces
11. Independent extensibility
12. Safety and security
13. Class inheritance
14. Interface inheritance
15. The Syntactic Fragile Base Class Problem 
16. The Semantic Fragile Base Class Problem
17. Object composition and forwarding
18. Object composition and delegation
19. Design patterns and components
20. Component frameworks 
21. Component architectures22. Push programming models
23. Pull programming models
24. Events and components
25. Messages and components
26. Dispatch interfaces
27. Design by contract
28. Component integration vs component adaptation

In seminarul 2 studentul trebuie să comunice titlul proiectului. Ultimul seminar este dedicat demonstraţiilor cu aplicaţia realizată.	

VII. Metode didactice folosite
Metodele didactice folosite sunt: expunerea, conversaţia, modelarea, discutarea unor cazuri de studiu, folosirea şi explicarea unor exemple de programare. Conţinutul lecţiilor este disponibil în forma unor prezentări Powerpoint.
Munca de seminar şi laborator constă în realizarea unor teme individuale. Fiecare student trebuie să pregătească un referat pe o temă dată şi să realizeze un proiect software.	

VIII. Evaluare
Nota finală acoperă munca de laborator (realizarea unui proiect soft) şi de cercetare (pregătirea şi prezentarea unui referat), precum şi rezultatul de la examenul scris. Media ponderată se calculează astfel:
10% din oficiu
10% activitatea de seminar şi laborator
20% nota la proiect
20% nota la referat
40% nota la examenul scris.	

IX. Bibliografie suplimentară
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].	

	Decan,							Sef de catedra,
	Prof. Dr. ȚÂMBULEA Leon			Prof. Dr. PÂRV Bazil

	Data,							Titular curs,
	1 Octombrie 2010					Prof. Dr.  PÂRV Bazil