Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Informatică
Programul de studii: Informatică - în limba engleză
Limba de predare: Engleză

SYLLABUS

I. General data
Code	Subject	
MIF0005	Advanced  Compiler Design 	

Semester	Hours: C+S+L	Category	Status	
6	2+0+2	speciality	optional	

II. Full status faculty members
Name and	Scientific	Didactic	Chair	Type of activity	
surname	title	title		C	S	L	
MOTOGNA Simona Claudia	Ph.D.	Assoc.Prof.	Programming  Languages and Methods	*			

Associated faculty members
Name and	Scientific	Institution	Type of	Type of activity	
surname	title		position	C	S	L	

III. Course objectives
The course is a continuation of Formal Languages and Compiler Design. It will cover the back end part of a compiler and also modern mechanisms for compiler implementation, taking into consideration various optimizations for different programming languages. The students should be able to understand compiler design and to implement these techniques.

IV. Course contents
I. Semantic Analysis: attribute grammars, manual methods
II. Back-end of a compiler: 
  II.1 Intermediary code generation
  II.2 Optimization of intermediary code
  III.3 Object code generation
III. Language-dependent mechanisms in compiler implementation
   III.1 Functional and logical languages
   III.2 Imperative and object-oriented languages
   III.3 Distributed languages
IV. Advanced compiler techniques
   IV.1 Virtual machines
   IV.2 Garbage collection mechanism
   IV.3 Dynamic compilation

V. Bibliography
1. GRUNE, DICK - BAL, H. - JACOBS, C. - LANGENDOEN, K.: Modern Compiler Design, John Wiley, 2000 
2. MITCHELL, JOHN: Foundations for Programming Languages, MIT Press, 1996 
3. RICHTER, J.: Applied Microsoft .NET Framework Programming, Microsoft Press, 2002
4. LIDIN, SERGE: Inside .NET IL Assembler, Microsoft Press International, 2002
5. STUTZ, DAVID - NEWARD, TED - SHILLING, GEOFF: Shared Source CLI Essentials, O@Reilly UK, 2003
6. MOTOGNS, S. – Metode de proiectare a compilatoarelor, Ed. Albastra, 2006
7. Sun Java Systems, [http://docs.sun.com/db/prod/java.sys], 01.09.2004	

VI. Thematic of didactic activities per weeks
Week 1. Semantic Analysis: attribute grammars, 
Week 2. Atrribute evaluators, special classes of attribute grammars: L-attribute grammars, S- attribute grammars.
Week 3. Manual methods:
-	Control Flow Graph
-	Symbolic Interpretation
-	Data flow Equations
Week 4.Intermediary code generation: 3 address code
Week 5. Optimization of intermediary code
Week 6. Object code generation
Week 7. Language-dependent mechanisms in compiler implementation
Week 8. Imperative and object-oriented languages: identification, type tables
Week 9. Imperative and object-oriented languages: data type representation, activation record, object-oriented features (inheritance, polymorphism)
Week.10. Functional languages: syntactic desugaring, translation of functions and patterns
Week 11. Logical languages: implementation of clauses manipulation
Week  12.  Advanced compiler techniques: Virtual machines   and  Dynamic compilation
Week  13.  Advanced compiler techniques:   Garbage collection mechanism
Week 14. Exam

VII. Didactic methods used
The course is based on the following methods: exposure, conversation, didactical proof, modeling. The laboratory will focus on: discovery and case studies, algorithmization and implementation.	

VIII. Assessment
The final grade will take into consideration:
- project (practical) 40%
- presentation (case study + domain review) 20%
- written exam 40%	

IX. Additional references

	Dean,							Chair head,

	Date,							Course responsible,
								Assoc.Prof. MOTOGNA Simona Claudia, Ph.D.