Syntax of programming languages:
- Concrete and abstract syntax
- Static and dynamic semantics
- Truth trees
- Regular expressions and grammars
- Lexical analysis and syntax analysis
Functional programming concepts:
- Primitive data types
- Records and variants
- Declarations
- Higher order functions
- Parametric polymorphism
Imperative programming concepts:
- Input and output
- Control structures
- References
- Exception handling
- Basics of memory management
Object-oriented programming:
- Objects and classes
- Encapsulation and access control
- Inheritance
- Subtype polymorphism
- Modularisation
Algorithms:
- Basic search and sort algorithms
- Data structures: lists, arrays and trees
- Algorithmic problem solving
Correctness and termination:
- Testing
- Specification: invariants, pre- and post conditions
- Induction