Skip to content

Welcome to CS 6182!

Probabilistic programming languages are a powerful tool to describe randomized computations and model uncertain behavior. This graduate seminar surveys recent research on such languages, from the perspective of programming languages, logic, and verification. The topic naturally divides into three sections. The first part of the course covers the semantics of probabilistic programming languages: what do such programs mean mathematically, especially when the languages are extended with operators for conditioning and inference? The second part of the course covers verification: what does it mean for probabilistic programs to be correct, and how can we formally verify correctness? Finally, the last part of the course covers applications: how can we use probabilistic programs to solve concrete problems?

Pre-requisites: CS 4110 or CS 6110, or approval of the instructor.


Please sign up for presentation slots and project groups here by the second lecture (Tuesday August 31).


  • Course: CS 6182, Fall 2021
  • Time: Tuesdays and Thursdays, 2:45-4:00
  • Location: Statler Hall 198
  • Discussion: Ed

Course Staff


Grades will be posted on Canvas.

  • Participation: 5%
    • In-class discussion and check-up questions
  • Presentation
    • Chapter presentation: 25%
  • Project
    • Milestone 1: 10%
    • Milestone 2: 10%
    • Final report: 50%

Everything except the final project will be graded on a simple scale: no submission (0), below expectations (1), meets expectations (2). Assignments that significantly exceed expectations can receive additional (bonus) points. The final project will be graded on a 10-point scale.

Course Expectations

Reading is a fundamental aspect of this course. This course follows a recent book: Foundations of Probabilistic Programming. The entire book is open access and freely available here; there is no need to purchase the book unless you want a physical copy.

Each week, we will be covering one chapter from the book. It is critical that you read each chapter closely before the first lecture for each chapter. To help you stay on track, at least 24 hours before the technical lecture for each chapter we will send a series of 2-3 short checkup questions, and you should email us your answers before the start of the technical lecture. We may or may not grade these answers, but they should help you check if you have understood the basics of each chapter.

In addition to reading, you should attend all lectures and actively participate in discussions. This is the main reason we are having in-person lectures, instead of just reading a book.

Chapter Presentation

In groups of one or two, you will sign up for one chapter and give two presentations: a short, 15-minute preview, and a longer, 60-minute technical lecture. You will meet us in the weeks leading up to your presentation in order to develop the material. See details here.


If/when you find a typo or error in the course textbook, make a (public) post on Ed. We will maintain a list of students who have found the most typos, and we will report all typos to the book authors when the course is finished.

Course Project

The main course component is the course project. In groups of one or two, you will work on a topic of your choice, producing a conference-style write-up and presenting the project at the end of the semester. Good projects may eventually lead to a research paper or survey. To help projects stay on track, you will submit two short "milestone" reports and meet with us to discuss the milestones. See details here.

Academic Honesty

Each student in this course is expected to abide by the Cornell University Code of Academic Integrity. Any work submitted by a student in this course for academic credit--including answers to checkup questions---will be the student's own work.

Mental Health and Stress Management

Taking a course can be stressful, and the global pandemic does not make things any easier. If you are feeling overwhelmed, or worried about a friend, please reach out to one of your instructors or your academic advisor. We can try to help or we can put you in touch with someone who can help. Cornell has trained counselors available to listen and help: Empathy, Assistance, and Referral Service (213 Willard Straight Hall, 607-255-3277), Cornell Health's Counseling and Psychological Services (CAPS, 607-255-5155), and Let’s Talk.