Computer Science 251
Theory of Programming Languages
Spring 2014

Welcome to CS251
In this course you will learn the dimensions of modern programming language such as synatx, naming, state, data control, concurrency, nondeterminism, and types. These dimensions are explored via mini langauges interpreters written in OCaml, Scheme, and Haskell that students experiment with and extend. We will cover major programming paradigms including function-oriented, imperative, object-oriented, and logic programming.
Prerequisite: CS230 or permission of instructor
Distribution: Mathematical modeling
Semester: Fall, Unit: 1.00

There is one textbook in this course: Introduction to the Objective Caml Programming Language by Jason Hickey. We will use parts of this bookto learn the OCaml programming language, which will be our main implementation langauge in the course. This book will soon be published by Cambridge University Press; we will be using an on-line draft copy.

Course Conference
The course conference will contain announcements and changes to the schedule. Please check this conference before each class and especially before an assign is due. In addition, the conference will contain a section for CS251 students ask and answer questions among themselves concerning course material and assignments. You may discuss the homework in general terms, suggest where to go in the text or lecture notes to help someone get started, or you may help clarify an ambiguous question. However, please do not post your solutions either complete or partial. I will check the conference regularly to help with any unanswered questions.

Course Materials
CS251 course materials for each class will be handed out at the beginning of each lecture. Copies are available in .pdf format using the links on this page and require the Adobe Acrobat Reader program for on-screen viewing and printing. The course resource page contains all manner of documentation for the languages and programs used in this course.

Randy Shull (
Based on JavaScript calendar program by Mark A. Sheldon (
Computer Science 251, Spring 2014
Last Modified: March 28, 2014
Page Expires: May 31, 2014