NOTE: this website is out of date. This is the course web site from a past quarter, Winter 2020. If you are looking for fall quarter's website, you should visit instead. Please be advised that courses' policies change with each new quarter and instructor, and any information on this out-of-date page may not apply to you.


Monday, February 10
Cubberley Auditorium

Wednesday, March 18


cs109 @


David Varodayan
varodayan @ stanford
Gates 161
W 3:00-5:00pm


Contest Results

We received 39 contest entries this quarter and were impressed by the creativity and probability know-how the entries showed!

Winner: Sauren Khosla, Recidivism Risk: Algorithmic Prediction and Racial Bias

Runner Up: Riley Noland, Everyday I'm Shuffling: A Probabilistic Analysis of Card Shuffling

Final PSet

Update 3/2/2020: We have created a Pset 6 Python Guide in case you are having trouble running the starter code in a terminal. We have also updated the starter code. See the pset 6 webpage linked below for more information.

The final problem set is now available. You will implement two machine learning algorithms, Naive Bayes and Logistic Regression. You will then use these algorithms to make predictions on heart tomography, Netflix movies and ancestry.

PSet #5 is out

The penultimate problem set is now available! This problem set has only 8 questions.

Central Limit Theorem

The CLT says that if $Y$ is the sum of $n$ iid random variables (which all have expectation $\mu$ and variance $\sigma^2$) then:

$Y \sim N(n\mu, n\sigma^2)$

The proof is beyond the scope of the class. A friendly CS109 student from a few quarters ago (Sophia Furfine) made a video of the proof in case you are curious!

CS109 Contest

This quarter we are going to hold the fifth Stanford Probability for Computer Scientists Contest. The contest is completely optional. See the contest handout for more details.

Midquarter Feedback

We're interested to know what you think of CS109 so far. We invite you to fill out an anonymous feedback form here: We'll keep the form open through Wednesday night, February 12.

PSet #4 is out

Problem Set #4 has been released! It has you predict users based on biometric keystrokes. The pset clearly delineates the questions that you should do before the midterm.

Midterm Next Monday

The CS109 midterm is coming up: it is Monday, February 10, 7:00PM-9:00PM, in Cubberley Auditorium. The midterm is a closed book, closed calculator/computer exam; you are, however, allowed to bring three 8.5" x 11" pages (front and back) of notes in the exam, formatted in any way you like. The last page of the exam will be a Stanford Normal Table, in case you need it.

The midterm will cover material up to and including lecture 11, which includes problem sets 1 to 3 and part of problem set 4 (which part will be clearly marked).

The best way to study is by working through the practice exams and section problems.

Review session: Emma, one of our TAs, will be hosting a review session Saturday, February 8, 3:00PM-5:00PM in Sapp Center for Teaching & Learning (STLC) 111. This session will not be recorded, but all materials will be posted on the exam practice website afterwards.

Alternate midterm assignments (and OAE) have been made; you should have received an email with your specific arrangements. If you requested an alternate midterm and have not received your information, please email Alex (alextsun@).

PSet #3 is out

Problem Set #3 has been released! It uses real probability density functions from the IPCC Climate Change report, and has you analyze a bloom filter (a probabilistic datastructure).

PSet #2 is out

Problem Set #2 has been released! Here is a Latex template for pset 2.

Python Tutorial this Friday

Update (1/12/20): Session slides and last quarter's recording and slides are now up!

For those of you interested in learning/reviewing Python 3, Julie will be giving a Python tutorial on Friday, January 10, 3:30-4:20pm in 420-041. We will try our best to record this session. We recommend looking at the Colab notebook beforehand. If you need help getting set up, this Piazza post should be a good starting point.

Sign up for Section!

Update (1/13/20): Section assignments have been released. If you did not receive an email, please contact the staff mailing list. For any other section scheduling questions, please fill out the Late & Swap form ASAP. Section starts this week.

Please sign up for section by filling out this form:

Once a week you are going to meet in a small group section. We are going to find the best weekly time for everyone. Section signups will close on Saturday, January 11 at 11:59pm. Preferences are not first come first serve. For more information, visit the Section Attendance page.

PSet #1 is out

Problem Set #1 has been released! It is due next Friday, January 17 at 1:00pm. Submission will be via Gradescope with entry code MV66N5. Office hours will start tomorrow (Thursday), and the office hours calendar will have times and locations.

We have synced the class roster with Gradescope, so your Stanford email is likely to be registered already. If not, you can join the class by going to and clicking the button in the top right marked "Sign Up." Select "Student," then enter the entry code, your full name, email address, and 8-digit student id.

You are encouraged to write up your problem sets using LaTeX. Templates for each Problem Set are located on their respective webpage. See this intro to LaTeX, and the LaTeX code used to generate it. Though you may install LaTeX, it is often much easier to use an online LaTeX editor. A great option is:


Welcome to CS109! We are looking forward to a fun quarter. Class starts Monday, January 6, at 1:30pm in 420-040.

We put together some handouts to help you understand where we are going to go in CS109 and how we plan to get there.

The Administrivia handout has details on course logistics. Read this to get a sense for what CS109 is going to entail.

The Course Schedule page shows you the topics that we are going to cover in CS109 and the corresponding readings. We will also post materials from lecture on the schedule page.

The Staff / Office Hours page has contact information for TAs and the office hour calendar. Office hours will start Thursday, January 9.

Once the quarter starts, you will need to sign up for a weekly 50-minute discussion section. Details on how to sign up for section will be provided during the first week of class.


Week Monday Wednesday Friday

Jan 6

1: Counting

Read: Ch 1.1-1.2

Jan 8

2: Permutations and Combinations

Read: Ch 1.3-1.6
Out: PSet #1

Jan 10

3: Axioms of Probability

Read: Ch 2.1-2.5, 2.7


Jan 13

4: Conditional Probability and Bayes

Read: Ch 3.1-3.3

Jan 15

5: Independence

Read: Ch 3.4-3.5

Jan 17

6: Random Variables and Expectation

Read: Ch 4.1-4.4
Due: PSet #1
Out: PSet #2


Jan 20

Martin Luther King Jr. Day
No Class

Jan 22

7: Variance, Bernoulli, Binomial

Read: Ch 4.5-4.6

Jan 24

8: Poisson and More

Read: Ch 4.7-4.10


Jan 27

9: Continuous Random Variables

Read: Ch 5.1-5.3, 5.5
Due: PSet #2
Out: PSet #3

Jan 31

11: Joint Distributions

Read: Ch 6.1


Feb 3

12: Continuous Joint Distributions

Read: Ch 6.1

Feb 5

13: Independent Random Variables

Read: Ch 6.2-6.3
Due: PSet #3
Out: PSet #4

Feb 7

14: Conditional Distributions

Read: Ch 6.4-6.5


Feb 10

15: Correlation and Covariance

Read: Ch 7.3-7.4
Midterm: Mon Feb 10, 7:00-9:00pm

Feb 12

16: Great Expectations

Read: Ch 7.1-7.2

Feb 14

17: Beta

Read: Ch 5.6.1-5.6.4, 7.5-7.6


Feb 17

Presidents Day
No Class

Feb 19

18: Central Limit Theorem

Read: Ch 8.3
Due: PSet #4
Out: PSet #5

Feb 21

19: Sampling/Bootstrapping

Read: Lecture Notes


Feb 24

20: General Inference

Read: Lecture Notes

Feb 26

21: Parameters and MLE

Read: Lecture Notes

Feb 28

22: Gradient Ascent

Read: Lecture Notes
Due: PSet #5
Out: PSet #6


Mar 2

23: Maximum A Posteriori

Read: Lecture Notes

Mar 4

24: Naive Bayes

Read: Lecture Notes

Mar 6

25: Logistic Regression

Read: Lecture Notes


Mar 9

26: Deep Learning

Read: Lecture Notes

Mar 11

27: CS109 Review

Read: Everything :)
Due: PSet #6

Mar 13

28: Beyond CS109

Last day to submit assignments
Final: Wed Mar 18, 3:30-6:30pm