Course: Formal Languages and Compilers

« Back
Course title Formal Languages and Compilers
Course code KIV/FJP
Organizational form of instruction Lecture + Tutorial
Level of course Master
Year of study not specified
Semester Winter
Number of ECTS credits 6
Language of instruction Czech
Status of course unspecified
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
Lecturer(s)
  • Lipka Richard, Ing. Ph.D.
Course content
1-Types of compilers, structure of compilers and interpreters. 2-Regular grammars and finite automata in lexical analysis, FLEX. 3-Introduction to syntactic analysis, Recursive Descent Metod. 4-Statements translation. 5-Declaration evaluation. 6-Run-Time storage allocation. 7-Interpretation. Checking test. 8-Code generation. 9-Features of context free grammars. 10-Deterministic top-down analysis. 11-LL(1) transformation. 12- Deterministic bottom-up analysis, LR grammars. 13-Formal methods for software construction, compiler generators.

Learning activities and teaching methods
Lecture with practical applications, Project-based instruction
  • Contact hours - 65 hours per semester
  • Individual project (40) - 40 hours per semester
  • Preparation for formative assessments (2-20) - 12 hours per semester
  • Preparation for an examination (30-60) - 50 hours per semester
prerequisite
Knowledge
use knowledge about programming structures
have a good knowledge of a high-level programming language, primarily Java or C
use knowledge of the theoretical informatics (especially Chomsky hierarchy)
use knowledge of data structures
use theoretical knowledge of discrete mathematic (especially about grahphs)
show basic knowledge of terms and methods of mathematics, probability and statistics
Skills
use basic knowledge of discrete mathematics
use basic knowledge of theoretical informatics (especially about regular languages)
use basic knowledge of programming techniques
be able to use higher programming languages to create complex programs
know how to create well documented, robust code, be able to practically use algorithmization, data structures and specific development tools
Competences
N/A
learning outcomes
Knowledge
have an overivew about formal tools for software construction
describe positive and negative impacts of implementation of different programming constructions and use them efficiently
describe the working of different parts of the high-level language compiler
describe the working of tools for the text processing
Describe principles and advantages of different programming paradigmas
Skills
use formal methods for software construction
Implement different program constructions
to efficiently use programming language for algorithm representation
implement a compiler of a simple language
Competences
N/A
N/A
N/A
teaching methods
Knowledge
Students' portfolio
Self-study of literature
Task-based study method
Textual studies
Lecture with visual aids
Project-based instruction
Practicum
Skills
Practicum
Students' portfolio
Competences
Textual studies
Students' portfolio
assessment methods
Knowledge
Test
Written exam
Group presentation at a seminar
Project
Skills
Skills demonstration during practicum
Project
Group presentation at a seminar
Competences
Skills demonstration during practicum
Group presentation at a seminar
Recommended literature
  • Aho, Alfred V. Compilers : principles, techniques, and tools. 2nd ed. Boston : Pearson Education, 2007. ISBN 0-321-49169-6.
  • Aho, Alfred V.; Sethi, Ravi; Ullman, Jeffrey D. Compilers : principles, techniques, and tools. Reading : Addison-Wesley, 1988. ISBN 0-201-10088-6.
  • Melichar, Bořivoj. Jazyky a překlady. Vyd. 2., přeprac. Praha : Vydavatelství ČVUT, 2003. ISBN 80-01-02776-7.
  • Melichar, Bořivoj. Konstrukce překladačů. I. část. Vyd. 1. Praha : Vydavatelství ČVUT, 1999. ISBN 80-01-02028-2.
  • Molnár, Ludovít; Melichar, Bořivoj; Češka, Milan. Gramatiky a jazyky. Bratislava : Alfa, 1987.
  • Reinhard Wilhelm Helmut Seidl Sebastian Hack. Compiler Design. Berlin, 2013. ISBN 978-3-642-17539-8.
  • Thain, Douglas. Introduction to Compilers and Language Design. 2020. ISBN 979-8-655-18026-0.


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester