Students will be introduced to the main problems related to the development of a compiler for a programming language. For each of these problems, the corresponding theoretical results, tools and techniques leading to an algorithmic solutions will be highlighted.
Knowledge and understanding.
The classical subdivision of the compiling process in its phases will lead to a better understanding of the corresponding theoretical results and implementation techniques.
Applying knowledge and understanding.
Compiler principles and techniques have applications beyond the filed of formal language translation, spanning to natural language processing as well as the analysis, checking and transformation of (semi-) structured documents.
The complexity of the considered problem naturally leads to a comparison of different solution approaches and tools; students are stimulated to a critical comparison of the many design and implementation alternatives.
The preparation of a seminar to deepen one of the topics of the course allows students to refine their communication skills, both in written form and orally.
The study of a problem as complex as formal language translation is an excellent example of a synergy between important theoretical results and sophisticated algorithmic techniques.