Programming Languages


  • Instructor: Ranjit Jhala (
  • TA: Michael Borkowski (
  • TA: Lisa Huang (
  • TA: Matt Kolosick (
  • TA: George Sakkas (


  • Lectures: Tu-Th 12:30 to 1:50pm
  • Location: P416 WEST (Outdoor tent) and Zoom link on CANVAS
  • Messages: Piazza
  • Final: Fri 12/10 11:30 - 2:30p


The goal of this class is to expose students to advanced programming language ideas, including high-level programming abstractions, expressive type systems and program analyses. We will develop these ideas as follows.

  1. First, we will see how the lambda calculus can be used to distill essence of computation into a few powerful constructs, and we will use it as a launching pad to study expressive type systems, logics and analyses that can make precise predictions about run-time behavior at compile time.

  2. Second, we will study how this calculus yields Haskell, a functional programming language that has been the incubator for many recent PL advances. We will use Haskell to learn about a variety of high-level programming abstractions and techniques.

For more details see the lecture plan.


The class is mostly self contained. However, it will be helpful to have some knowledge of basic discrete math, and it will be essential that you enjoy programming and have a desire to learn the material.

Integrity of Scholarship

University rules on integrity of scholarship will be strictly enforced. By taking this course, you implicitly agree to abide by the UCSD Policy on Integrity of Scholarship described here.

In particular, “all academic work will be done by the student to whom it is assigned, without unauthorized aid of any kind.” You are expected to do your own work on all assignments; there are no group projects in this course. You may (and are encouraged to) engage in general discussions with your classmates regarding the assignments, but specific details of a solution, including the solution itself, must always be your own work. There will be graded assignments and exam in this course, as described below. All exams are closed book; no implement other than your brain and a writing instrument are to be used.

Incidents which violate the University’s rules on integrity of scholarship will be taken seriously. In addition to receiving a zero (0) on the assignment/exam in question, students may also face other penalties, up to and including, expulsion from the University. Should you have any doubts about the moral and/or ethical implications of an activity regarding the course, please see the instructor.


Your class work might be used for research purposes. For example, we may use anonymized student assignments to design algorithms or build tools to help programmers. Any student who wishes to opt out can contact the instructor or TA to do so after final grades have been issued. This has no impact on your grade in any manner.