fişa disciplinei
1. Date despre program
1.1 Instituţia de învăţământ superior	Universitatea Babeş-Bolyai Cluj-Napoca	
1.2 Facultatea	Facultatea de Matematică şi Informatică	
1.3 Departamentul	Departamentul de informatică	
1.4 Domeniul de studii	Informatică	
1.5 Ciclul de studii	Master	
1.6 Programul de studiu / Calificarea	Informatică didactică - ȋn limba romȃnă	

2. Date despre disciplină
2.1 Denumirea disciplinei	Paradigme de programare	
2.2 Titularul activităţilor de curs	Prof. dr. PÂRV Bazil	
2.3 Titularul activităţilor de seminar	Prof. dr. PÂRV Bazil	
2.4 Anul de studiu	2	2.5 Semestrul	3	2.6. Tipul de evaluare	E	2.7 Regimul disciplinei	Opțională	

3. Timpul total estimat (ore pe semestru al activităţilor didactice)
3.1 Număr de ore pe săptămână	3	Din care: 3.2 curs	2	3.3 seminar/laborator	1 	
3.4 Total ore din planul de învăţământ	42	Din care: 3.5 curs	28	3.6 seminar/laborator	14	
Distribuţia fondului de timp:	ore	
Studiul după manual, suport de curs, bibliografie şi notiţe	30	
Documentare suplimentară în bibliotecă, pe platformele electronice de specialitate şi pe teren	30	
Pregătire seminarii/laboratoare, teme, referate, portofolii şi eseuri	70	
Tutoriat	14	
Examinări 	14	
Alte activităţi: ..................	-	
3.7 Total ore studiu individual	158	
3.8 Total ore pe semestru	200	
3.9 Numărul de credite	8	

4. Precondiţii (acolo unde este cazul)
4.1. de curriculum	•	Fundamentele programării
•	Programare orientată pe obiecte
•	Programare logică și funcțională	
4.2. de competențe	•	Cunoștințe de programare la nivel mediu	

5. Condiţii (acolo unde este cazul)
5.1 De desfăşurare a cursului	•	Videoproiector, acces la Internet	
5.2  De desfăşurare a seminarului/laboratorului	•	Calculatoare,  acces la Internet , tool-uri UML	

6. Competenţele specifice acumulate
Competenţe profesionale	•	Înțelegerea și operarea cu conceptele de bază ale programării.
•	Capacitate de analiză și sinteză.
•	Folosirea la nivel profesional a instrumentelor și limbajelor specifice dezvoltării de software.
•	Cunoașterea aspectelor specifice ale principalelor paradigme de programare.	
Competenţe transversale	•	Abilități de comunicare profesională; capacitatea de a descrie succint și precis rezultatele profesionale, oral și în scris.
•	Capacitate de muncă independentă; capabilitatea de a îndeplini roluri diferite într-o echipă.
•	Capabilități anteprenoriale.	

7. Obiectivele disciplinei (reieşind din grila competenţelor acumulate)
7.1  Obiectivul general al disciplinei
	•	Cunoașterea și înțelegerea conceptelor fundamentale ale programării. 
•	Capacitatea de a aplica diverse paradigme de programare la diverse proiecte de programare.	
7.2  Obiectivele specifice
	La sfârșitul cursului, studenții trebuie să
•	cunoască principalele caracteristici ale diverselor paradigme de programare: procedurală, orientată pe obiecte, funcțională, logică, bazată pe componente, bazată pe evenimente
•	cunoască semantica următorilor termeni: variabilă, obiect, tip de date, componentă, clasă, interfață, polimorfism;
•	învețe asemănările și deosebirile dintre programarea bazată pe componente și programarea orientată pe obiecte din punctul de vedere al aspectelor ce privesc moștenirea și compunerea obiectelor;
•	înțeleagă importanța aspectelor vizând scala și granularitatea componentelor, ca și a celor vizând arhitectura sistemelor software.	

8. Conţinuturi
8.1 Curs	Metode de predare	Observații	
1.	Paradigme de programare. Definiții. Principalele paradigme de programare. Stiluri de programare	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	  Demonstraţia didactică
		
2.	Definiția componentelor software. Termeni de bază: componentă software, obiect, modul, interfață, refolosirea software-ului. Standardizarea componentelor	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	Demonstraţia didactică		
3.	Componente, interfețe, re-entranță. Diferite tipuri de  interfețe pentru componente. Constituenții unui contract	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	Demonstraţia didactică		
4.	Componente, interfețe, re-entranță. Relații client-server în sisteme procedurale, obiectuale și bazate pe componente.	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	  Demonstraţia didactică		
5.	Polimorfism. Conceptul de tip de date în contextul limbajelor de programare. Extensibilitatea tipurilor și extensibilitatea independentă a componentelor software 	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	  Demonstraţia didactică		
6.	Polimorfism. Aspecte privind siguranța în sistemele bazate pe componente. Evoluția interfețelor și contractelor	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	  Demonstraţia didactică		
7.	Mecanisme de reutilizare: moștenirea și compunerea obiectelor. Tipuri de moștenire. Avantaje și neajunsuri în folosirea moștenirii	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	  Demonstraţia didactică		
8.	Mecanisme de reutilizare: moștenirea și compunerea obiectelor. Moștenirea de interfețe. Delegarea, compunerea, moștenirea și polimorfismul	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	  Demonstraţia didactică		
9.	Aspecte arhitecturale în sistemele bazate pe componente. Refolosirea componentelor. Clasificarea componentelor din punctul de vedere al reutilizării 	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	  Demonstraţia didactică		
10.	Aspecte arhitecturale în sistemele bazate pe componente. Șabloane de proiectare. Framework-uri. Arhitectura software pentru sistemele bazate pe componente	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	  Demonstraţia didactică		
11.	Stiluri de programare în universul componentelor. Programare orientată pe conexiuni. Evenimente șimesaje	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	  Demonstraţia didactică		
12.	Stiluri de programare în universul componentelor. Interfețe de dispecerare și metaprogramare. Scripting	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	  Demonstraţia didactică		
13.	Modele de interconectare pentru componentele software. Caracteristicile generale ale unui model de interconectare a componentelor. OMG CORBA, OMA	•	Expunerea interactivă
•	Conversaţia

14.	Modele de interconectare pentru componentele software. Sun Java: JavaBeans, Enterprise Java Beans. Microsoft: COM, ActiveX, COM+, .NET. Recapitulare finală	•	Expunerea interactivă
•	Conversaţia
		
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.	STROUSTRUP, BJARNE The C++ Programming Language Special Edition, Addison-Wesley, 2000 chapter 2
4.	VAN ROY, PETER; HARIDI, SEIF Concepts, Techniques and Models of Computer Programming, MIT Press, 2004
5.	WEGNER, PETER; Concepts and paradigms of OOP, OOPSLA ’89 Keynote talk	
8.2 Seminar / laborator	Metode de predare	Observații	
1.	Stabilirea titlului/temei referatului	Conversația, dezbaterea, studii de caz, prezentări	Seminarul este structurat sub forma a 2 ore din 2 în 2 săptămâni	
2.	Stabilirea titlului/problemei pentru proiect	Conversația, dezbaterea, studii de caz, exemple		
3.	Prezentări de referate & rapoarte privind derularea proiectelor	Conversația, dezbaterea, studii de caz, prezentări		
4.	Prezentări de referate & rapoarte privind derularea proiectelor	Conversația, dezbaterea, studii de caz, prezentări		
5.	Prezentări de referate & rapoarte privind derularea proiectelor	Conversația, dezbaterea, studii de caz, prezentări		
6.	Prezentări de referate & rapoarte privind derularea proiectelor	Conversația, dezbaterea, studii de caz, prezentări		
7.	Demo cu aplicația realizată la proiect	Expuneri, demo-uri		
Bibliografie
Studenții vor căuta și folosi documentația referitoare la paradigmele de programare 
•	pe serverul departamentului (win/labor/Romana/master/PP/biblio)
•	pe web, folosind principalele baze de date cu lucrări de computer science
Adițional: The ELISA project http://jklunder.home.xs4all.nl		

9. Coroborarea conţinuturilor disciplinei cu aşteptările reprezentanţilor comunităţii epistemice, asociaţiilor profesionale şi angajatori reprezentativi din domeniul aferent programului

•	Acest curs urmează recomandările IEEE și ACM pentru studii ȋn ingineria software.
•	Conţinutul disciplinei este în concordanţă cu ceea ce se face în alte centre universitare din tară.
•	Conţinutul disciplinei este considera foarte important de către companiile software pentru a ȋmbunătăți deprinderile de dezvoltare de software.	

10. Evaluare
Tip activitate	10.1 Criterii de evaluare	10.2 Metode de evaluare	10.3 Pondere din nota finală(%)	
10.4 Curs	•	cunoașterea conceptelor de bază ale programării
•	aplicarea diverselor paradigme de programare la diverse domenii de problemă/aplicație	Examen scris	40%	
10.5 Seminar/ activități laborator	•	capacitatea de a investiga și studia literatura referitoare la paradigmele de programare
•	capacitatea de a rezolva o problemă folosind paradigme de programare diferite	•	Referat
•	Proiect
•	Prezența la seminar/laborator
•	Oficiu	20% 
20%
10%

10%	
10.6 Standard minim de performanţă	
•	Cel puțin nota 5 (pe o scară de la 1 la 10) la examenul scris, referat și proiect.	

Data completării		Semnătura titularului de curs		Semnătura titularului de seminar
01.10.2014		            Prof. dr.Bazil Pȃrv		 	Prof. dr.Bazil Pȃrv
Data avizării în departament			           Semnătura directorului de departament	
							Prof. dr. Bazil Pârv