COMP 321: Principles of Programming Languages

Dan Licata Spring, 2014


In this course, you will learn the theory and practice of programming languages. Specifically, you will learn to:

You will apply these skills to study programming language features such as functions, data types, dynamic typing, polymorphism, abstract types, objects, control effects, state, laziness, parallelism, and concurrency.

Prerequisites: COMP 212, or permission of instructor. Students without knowledge of functional programming (as is often taught in CS II) may need to do some extra background reading.


There will be two course meetings per week, Tues-Thurs 2:40-4pm in Exley 137. This time will be used for chalk-board lectures, and possibly for interactively coding as a whole class and small-group or individual work. Lectures will be your primary source of information for the course, and attendance is strongly encouraged.

There will be 6 or 7 homework assignments, each 1 to 2 weeks in duration. Assignments will have both written and programming components; programming will be in Standard ML.

Readings will be assigned from Practical Foundations for Programming Languages by Robert Harper. An online preview is available here.


Your grade will be based on homework assignments (50%), a midterm exam (20%), a final exam (25%), and class participation (5%). (Percentages are subject to change.)
Valid CSS! Valid XHTML 1.0 Strict