Programming Paradigms
The Nature of Programming Languages
- Imperative languages v non-imperative languages
- Scripting languages
- Data-oriented languages
- Object-oriented languages
- Event-driven programming
- Language standardisation
Programming Environments
- Compilers
- Interpreters
- Interactive development tools
- Run-time support environments
- Debugging tools
- Testing tools
- Configuration management
Object Orientation
- Basic concepts: objects, classes, methods, overloading methods, messages inheritance: overriding methods, single inheritance, multiple inheritance Interfaces (e.g. in Java), encapsulation, polymorphism
Functional Programming
- Definition of a function: domain and range, total and partial functions, strict functions
- Recursion
- Referential transparency
- Side effects of functions
Logic Programming
- Basic constructs
- Facts: queries, existential queries, conjunctive queries, rules
- Definition of a logic program
- Semantics of a logic program
- Recursive programming: Computational model of logic programs, unification
- Goal reduction
- Negation in logic programming
Related Issues
- Visual programming
- Concurrency
- Distribution

