Questions for the “Software and programming language theory” course (spring 2018)
Lecturers: V. A. Vasenin, M. A. Krivchikov
- History of programming languages. Programming languages generations.
- Programming languages classification. Type systems.
- Programming languages classificaiton. Evaluation strategy.
- Programming languages classification. Programming paradigms (functional, object-oriented, logical).
- Syntax of programming languages. General notion. Lexical analysis. Chomsky hierarchy. BNF.
- Syntax of programming languages. General notion. Alternative methods of specification: PEG, TDOP.
- Syntax of programming languages. General notion. Implementation: attribute grammars, parser combinators.
- Formal syntax of programming languages. Lexical and syntax analysis models.
- Formal syntax. Total parser combinators.
- Static semantics. Name binding and scoping.
- Formal static semantics: mathematical models, implementation in proof assistants.
- Static and dynamic semantics. Type systems of programming languages. Type checking and type inference.
- Type systems of the programming languages. Higher-order abstract syntax. Parametric higher-order abstract syntax.
- Operational semantics. Structural (small-step) operational semantics.
- Operational semantics. Natural (big-step) operational semantics.
- Operational semantics. Implementation in proof assistants (Clight in CompCert).
- Denotational semantics. General notion. Meaning functions.
- Denotational semantics. Domain theory. Fixed points.
- Denotational semantics. Implementation. Monads.
- Axiomatic semantics. Hoare logic. Soundness and completeness.
- Axiomatic semantics. Notion of weakest preconditions and verification conditions.
- Domain-specific languages.
- Intermediate representation languages.