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	Metode și tehnici de programare (pentru perfecționarea profesorilor)	
2.2 Titularul activităților de curs	Lect. dr. BOCICOR Iuliana	
2.3 Titularul activităților de seminar	Lect. dr. BOCICOR Iuliana	
2.4 Anul de studiu	1	2.5 Semestrul	2	2.6. Tipul de evaluare	E	2.7 Regimul disciplinei	Obligatorie	

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	36	
Documentare suplimentară în bibliotecă, pe platformele electronice de specialitate și pe teren	25	
Pregătire seminarii/laboratoare, teme, referate, portofolii și eseuri	44	
Tutoriat	18	
Examinări 	10	
Alte activităţi: ..................		
3.7 Total ore studiu individual	133	
3.8 Total ore pe semestru	175	
3.9 Numărul de credite	7	

4. Precondiţii (acolo unde este cazul)
4.1 de curriculum	Algoritmică și programare	
4.2 de competenţe	Abilități medii de programare	

5. Condiţii (acolo unde este cazul)
5.1 De desfăşurare a cursului	•	Sală de curs cu videoproiector	
5.2  De desfăşurare a seminarului/laboratorului		

6. Competenţele specifice acumulate

Competențe profesionale	•	Aprofundarea cunoștințelor legate de metodele de proiectare a algoritmilor și de programare.
•	Aprofundarea cunoștințelor legate de diverse tehnici de programare.
•	Aprofundarea cunoștințelor legate de noțiunile și conceptele de bază ale limbajului C standard.
•	Formarea deprinderilor și identificarea metodelor și tehnicilor adecvate pentru rezolvarea unor probleme reale
•	Capacitate de analiză și sinteză.	
Competențe transversale	•	Aplicarea regulilor de muncă organizată  și eficientă, cu respectarea principiilor și a normelor de etică profesională.
•	Manifestarea unor atitudini responsabile față de domeniul didactic și științific.
•	Capacitate de muncă independentă.
•	Utilizarea unor metode și tehnici eficiente de învățare și informare și dezvoltarea capacităților de valorificare a cunoștințelor.	

7. Obiectivele disciplinei (reieșind din grila competențelor acumulate)
7.1 Obiectivul general al disciplinei	•	Studierea unor metode și tehnici de programare pentru rezolvarea unor probleme reale, folosind limbajul C standard.	
7.2 Obiectivele specifice

	•	Studierea noțiunilor și conceptelor de bază ale limbajului C standard.
•	Formarea deprinderilor de utilizare a unor metode și tehnici de proiectare a algoritmilor și de programare.
•	Identificarea metodelor și tehnicilor adecvate de programare și utilizarea limbajului C standard pentru rezolvarea unor probleme reale
•	Însușirea unui stil de programare conform celor mai bune recomandări practice. 	

8. Conținuturi

8.1 Curs	Metode de predare	Observații	
1.	Limbajul de programare C. Introducere
•	Limbaje de programare high-level și low-level
•	Structura unui program C
•	Variabile și constante
•	Tipuri de date și operatori in C
•	Conversia tipurilor: conversii implicite/explicite
•	Citirea și scrierea datelor în C
	
•	Expunerea interactivă
•	Explicația
•	Conversația
•	Demonstrația didactică		
2 – 3. Metode de proiectare și programare
•	Metode de proiectare a algoritmilor:
•	Proiectarea ascendentă
•	Proiectarea descendentă
•	Proiectarea modulară
•	Module în C
•	Programarea structurată. Structuri de bază
•	Structurile if-then-else, switch-case
•	Structurile repetitive for, while. Structuri repetitive infinite.
	
•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	Demonstraţia didactică		
4.	Preprocesorul C
•	Rolul preprocesorului
•	Directivele #include, #define, #undef
•	Compilarea condițională: directivele #if, #ifdef, #ifndef, #endif
•	Include guards
•	Macro-operatori
•	Evitarea compilării multiple
	
•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	Demonstraţia didactică		
5.	Tipuri structurate de date ȋn limbajul C
•	Tablouri unidimensionale și bidimensionale
•	Șiruri de caractere și operații pe acestea
•	Definirea si utilizarea înregistrărilor (struct) în C
•	Înregistrări încuibate
•	Tipurile de date union, enum
•	Definirea unor structuri de date pentru operarea cu liste, stive, cozi.	
•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	Demonstraţia didactică		
6.	Subprograme ȋn limbajul C
•	Noțiunea de subprogram
•	Variabile globale și locale, vizibilitatea variabilelor
•	Parametri formali și parametri actuali
•	Transmiterea parametrilor
•	Funcții inline
•	Funcții recursive	
•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	Demonstraţia didactică		
7 – 9. Alocarea dinamică a memoriei
•	Pointeri și aritmetica pointerilor
•	Adrese, referințe, dereferențiere, operatorul sizeof în C
•	Alocarea și dealocarea memoriei: operatorii malloc (realloc, calloc)/free în C
•	Utilizarea pointerilor: avantaje și dezavantaje
•	Argumentele liniei de comandă în C
•	Echivalența între tablouri unidimensionale și pointeri
•	Tablouri bidimensionale reprezentare cu ajutorul pointerilor
•	Pointeri și constante
•	Tipul void și pointeri la void
•	Înregistrări conținând pointeri
•	Tablouri conținând înregistrări/pointeri la înregistrări
•	Pointeri la funcții	
•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	Demonstraţia didactică		
10.	Tehnici de programare – Divide et impera
•	Prezentare – considerații teoretice
•	Aplicații clasice și aplicații mai complexe
•	Implementări ȋn limbajul C	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	Demonstraţia didactică		
11.	Tehnici de programare – Backtracking I
•	Prezentare – considerații teoretice
•	Aplicații clasice și aplicații mai complexe
•	Implementări ȋn limbajul C	
•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	Demonstraţia didactică		
12.	Tehnici de programare – Backtracking II
•	Aplicații complexe în plan (bidimensional)
•	Implementări ȋn limbajul C	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	Demonstraţia didactică		
13.	Tehnici de programare – Greedy
•	Prezentare – considerații teoretice
•	Aplicații clasice și aplicații mai complexe
•	Implementări ȋn limbajul C	•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	Demonstraţia didactică		
14.	Tehnici de programare – Programarea dinamică
•	Prezentare – considerații teoretice
•	Aplicații clasice și aplicații mai complexe
•	Implementări ȋn limbajul C	
•	Expunerea interactivă
•	Explicaţia
•	Conversaţia
•	Demonstraţia didactică		
Bibliografie
1.	Cormen T.H., Leiserson C.E, Rivest R.L, Stein C. – Introduction to Algorithms (third edition), ISBN: 9780262533058, 2001.
2.	Knuth D.E. – The Art of Computer Programming, Addison-Wesley, 1968.
3.	Levitin A. – Introduction to the Design & Analysis of Algorithms (third edition), Addison-Wesley, 2002.
4.	Kernighan B.W., Ritchie D.M. – The C Programming Language, 2nd Edition, Englewood Cliffs, NJ: Prentice Hall 1988, ISBN 0-13-110362-8.
5.	Kalicharan N. C By Example. Cambridge University Press, 1996.
6.	Frențiu M., Pop H.F., Șerban G. – Programming Fundamentals, Ed.Presa Universitara Clujeana, Cluj-Napoca, 2006.
7.	Boian F., Vancea A. Iurian S. Limbajul C, culegere de probleme. Lito UBB, 1992.	
			
8.2 Seminar	Metode de predare	Observaţii	
		Seminarul este structurat sub forma a 2 ore din 2 în 2 săptămâni.	
1.	Aplicații practice simple
•	Rezolvarea unor probleme folosind programarea modulară în limbajul C.	•	Explicaţia
•	Conversaţia
•	Modelarea
•	Exerciţiul		
2.	Tablouri și tipuri structurate de date
•	Implementarea in C a unor algoritmi fundamentali de prelucrare a datelor structurate în tablouri (căutare secvențială și binară, sortări, interclasare).
•	Programare prin abstractizarea datelor. Folosirea înregistrărilor în C.	
•	Explicaţia
•	Conversaţia
•	Modelarea
•	Exerciţiul		
3.	Alocarea dinamică a memoriei
•	Rezolvarea unor probleme simple utilizând alocarea dinamică a memoriei în C.
•	Abordarea unor probleme reale pornind de la utilizarea tipurilor abstracte de date și definirea structurilor de date necesare, folosind pointeri, în C.	
•	Explicaţia
•	Conversaţia
•	Modelarea
•	Exerciţiul		
4.	Biblioteca IO standard în C. Lucrul cu fișiere
•	Citirea și scrierea datelor în fișiere text
•	Structura FILE
•	Utilizare funcțiilor din biblioteca IO standard pentru lucrul cu fișiere.	•	Explicaţia
•	Conversaţia
•	Modelarea
•	Exerciţiul		
5.	Stabilirea problemei pentru proiectul software – problemă practică reală, a cărei rezolvare presupune utilizarea uneia dintre tehnicile de programare prezentare la curs.	•	Conversația
•	Dezbaterea
•	Studiul de caz		
6.	Prezentare de referate și rapoarte privind derularea proiectelor	•	Conversația
•	Dezbaterea
•	Studiul de caz
•	Prezentări		
7.	Prezentarea aplicației realizate pentru proiectul software	•	Prezentări
•	Demo-uri		
Bibliografie
Studenții vor:
•	folosi documentația menționată în cadrul bibliografiei de la curs
•	căuta noi surse de informare referitoare la metode și tehnici de programare și la limbajul C
•	căuta articole de cercetare în legătură cu aplicațiile tehnicilor de programare prezentate în principalele baze de date cu lucrări de informatică sau domenii adiacente.

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

•	  Conținutul disciplinei este în concordanță cu ceea ce se face în alte centre universitare din tară și din străinătate.
•	Conținutul disciplinei asigură cunoștințele fundamentale necesare pentru rezolvarea de probleme folosind metodele și tehnicile consacrate de programare, precum și cunoștințele fundamentale pentru dezvoltarea de aplicații folosind limbajul C standard.	

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ă legate de metodele și tehnicile de programare prezentate.
•	Cunoașterea elementelor de bază ale limbajului C standard și capacitatea de a le utiliza in vederea dezvoltării de aplicații software.	
Examen scris	
40%	
10.5 Seminar/ activități laborator	•	Capacitatea de a aplica cunoștințele teoretice dobândite pentru dezvoltarea unor aplicații software în C.
•	Capacitatea de a studia literatura de specialitate în domeniul tematicii cursului.
•	Capacitatea de a dezvolta un proiect software.	
•	Referat teoretic
•	Proiect software
•	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		           	Lect. dr.Bocicor Iuliana		Lect. dr. Bocicor Iuliana
Data avizării în departament			           Semnătura directorului de departament	
							Prof. dr. Bazil Pârv