Help

Course Information

Principles of ProgrammingLanguages (COMP 3816 R)

Term: 2018-2019 Academic Year Fall

Faculty

James B Marshall
Email address is hidden, click here to email

Schedule

Tue-Thu, 3:35 PM - 5:00 PM (9/10/2018 - 12/21/2018) Location: SLC SC 104

Description

Prerequisite: one semester of programming experience.
This course explores the principles of programming language design through the study and implementation of computer programs called interpreters, which are programs that process other programs as input. A famous computer scientist once remarked that, if you don’t understand interpreters, you can still write programs and can even be a competent programmer—but you can’t be a master. We will begin by studying functional programming using the strangely beautiful and very recursive programming language Scheme. After getting comfortable with Scheme and recursion, we will develop an interpreter for a Scheme-like language of our own design—gradually expanding its power in a step-by-step fashion. Along the way, we will become acquainted with lambda functions, environments, scoping mechanisms, continuations, lazy evaluation, nondeterministic programming, and other topics as time permits. We will use Scheme as our “meta-language” for explori