CSEN 403 Concepts of Programming languages

Course Information


  • 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.


  • Programming Language Concepts and Paradigms by David A. Watt (Prentice-Hall, 1990).