CISC 260: Programming Paradigms
Course Description
Winter 2006

Calendar Description:
Review of imperative programming features. Introduction to other widely used programming paradigms. Functional programming languages, such as LISP and Haskell. Higher order functions, lazy evaluation, abstract and recursive types, structural induction, symbolic expressions. Logic programming languages, such as PROLOG. Operational interpretation of predicates and terms, proof search, unification, backtracking. Typical applications.

The way I look at it, this course has two parallel goals. The first is a practical one and easy to understand. You will learn two new languages, Haskell and Prolog. These languages are a bit different from languages such as Java and C++ that you have learned so far in Queen's courses. They may be useful in later Queen's courses (especially if you're taking Cognitive Science and/or Artificial Intelligence), and in your career afterwards. Haskell in particular needs a bit more explanation. It is a "purely functional" language, meaning that it allows only a functional style of programming. (You'll learn what that means in the first few weeks of class.) While you may not encounter Haskell again, the ideas and techniques that you learn from studying Haskell will prepare you for the Lisp language, which is more widely used. Lisp allows you to mix functional programming with other styles, which makes Haskell a better language for your first exposure to functional programming.

The second goal of this course is a bit harder for students to understand at first, but just as important. This goal is to enlarge your concept of programming by exposing you to different programming paradigms -- hence the name of this course. A paradigm is a way of thinking about the programming task; we'll discuss this more during the first lecture. So far in Queen's classes, you have learned about the imperative paradigm; a program consists of a sequence of instructions to the computer, most of which involve accessing and modifying the memory of the computer. Haskell uses a functional paradigm, in which the desired result of a function is written as a mathematical function of the arguments. Prolog uses a logical paradigm, in which we use the language of logic to express the relationships between values -- notably the relationships between some initial input and the desired output. Learning to program using these two new paradigms will enlarge your concept of programming. Understanding different programming paradigms can change the way you think about solving problems, no matter what languages you end up using.

back to home page


This page maintained by Margaret Lamb, Queen's University, Kingston, Ontario.  Last modified