The course comes with three introductionary lectures about different kinds of languages.
The very first lecture sets the scene for the course. It starts from a bigger, interdisciplinary picture and introduces fundamental concepts such as language, software languages, language software, interpreters, compilers, language processors, compiler compilers, and language workbenches.
The second introduction lecture focuses on the core concepts of so called imperative and object-oriented programming languages. It introduces the core abstractions in such languages and pays special attention to the notion of types. You will learn about static and dynamic type checking, type equivalence, polymorphic type systems, inheritance, method overloading and overriding, and static and dynamic dispatch.
The final introduction lecture focuses on domain-specific languages.