This course focuses on several programming paradigms. Lectures discuss commonalities and differences among the different languages, their syntax, their semantics, their type systems, their implementation methods as well as the features provided in their development environments. In this course, the following programming paradigms are introduced:
- Logic Programming: Prolog
- Functional programming: Haskell
- Procedural programming: C
- Object-Oriented programming: Java
For each of the above paradigms, the course will cover the following aspects:
- Names, variables, ADTs and data structures
- Parameter-passing mechanisms
- Typing: static and dynamic typing; weak and strong typing
- Polymorphism and genericity
- Memory management
- Exception handling techniques