Programming Language Theory and Practice

Fall 2018 and Winter 2019 quarters

Taught by

computer science, mathematics
computer science
  • UG


Students must have completed Computer Science Foundations or equivalent: 10  credits of computer programming, 8 credits of discrete mathematics, and 4 credits of computer architecture.

This program will explore what computers can do, how we get them to do it, and what they can't do. It is designed for advanced computer science students and students with an interest in both mathematics and computer science. The program covers topics selected from formal computer languages, computability theory, type theory, programming language design, and artificial intelligence. Students will also study a functional programming language, Haskell; learn the theoretical basis of programming languages; and do an in-depth comparison of properties and capabilities of languages in the four primary programming paradigms: functional, logic, imperative, and object-oriented.

Topics are typically offered in three or four of the following threads of study: The Formal Languages thread extends for two quarters and covers the theoretical basis of language definitions, concluding with a study of what is computable. The Functional Language thread extends for two quarters and covers advanced programming techniques using the programming language Haskell. The Type Theory and Programming Language thread covers both the theoretical basis and practical implementation of types and programming languages and extends for two quarters. The Artificial Intelligence thread begins in winter and covers machine-learning and techniques for building intelligent programs, along with related topics in programming languages and computability.

Program Details

Fields of Study

computer science mathematics

Preparatory For

computer science, mathematics, science, and education.


Fall Signature Winter Signature

Location and Schedule

Campus Location


Time Offered


Online Learning

Hybrid Online Learning < 25% Delivered Online