$\DeclareMathOperator{\p}{Pr}$ $\DeclareMathOperator{\P}{Pr}$ $\DeclareMathOperator{\c}{^C}$ $\DeclareMathOperator{\or}{ or}$ $\DeclareMathOperator{\and}{ and}$ $\DeclareMathOperator{\var}{Var}$ $\DeclareMathOperator{\E}{E}$ $\DeclareMathOperator{\std}{Std}$ $\DeclareMathOperator{\Ber}{Bern}$ $\DeclareMathOperator{\Bin}{Bin}$ $\DeclareMathOperator{\Poi}{Poi}$ $\DeclareMathOperator{\Uni}{Uni}$ $\DeclareMathOperator{\Exp}{Exp}$ $\DeclareMathOperator{\N}{N}$ $\DeclareMathOperator{\R}{\mathbb{R}}$ $\newcommand{\d}{\, d}$

Syllabus

Updated 2025122306

If you have any questions after reading this Syllabus, post on our discussion forum.

Teaching Team

Juliette Woodrow

Instructor: Juliette Woodrow
jwoodrow @ cs
CoDa Basement


We are lucky to have a phenomenal group of Course Assistants:

Isabel Michel
Isabel Michel
imichel @
Head TA
Tae Kyu Kim
Tae Kyu Kim
taekyu @
TA
Katie Lu
Katie Lu
katiel25 @
TA
Sudharsan Sundar
Sudharsan Sundar
sjsundar @
TA
Elizabeth Zhu
Elizabeth Zhu
elizhu @
TA
Justin Choo
Justin Choo
justinchoo @
TA
Anna Fisher Lopez
Anna Fisher Lopez
afishpez @
TA
Ethan Bogle
Ethan Bogle
ebogle @
TA
Saanvi Chawla
Saanvi Chawla
saanvic @
TA
Abi Lopez
Abi Lopez
abilopez @
TA
Javokhir Arifov
Javokhir Arifov
javohkir @
ACE TA

I. Course Overview

While the initial foundations of computer science began in the world of discrete mathematics (after all, modern computers are digital in nature), recent years have seen a surge in the use of probability as a tool for the analysis and development of new algorithms and systems. As a result, it is becoming increasingly important for budding computer scientists to understand probability theory, both to provide new perspectives on existing ideas and to help further advance the field in new ways.

CS109: Probability for Computer Scientists starts by providing a fundamental grounding in combinatorics, and then quickly moves into the basics of probability theory. We will then cover many essential concepts in probability theory, including particular probability distributions, properties of probabilities, and mathematical tools for analyzing probabilities. Finally, the last third of the class will focus on data analysis and machine learning as a means for seeing direct applications of probability in this exciting and quickly growing subfield of computer science. This is going to be a great quarter and we are looking forward to the chance to teach you.

Learning Goals

Our goal in CS109 is to build foundational skills and give you experience in the following areas:

  1. Understanding the combinatorial nature of problems: Many real problems are based on understanding the multitude of possible outcomes that may occur, and determining which of those outcomes satisfy some criteria we care about. Such understanding is important both for determining how likely an outcome is, but also for understanding what factors may affect the outcome (and which of those may be in our control).
  2. Working knowledge of probability theory: Having a solid knowledge of probability theory is essential for computer scientists today. Such knowledge includes theoretical fundamentals as well as an appreciation for how that theory can be successfully applied in practice. We hope to impart both these concepts in this class.
  3. Appreciation for probabilistic statements: In the world around us, probabilistic statements are often made, but are easily misunderstood. For example, when a candidate in an election is said to have a 53% likelihood of winning does this mean that the candidate is likely to get 53% of the vote, or that that if 100 elections were held today, the candidate would win 53% of them? Understanding the difference between these statements requires an understanding of the model in the underlying probabilistic analysis.
  4. Applications: We are not studying probability theory simply for the joy of drawing summation symbols (okay, maybe some people are, but that's not what we're really targeting in this class), but rather because there are a wide variety of applications where probability allows us to solve problems that might otherwise be out of reach (or would be solved more poorly without the tools that probability can bring to bear). We'll look at examples of such applications throughout the class.
  5. An introduction to machine learning: Machine learning is a quickly growing subfield of artificial intelligence which has grown to impact many applications in computing. It focuses on analyzing large quantities of data to build models that can then be harnessed in real problems, such as filtering email, improving web search, understanding computer system performance, predicting financial markets, or analyzing DNA.

Course Topics

Here are the broad strokes of the course (in approximate order). More information is available on our Schedule page. We cover a very broad set of topics so that you are equipped with the probability and statistics you will see in your future CS studies!

  • Single-dimensional random variables
  • Probabilistic models
  • Uncertainty theory
  • Parameter estimation
  • Introduction to machine learning

Prerequisites

The prerequisites for this course are CS106B and calculus at the level of MATH 21 or equivalent. We will be considering several applications of probability in CS that require familiarity with algorithms and data structures covered in CS106B. We will also assume that you already know how to program. The course programming language is Python, however if you are a strong programmer who never learned Python you will be fine. Past students have managed to take CS106B concurrently with CS109 and have done just fine.

Overlapping Classes

Question: Can you take CS109 if you have another Stanford class at the same time? Answer: No. That generally means they also have overlapping finals.

II. Course Structure

Lectures

Lectures are MWF from 3p until 4:20p. We will be holding live lectures in-person in Hewlett 200. Come to learn the material, engage in interesting problems collectively with the class. While lecture attendance isn't mandatory it is correlated with doing well in the course and mastering the material. Lecture is a good place to learn, make friends and enjoy probability. Good times!

To encourage participation, we offer extra credit for attending lecture in person. There are 26 lectures this quarter, and attending 20 lectures earns the full extra credit amount. Attendance is recorded during lecture using a sophisticated QR code scanning system built by Chris Gregg. Details about how attendance is recorded and how you can track your attendance will be available on the course website. For CGOE students, we have an alternative lecture attendance extra credit policy.

Lecture Recordings

This term CS109 is recorded. Lectures will generally be available within 24 hours of the live lecture. You can access the recordings through Canvas.

Units

If you are an undergraduate, you are required to take CS109 for 5 units of credit (this is by department and university policy, no exceptions). If you are a graduate student, you may enroll in CS109 for 3 or 4 units if it is necessary for you to reduce your units for administrative reasons. Taking the course for reduced units does not imply any change in the course requirements.

Sections

Active participation plays an important role in making you adept at combining probability and computer science. It has also been observed over many quarters that keeping up with the material highly correlates with improved class performance.

Each week for 50 minutes you will meet in a small group with one of our outstanding CAs (section leaders) and work through problems. If you have taken any of the CS106 classes, our sections will be very similar—except with more probability. Sign-ups for sections will go out on Thurs Jan 8th and will be open until noon Pacific Sunday, Jan 11th. We will let you know which section you are in by Tuesday, Jan 13th and you will have your first section that week (during Week 2).

Section attendance and participation is required for all students. Part of your participation grade is based on how much you engage with section; a student that engages and helps others will recieve a better score than one who shows up late and doesn't participate. You should come to section caught up on lecture through at least the Monday of the week of that section. Students are allowed two (2) makeup sections (i.e. attending another CA's session in the same week) and one (1) unexcused section absence in the quarter without penalty. In the case of a significant academic or medical-related conflict with your assigned section time, you can request one section reassignment per quarter by filling out the form linked on our Ed discussion forum, or reaching out to the head TA (Isabel) for extenuating circumstances.

Grading

The grade for the course will be determined according to the following breakdown:

ComponentFinal grade
Problem Sets 30%
Midterm 20%
Final 30%
Participation 20%

Problem Sets

During the course, there will be seven problem sets assigned. We put a lot of love into these problems so that they can help train you to become gifted practitioners of probability and computer science. Use them as practice. Doing well on the problem sets is the best way to prepare for life after CS109 (and the exams). Each student is to submit individual work on the problem sets. The problem sets will often include coding tasks, which will be primarily in python. We also strongly encourage you to learn LaTex, which is the interchangable markup language for typing math on a computer. We will hold a review session Week 1 for those of you who are less familiar with python.

This quarter in CS109 we are using "the psetapp", a webapp writen by Chris Piech where you can solve your problem sets. Importantly, the psetapp allows you to check your work as you go! That way you can get immediate feedback as to whether you have figured out the solution. Things to know: (1) the psetapp auto saves your progress so you never need to hit a "save" button, (2) similarly, you don't need to hit submit. At the deadline you will no longer be able to edit your work and we will start grading your current saved solutions (3) You can check your answer as many times as you want. There is no penalty for retrying if you didn't get the answer correct the first time.

After you submit we will use a combination of manual and automatic grading. For every problem we expect that you show your work. For each math solution, you should provide a detailed enough explanation beyond just the math itself that someone who is fluent in CS109 would understand how to solve it. Never write down just the answer. For coding solutions, we expect you to use enough comments and good style that it is clear what process your code is using to solve the task.

After grades are released, you have one week to file a regrade request if you think that points were deducted incorrectly. Regrade requests are for significant misgrades only, such as bugs in the psetapp, and we reserve the right to regrade your entire pset.

Late Policy

There may be unforeseen circumstances that make it difficult to turn in homework assignments on time. Our philosophy is to treat you as adults and thus we have a generous late policy to reflect the many different needs that may come up. However, the course will end for everyone on the same date. As such if you are late on one problem set, you will have to work extra hard to catch up. Time management can be hard and we encourage you to give it the full respect it deserves. In practice, falling behind often impacts midterm and final exam scores.

  • Due Date: The on time deadline will be listed on each assignment writeup (generally at 10p). Finishing the assignment by the deadline means that you are in sync with the course. Hooray!
  • Grace Period: All students are automatically granted a 2-hour penalty-free "grace period" for submission on all problem sets. The grace period allows you to submit the assignment after the original deadline, with no impact on the final grade. This grace period is meant to give built-in flexibility for any unexpected snags, such as being 10 mins late on finishing. The 2-hour period is enforced by a computer clock so we encourage you not to push it to the limit.
  • Late Days: CS109 is a fast-paced class and if you need more time beyond the grace period then you may fall behind on future problem sets (or the midterm / final). Having said that, you might have a medical, personal or serious time-management situation which requires you to take a few more days to finish. We will allow you to take up to two late days on any individual problem set, at which point we will need to release solutions. For example, if the pset was due on Monday, and you need more time than the grace period, taking one late day will let you edit the pset until Tuesday at 11:59p, and taking two late days would allow you to make changes until Wednesday at 11:59p. You can grant yourself late days via the CS109 pset app. If you use more than five late days total, you will need to contact the Head TA (Isabel) for special permission (updated Nov 10th). Why must you contact us? Because we care and we want to catch issues early. In the rare occurence that someone uses more than five late days without getting permission it will impact their course grade.
  • After the Hard Deadline: What if you are not done by the time we release solutions? In general we do not accept work after the solutions have been posted and TAs start grading. As such you should make sure you don't accidentally miss this very hard deadline! Having said that, there may be a real crisis that means you are not able to do your work before the solutions are released (e.g. an illness that lasts a week, funeral attendance, etc). First, we hope you are well. Personal life is so truly important and we respect you doing what you need to do. In such an extreme case you need to contact the course staff (cs109@cs.stanford.edu) as well as your Undergraduate Advising Director and we will work something out. Please do contact us as early as possible.

Warning: PSet4 (the pset due right before the midterm) and PSet7 (the pset due right before the final exam) will have shortened late day periods. Why? We need to release solutions sooner so that students can refer to solutions while studying.

Exams

In addition to the assignments, there will a midterm and a final:

  • Midterm: Tuesday, Feb 10th, 7p-9p
  • Final: Tuesday, Mar 17th, 8:30a-11:30a

For more details about the format of the exams, see the midterm and final pages. We provide all the material you need to study early on, however we don't expect you to begin preparing until the week before the test.

Midterm Alternatives: A week before the midterm we will give more information on what you should do if you have an academic conflict with the midterm.

No Final Alternatives: For a variety of reasons (including university policy), we generally do not provide alternate offerings for the final exam. Please make sure that you can attend the final exam at the specified time before enrolling in the class. Typically, you will not be able to make the final if you are taking another class at the same time as CS109. If you cannot make the final exam, you should plan on taking CS109 in a different quarter. If you start the course and for some reason you can't take the exam, we will offer you an incomplete and you can take the final with a future offering of CS109.

This course is participating in the proctoring pilot overseen by the Academic Integrity Working Group (AIWG). The purpose of this pilot is to determine the efficacy of proctoring and develop effective practices for proctoring in-person exams at Stanford. To find more details on the pilot or the working group, please visit the AIWG’s webpage.

Personalized Exam Prep

Historically, students often find exams in CS109 to be challenging. To help you prepare for them, part of your participation grade comes from attending Personalized Exam Prep (or PEP for short), a one-on-one 15-minute meeting you have with a TA one week before each exam. PEP is designed to help you figure out what exam study approaches will give you the most bang for your buck, and it's a great chance to get specific advice from a TA about your progress in CS109. PEP is a required component of the course. More details about scheduling and preparing for PEP will be sent out closer to the midterm and final exam dates.

Extra Credit Learn by Teaching (Ed Discussion Forum)

A major goal of CS109 is learning to explain ideas clearly and help others build understanding. We also have a classroom value of helping each other learn all of the CS109 material. Research shows that one of the most effective ways to learn is to teach. In CS109, one of the ways you can practice this is by answering questions on the Ed discussion forum. We will award a small amount of extra credit to students who thoughtfully engage on Ed by helping their peers. TAs may endorse particularly helpful responses, and we’ll periodically share a leaderboard so you can see your contributions throughout the quarter.

Extra Credit Challenge

This quarter CS109 will hold an extra credit challenge, where students apply the principles in this class to explore a topic of their own choice. Participation in the contest is completely optional and prizes involve extra credit to your final course grade. More details about the contest to be posted midway through the quarter.

Adding the Class Late

CS109 is a fast-paced course, and catching up after joining the class late is hard. Our policy is that the latest you can add the course is the end of Week 2, and we will not provide extra time beyond the standard late day policy for finishing up pset1. In addition, attending section 2 (in Week 3) is expected regardless of when you join the class, so make sure to get assigned a section right away.

III. Course Resources

CS109 Course Reader

Last year Chris Piech (another CS109 instructor) thought to himself, "you know what CS109 students would probably love? A course reader!" So Chris wrote, and coded, and created a CS109 Course Reader. It is something which he is going to update we go. Please let Chris know if you are curious about something or if you find a typo. Please don't expect anything perfect. It has gone through one quarter of iterations but you might still find some small bugs. Please check out the chapters and the demos: Course Reader. This is also a living document, if you notice any errors or typos post in the dedicated Ed thread to let us know!

Optional Textbook

Sheldon Ross, A First Course in Probability (10th Ed.), Pearson Prentice Hall, 2018.

This is an optional textbook, meaning that the text is not required material, but students may find Ross offers a different and useful perspective on the important concepts of the class. Suggested, optional reading assignments from the textbook (10th Ed.) are in the schedule on the course website. The 8th, 9th, and 10th editions of the textbook are all fine for this class.

Borrowing the textbook online: HathiTrust, a library archive of which Stanford is a member, has granted the university online access to the 8th edition (2010) for the duration of the Fall quarter. The "check out" system works similarly to print reserves: A user can check out the book an hour at a time as long as they are actively using it. Access guidelines are on the HathiTrust How To Use It webpage. Once you're logged in, the book is at this link.

All students should retain receipts for books and other course-related expenses, as these may be qualified educational expenses for tax purposes. If you are an undergraduate receiving financial aid, you may be eligible for additional financial aid for required books and course materials if these expenses exceed the aid amount in your award letter. For more information, review your award letter or visit the Student Budget website.

"Working" Office Hours

To help make you more successful in this class , the course staff will hold "working" office hours. The idea is to encourage you to work on your problem sets at these office hours, so you can immediately ask any questions that come up while working on your problem sets. While you are certainly not required to attend any of these working office hours, they are simply meant to encourage you to interact with the course staff more often in order to help you better understand the course material. Besides, our job is to help everyone learn the material for this class, and being more accessible to you when you are actually working on your assignments (rather than when you just have a problem) will help the course go more smoothly for you (and it'll be more fun for us).

Homework Parties

In addition to regular office hours, we will host homework parties throughout the quarter. These are collaborative, drop-in sessions where you can work on homework alongside other students, with TAs available to help guide discussion and answer questions. Homework parties are a great place to get unstuck and they are also a chance to practice explaining ideas to others.

Not all office hours are the same! The office hour calendar will indicate specific details such as the time and location of each office hours. Office hours are either in person or online. If an office hour time on the calendar says it is in person, there will be no online option — and if the calendar says an office hours session is online, please don't show up at our TAs dorms :).

Accommodations

Students who may need an academic accommodation based on the impact of a disability must initiate the request with the Office of Accessible Education (OAE). Professional staff will evaluate the request with required documentation, recommend reasonable accommodations, and prepare an Accommodation Letter for faculty. For students who have disabilities that don't typically change appreciably over time, the letter from the OAE will be for the entire academic year; other letters will be for the current quarter only. Students should contact the OAE as soon as possible since timely notice (for example, at least a week before an exam) is needed to coordinate accommodations. Students should also send your accommodation letter to instructors as soon as possible.

IV. Honor Code

Please read our full Honor Code Policy, which specifically prohibits you from soliciting or taking solutions from other students or websites like ChatGPT, Stack Overflow and Chegg.

Looking Forward to a Great Quarter

Genuinely, teaching CS109 is a profound joy. Thanks for coming to learn with us. We can't wait 🌱.

'