CPSC 511:
Programming Languages Fundamentals and Applications


News

Important Links


Why take this course

Increasingly programming language techniques are being used to solve a variety of hard problems in software systems. Partial evaluation is used to automatically synthesize optimized implementations for spefic deployment contexts, from more generic high-level implementations. Sophisticated type systems and static analysis tools are being developed to find different kinds of bugs in software systems. Reflection is used throughout web servers to enable dynamic deployment and configuration of webservices. Continuation passing style can be used to reconcile the stateless web-based http protocol with the implementation of statefull web applications, without ending up with hopelessly convoluted code.

This course will give you a solid foundation in programming language techniques and show you how programming language experts think about building complex systems.

Course Overview

We will cover a number of fundamental ideas in programming languages, and for each idea we will trace a bridge from the basic idea, through advanced research, to practical applications. Following is a tentative list of topics we will likely cover.

This list of topics may change based on the specific interests of the students in the course. We will use a variety of tools to explore each topic area, including writing simple interpreters as semantic models and developing simple applications with tools such as the PLT web server, the Esc/Java static checker, the AspectJ programming environment, MetaML, etc.

Course Style

We will do this by building working model implementations in Scheme. These models will be simplified and emphasize conceptual understanding of high-level semantics and key ideas in implementation.

On the other hand we will look also at how some of these ideas have have actual impact and applications in the construction of real systems.

Your work

In this course, you will: