Overview

This course is an introduction to programming languages, their paradigms, their syntax and their semantics. We will study the four main paradigms for languages through their models of computation. In order to understand how a language operates internally, i.e. its operational semantics, we will write interpreters for them, and we will use the object-oriented language Java and a parser generator, JavaCC, to do it.

So, after an introduction of the four main paradigms, and a brief look at the main ways of describing a language's semantics, we will then review/learn the basics of Java in order to write our interpreters. Along the way we will examine the structures of major languages in each paradigm: Fortran, Pascal and C in the imperative group; Smalltalk, Java and C++ in the Object-oriented group; Scheme, ML and Haskell in the functional group and Prolog in the logical group.

The assignments will involve implementing several features of different languages in Java. You will always start from working code that will be provided. The assignments will involve altering the code to add the desired new features. There will also be a midterm examination and a final examination. Look at the syllabus for more details.


Click here for an overview of the site
Click on Topics for the course materials, organized by topic
Click on Calendar for the course notes, in chronological order