What you will learn
- Understand the terms, definitions and mathematical basis for further delving into the field of compilers.
- Learn the architecture and internal structure of a compiler.
- Gain knowledge to understand how real-world compilers work. The acquired knowledge will be sufficient to even build his own small compiler.
About this course
This course provides an initial introduction to the field of programming languages, compilers, and other language tools. Some basic concepts and approaches in this area will be formulated, such as the operational semantics of programming languages, intermediate representation of programs, interpretation, program transformations, etc., and it will be shown how these concepts and approaches solve important and interesting practical problems.
The LaMa language will be used as the main tool throughout the course. It is a simple but fully functional imperative programming language containing expressions, assignments, control constructs, higher-order functions and dynamic data structures.
Whom this course is for
This course is for everyone who wants to learn how compilers are operating under the hood. Any person who uses a programming language will gain a knowledge of how the compiler sees the code on that language, what are the differences between different compilers and how the broader environment or the language works.
For this course you need to know at least one programming language. Also, functional programming concepts and mathematical notation knowledge are required
Meet the Instructors
How you will learn
The course consists of several chapters. Each chapter covers one theme in the field of compilers and consists of 2-5 topics. Each topic reveals some aspect of the theme.
After each topic there are multiple practical assigments. These assignments will help you to rememeber the material and better understand the nuances of the technology presented