- Concepts
- Syntax
- BNF
- Object orientation
- Concepts in Python
- Traits
- Case classes
- Information hiding
- Nested functions, classes, modules
- Multiple inheritance
- Diamond problem
- Approaches taken by different languages
- Type systems
- Type conversion
- Type equivalence
- Determining types (type inference)
- Optional type
- Dynamic vs static
- Scope
- Method binding
- Typing
- Logic programming concepts
- Unification
- Backtracking, derivation trees [We drew a couple of them on the board, see the Prolog tutorial for more]
- Functional programming concepts
- Lambdas
- Closures
- Code is data is code
- Scripting Languages
- Characteristics / uses
- Syntax
- Languages
- All of them we’ve used – focus on Scala, Prolog, Python