CS 3366 Programming Languages
Spring 2017

Computer Science Department
The Morrissey College of Arts and Sciences
Boston College

About Staff Textbook Grading Canvas Calendar Notes
GitHub Piazza Resources OCaml StdLib Pervasives Manual
Anyone interacting with a computer must communicate with it using some kind of language. From the application user's point of view this is often a languages of gestures, menu selections and typed text with each application having its own little "user language."

The programmer is interested in getting the computer to carry out some complex task, usually repeatedly. He or she must specify the steps in such a way that they can ultimately be expressed to the computer in its native machine language. Although it's possible for the programmer to express the desired steps directly in the native machine language, this turns out to be impractical for many reasons. Instead, the programmer usually expresses his or her computation in a high-level programming language, and relies on another program, a compiler, to translate the high-level program to machine language. What are the desired characteristics of such a high-level programming language? It depends on many things. In general, we would like them to be such that at least the following properties hold:

  • The language can be reliably implemented on the underlying machine.
  • The language can be efficiently implemented on the underlying machine.
  • The language supports the programmer in that it doesn't require too much useless work.
In this course we will study the design, specification and implementation of programming languages with these properties in mind.

This is a rigorous, hands-on course that follows the learn-by-doing philosophy. Students will learn about the design and specification of programming languages and will learn how to implement various language features. Two major subplots are: 1. to give you better insight into the nature of software and the software engineering process, and 2. to introduce you to the increasingly popular fun style of programming.

Created on 01-09-2017 19:04.