Course details

Formal Languages and Compilers (in English)

IFJe Acad. year 2024/2025 Winter semester 5 credits

This course discusses formal languages and their models. Based on these models, it explains the construction of compilers. The lectures are organized as follows: (I) Basic notions: formal languages and their models, grammars, automata; compilers. (II) Regular languages and lexical analysis: regular languages and expressions, finite automata, lexical analyzer; symbol table. (III) Context-free languages and syntax analysis: context-free grammars, pushdown automata, deterministic top-down syntax analysis (recursive descent), the essence of deterministic bottom-up syntax analysis. (IV) Semantic analysis and code generation: intermediate code generation, optimization, code generation.

Links

Exam prerequisites

To be allowed to take the final exam, the student must obtain 20 points during the semester; out of these 20 points, at least 5 points must be obtained from the project.

Guarantor

Course coordinator

Language of instruction

English

Completion

Credit+Examination (written)

Time span

  • 39 hrs lectures
  • 13 hrs projects

Assessment points

  • 55 pts final exam (written part)
  • 20 pts mid-term test (written part)
  • 25 pts projects

Department

Lecturer

Instructor

Learning objectives

Familiarity with formal languages and their models. Grasp of compiler construction.
Fundamental familiarity with the theory of formal languages. Ability of a compiler construction.

Recommended prerequisites

Prerequisite knowledge and skills

Discrete mathematics.

Study literature

  • Parsons, T. W.: Introduction to Compiler Construction. Freeman, New York, 1992.
  • Meduna, A.: Elements of Compiler Design. Taylor & Francis, New York, 2008.
  • Nystrom, R.: Crafting Interpreters.‎ Genever Benning, 2021, Available online http://craftinginterpreters.com.

Fundamental literature

  • Meduna, A.: Formal Languages and Computation: Models and Their Applications. Taylor & Francis, New York, 2014.

Syllabus of lectures

  • Basics of formal languages: alphabet, strings, languages.
  • Introduction to compiler design: structure of a compiler.
  • Regular languages and their models: regular expressions, finite automata.
  • Variants of finite automata.
  • Lexical analysis: lexical analyzer, symbol table.
  • Context-free languages and their models: context-free grammars, pushdown automata.
  • Pushdown automata and general parsing.
  • Deterministic top-down syntax analysis: recursive descent.
  • Deterministic bottom-up syntax analysis: simple precedence analysis.
  • Chomsky hierarchy and the corresponding models. Remarks and summary.

Syllabus - others, projects and individual work of students

The task is to implement and document a program which, given a composition of functions, transforms it to an equivalent mathematical expression. 

Progress assessment

  • Mid-term exam - 20 points.
  • Project - 25 points.
  • Final exam - 55 points. To be allowed to take the final exam, the student has to obtain 20 points during the semester; out of these 20 points, at least five points have to be obtained from the project.

 

 


 

Schedule

DayTypeWeeksRoomStartEndCapacityLect.grpGroupsInfo
Tue exam 2025-01-28 E104 10:0011:50 IFJe: 2. termín
Tue exam 2025-02-04 E104 10:0011:50 IFJe: 3. termín
Tue exam 2024-11-05 E105 12:0013:40 IFJe: Midterm Test
Tue lecture 1., 2., 3., 4., 5., 6., 8., 9., 10., 11., 12., 13. of lectures L314 12:0014:5030 1EIT 2EIT INTE MITP-EN xx Meduna
Tue lecture 2024-10-29 L314 12:0014:5030 1EIT 2EIT INTE MITP-EN xx Havel
Thu exam 2024-12-12 L314 09:0011:00 IFJe: Early term of final exam (preterm)
Thu exam 2025-01-16 G202 14:0015:50 IFJe: 1. termín

Course inclusion in study plans

Back to top