UNIZG-FER 86504 Programming Language Translation
The course "Programming Language Translation" is an English Level 1 course. That means that all teaching activities are held in Croatian. However, foreign students in mixed groups have the opportunity to attend additional office hours with the lecturers and teaching assistants in
English to help master the course materials. Additionally, the lecturers will refer foreign students to the literature in English, as well as give them the possibility of taking the exams in English.
•
Independent study of recommended reading
•
Laboratory exercises
•
Individual office hours with the lecturers and teaching assistants (on-demand)
[1] Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman: Compilers: Principles,
Techniques, and Tools (2nd Edition) , Addison Wesley, 2006
Exams are conducted through two written tests. The midterm exam in the middle of the semester covers the topics related to the lexical analysis, syntax analysis, and semantic analysis. The final exam at the end of the semester covers the entire course topic.
Selected topics from [1]
1.
Introduction
2.
A Simple Syntax-Directed Translator
3.
Lexical Analysis o excluding sections:
3.9 Optimization of DFA-Based Pattern Matchers
UNIZG-FER 86504 Programming Language Translation
4.
Syntax Analysis o excluding sections:
4.7.5 Efficient Construction of LALR Parsing Tables
5.
Syntax-Directed Translation o excluding sections:
5.2.3 S-Attributed Definitions
5.5.4 Bottom-Up Parsing of L-Attributed SDD's
All topics included in the midterm exam +
6.
Intermediate-Code Generation o excluding sections:
6.1.2 The Value-Number Method for Constructing DAG's
6.3.6 Fields in Records and Classes
6.5.3 Overloading of Functions and Operators
6.5.4 Type Inference and Polymorphic Functions
6.8 Switch Statements
7.
Run-Time Environments (sections 7.1, 7.2, 7.3 only) o excluding sections:
7.2.4 Variable-Length Data on the Stack
8.
Code Generation o excluding sections:
8.5.5 Representation of Array References
8.5.6 Pointer Assignments and Procedure Calls
8.8.2 Usage Counts
8.8.3 Register Assignment for Outer Loops
8.9.3 Pattern Matching by Parsing
8.9.4 Routines for Semantic Checking
8.9.5 General Tree Matching
8.10 Optimal Code Generation for Expressions
8.11 Dynamic Programming Code-Generation
Exchange students can choose between two options for doing laboratory exercises. One option is to do a lab in a team as other non-exchange students do. Another option is to work individually on a separate project. Please, choose the option that fits better for you and let us know as soon as possible.
UNIZG-FER 86504 Programming Language Translation
Labs are organized as group projects. Students grouped into teams of up to 6 members (one of them being the team leader) build their own compiler. It is the exchange student’s responsibility to find a group of other students to work with.
We recommend our exchange students to find a group as soon as possible. This is either possible by visiting lecture hours to socialize and to find a group to join or to contact team leaders via email. Contact information of team leaders will be either announced on the course web site during the first week of the semester or sent by email on request.
Important notice: Since the lab instructions are not available in English, this option might require some additional effort from group leader and other members to explain exchange students what to do.
Exchange students work individually on a separate project, using Lex/Yacc parser generators.
Depending on the number of exchange students enrolled, this option can also be conducted as a team project.
•
Midterm exam + final exam o
Minimum to pass: 50 % (no additional assessments on particular exams) o
Ratio in overall grade: 75 %
•
Laboratory exercises: o
Minimum to pass: 50 % o
Ratio in overall grade: 25 %
•
Acceptable (2)
•
Good (3)
•
Very Good (4)
•
Excellent (5)
50 %
63 %
75 %
88 %