Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Informatică
Programul de studii: Informatică - linia de studiu română
Limba de predare: Română

SYLLABUS

I. Date generale
Codul	Disciplina	
MID0011	Fundamentele limbajelor de programare	

Semestrul	Ore: C+S+L	Categoria	Statutul	
4	2+0+2	specialitate	opţională	

II. Cadre didactice cu norma de bază în Universitate
Numele şi	Titlul	Gradul	Catedra	Tipul activităţii	
prenumele	ştiinţific	didactic		C	S	L	
VANCEA Alexandru Ioan	Dr. 	Lect.	Sisteme Informatice	*			

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

III. Obiectivele disciplinei
Dobandirea de cunostinte asupra conceptelor generale si fundamentale relative la proiectarea si implementarea limbajelor de programare, in contrast cu invatarea detaliata a unuia sau doua limbaje fara a intelege pe deplin semnificatia conceptelor vehiculate; 
Analiza critica a elementelor de limbaj dezvoltate pana in prezent cu accent pe o comparatie a avantajelor si dezavantajelor prezentate de fiecare; Dezvoltarea capabilitatilor decizionale si analitice ale studentilor, trasaturi care ii vor evidentia si defini intr-un mod avansat in raport cu un simplu programator; 
Ca obiectiv imediat se asteapta ca studentul sa fie capabil de a aprofunda mult mai repede orice limbaj de programare in fata caruia va fi pus, deoarece acest proces se va face intotdeauna de acum inainte prin prisma conceptelor si mecanismelor general valabile la nivelul proiectarii si implementarii limbajelor de programare, intelese si retinute de-a lungul semestrului;	

IV. Conţinutul disciplinei
1. Evolutia limbajelor de programare. 
2. Proiectarea limbajelor de programare. 
2.1. Etapele realizarii unui produs program. 
2.2. Criterii de proiectare a unui limbaj de programare. 
2.3. Criterii de calitate ale unui produs program. 
3. Lexic, sintaxa, semantica. 
3.1. Specificarea sintaxei unui limbaj de programare: BNF. Diagrame de sintaxa. Gramatici si automate. 
3.2. Traducerea programelor. Clasificari ale programelor traducatoare. Structura unui program traducator. Analiza: lexicala, sintactica, semantica. Sinteza: generarea codului intermediar si obiect. 
4. Variabile, expresii, instructiuni. 
4.1. Notiunea de variabila. Limbaje imperative si declarative. Instructiunea de atribuire. 
4.2. Expresii. Componente, tipuri, modalitati de evaluare. 
4.3. Structuri esentiale de control. Instructiuni conditionale. Instructiuni repetitive. Instructiuni de transfer. 
5. Tipuri de date si structuri de date. 
5.1. Notiunea de tip de data. Definitie si componente. 
5.2. Clasificari ale tipurilor de date. 
5.3. Tipuri de date predefinite. Tipuri numerice. Tipul Boolean. Tipul caracter si sir de caractere. 
5.4. Tipuri de date utilizator. Tipul multime. Tipul tablou. Tipul inregistrare. Tipul pointer. 
5.5. Echivalenta tipurilor de date. 
5.6. Probleme de inconsistenta ale utilizarii tipurilor de data. 
6. Vizibilitate si durata de viata. 
6.1. Domeniul de vizibilitate al unui nume. Determinarea statica a domeniului de vizibilitate. Determinarea dinamica a domeniului de vizibilitate. 
6.2. Durata de viata a unei variabile. 
6.3. Mecanisme de alocare a memoriei. Alocarea statica. Alocarea dinamica cu stiva de inregistrari. Alocarea dinamica cu fragmentare. 
7. Proceduri. Transmiterea parametrilor. 
7.1. Conceptul de procedura (subprogram). 
7.2. Metode de transmitere a parametrilor. 
7.3. Supraincarcarea operatorilor si a procedurilor. 
7.4. Recursivitate. Proceduri mutual recursive. 
7.5. Genericitate. 
7.6. Efect secundar. 
7.7. Corutine. 
7.8. Implementarea subprogramelor in limbaje fara structura de bloc si respectiv in limbaje cu structura de bloc. 
8. Facilitati de tratare a exceptiilor in cadrul limbajelor de programare. 
9. Paradigma programarii vizuale. Studii de caz: Visual Basic, Borland Delphi.

V. Bibliografie
1. FRENTIU, M., PARV, B.: Elaborarea programelor: metode si tehnici moderne, ProMedia, Cluj-Napoca, 1994. 
2. GHEZZI, C., JAZAYERI, M.: Programming Language Concepts, John Wiley, 1972. 
3. HOROWITZ, E.: Fundamentals of Programming Languages, Springer, 1973. 
4. MACLENNAN, B.J.: Principles of Programming Languages: Design, Evaluation and Implementation, Holt, Rinehart and Winston, 1973. 
5. PARV, B., VANCEA, A.: Fundamentele limbajelor de programare, Fascicolele 1-2, Lito Univ. "Babes-Bolyai", 1992. 
6. PRATT, T.W.: Programming Languages: Design and Implementation, Prentice Hall, 1975 
7. SHAMMAS, N.: Object Oriented Programming with Turbo Pascal, Prentice-Hall, 1990 
7. VOSS, G.: Object-Oriented Programming: An Introduction, Osborne McGraw-Hill, 1991. 
9. PARV, B., VANCEA, A.: Fundamentele limbajelor de programare, Ed.Microinformatica, 1996. 
10. * * * - Reteaua Internet.

VI. Tematica activităţilor didactice pe săptămâni

VII. Metode didactice folosite

VIII. Evaluare
- lucrarile de laborator trebuie insotite de analize asupra elementelor de limbaj implicate precum si de comparatii intre acestea; 
- se pune accent nu pe reproducerea unor aspecte sintactice din cadrul limbajelor de programare, ci pe semantica lor, deci pe intelegerea intregii functionalitati si a implicatiilor ce le comporta prezenta unor constructii de limbaj; 
- se evalueaza capacitatea de a prezenta in scris, coerent si complet, o scurta documentatie de produs program precum si a subiectelor primite ca examen scris.

IX. Bibliografie suplimentară

	Decan,							Sef de catedra,

	Data,							Titular curs,
								Lect. Dr.  VANCEA Alexandru Ioan