Course Lecturer

Prof. Dr. Slim Abdennadher

Course Assistants

Ms. Noha Salem


I. Course description

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

 

Throughout this course, students will learn about a variety of different programming languages and their relative strengths and weaknesses. They will gain experience designing and writing programs in a selected set of languages using their ability to distinguish between the different paradigms reaching finally an efficient implementation.

Recommended Textbook

Lecture Notes