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

SYLLABUS

I. Date generale
Codul	Disciplina	
MIF0003	Limbaje formale şi tehnici de compilare	

Semestrul	Ore: C+S+L	Categoria	Statutul	
3	2+1+1	specialitate	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	
LUPSA Dana	Dr.	Lect.	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
Gramatici si limbaje; clasificarea lui Chomsky; gramatici regulare, automate finite si echivalenta lor; gramatici independente de context, automate push-down si echivalenta lor.
Notiuni de costructia compilatoarelor: fazele compilarii, analiza lexicala, analiza sintactica, analiza semantica.	

IV. Conţinutul disciplinei
I. Gramatici, limbaje, automate

Gramatici regulare si automate finite
Gramatici independente de context  si automate pushdown
Automate Turing
Gramatici speciale - gramatici LR(k), LL(k), gramatici de precedenta

II. Compilatoare

Prezentarea generala a problemelor proiectarii si implementarii limbajelor
de programare
Analiza lexicala
Analiza sintactica - metode ascendente, metode descendente
Forme intermediare
Generarea codului
Optimizarea codului

V. Bibliografie
1.  A.V. AHO, D.J. ULLMAN - The theory of parsing, translation and compiling, Prentice-Hall, Engl. Cliffs., N.J., 1972, 1973.
2. J.E. HOPCROFT, D. J. ULLMAN. - Introduction to Automata Theory, Languages, and Computation. Addison-Wesley, 1979.
3. G. MOLDOVAN, V. CIOBAN, M. LUPEA - Limbaje formale si automate. Culegere de probleme, Univ. Babes-Bolyai, Cluj-Napoca, 1996.,l http://math.ubbcluj.ro/~infodist/alf/INDEX.HTM
4. S. MOTOGNA - Metode de proiectare a compilatoarelor, ed. Albastra, 2006.
5. L.D. SERBANATI - Limbaje de programare si compilatoare, Ed. Academiei RSR, 1987.
6. manual UNIX: flex, bison	

VI. Tematica activităţilor didactice pe săptămâni
sapt.1
	Prezentarea generala a problemelor proiectarii si implementarii unui compilator
	Gramatici si limbaje; clasificarea lui Chomsky
referinte: 
		Moldovan, cap.1
		Motogna, cap1

sapt.2
		Gramatici regulare
referinte:
		Hopcroft, cap. 2
		Moldovan, cap.1

sapt.3
	Automate finite. Determinism
	Echivalenta dintre automatele finite si gramaticile regulare
referinte:
		Hopcroft, cap. 2
		Moldovan, cap.1

sapt.4
Expresii regulare
Echivalenta dintre AF si expresiile regulare
referinte:
		Moldovan, cap.1

sapt.5
Limbaje regulare: proprietati de inchidere, lema de pompare
referinte:
		Moldovan, cap.1
		Hopcroft, cap. 3

sapt.6
	Structura unui compilator
	Analiza lexicala (etapa in cadrul compilarii)
	Generator de analiza lexicala lex/flex
referinte: 
		Motogna, cap2
		man. UNIX

sapt.7
	Gramatici si limbaje independente de context
Analiza sintactica
referinte: 
		Hopcroft, cap. 4
		Moldovan, cap.1

sapt.8
	Analiza sintactica ca etapa in cadrul compilarii
	Generator de analiza sintactica yacc/bison
referinte:
		Motogna, cap.3
		man. UNIX

sapt.9
	Automate push-down
	Echivalenta cu gramaticile independente de context
	Determinism
referinte:
		Hopcroft, cap. 5
		Moldovan, cap.1

sapt.10
	Gramatici speciale - gramatici LL(k)
referinte: 
		Aho, cap.7, 8
		Motogna, cap. 3

sapt.11
	Gramatici speciale - gramatici LR(k)
referinte: 
		Aho, cap.7, 8
		Motogna, cap. 3
		Serbanati, cap. III.2

sapt.12
	Gramatici speciale - gramatici LR(k)
referinte: 
		Aho, cap.7, 8
		Motogna, cap. 3
		Serbanati, cap. III.2

sapt.13
	Analiza semantica
	Forme intermediare, Generarea codului intermediar, Optimizarea codului intermediar
referinte:
		Motogna, cap.4,5,6
		Serbanati, cap. 4

sapt.14
Gramatici speciale - gramatici de precedenta
Automate Turing
referinte:
		Aho, cap. 8
		Hopcroft, cap. 7
		Serbanati, cap. III.2	

VII. Metode didactice folosite
Expunerea: descrierea, explicaţia, prelegerea cu demonstraţii, prelegeri introductive. 
Conversaţia: conversaţia euristică, dezbaterea, dialogul, conversaţii introductive, conversaţii de fixare şi consolidare a cunoştinţelor, conversaţii de sistematizare şi sinteză, conversaţii de aplicare 
Demonstraţia didactică: demonstraţia la tablă .
Modelarea: utilizarea modelelor. 
Algoritmizarea: algoritmi de rezolvare. 
Problematizarea: utilizarea întrebărilor-problemă, problemelor şi situaţiilor-problemă. 
Alte metode: studiul de caz; studiul individual, exerciţiul.

VIII. Evaluare
Nota finala obtinuta la aceasta disciplina va reflecta atat activitatea la seminar si la laborator cat si cunostintele acumulate de studenti.
Nota finala se calculeaza astfel:
25% nota_laborator + 75% nota_examen (incluzand si activitatea la seminar).

IX. Bibliografie suplimentară
1. D. GRIES - Compiler construction for digital computers,, John Wiley, New York, 1971.
2. M. SIPSER, Introduction to the theory of computation, PWS Pulb. Co., 1997. 
3. Internet  - alte resurse 	

	Data,							Titular curs,
	20 aprilie 2007							Lect. Dr. LUPSA Dana