Course Information

Time: MWF 2:00-2:50
Room: Lyons Hall 202

Joseph Tassarotti
St. Mary's Hall S383
Office Hours: MW 10:30 -- noon, or by appointment

Teaching Assistants:
Yuezhen Chen
Office Hours: Tuesdays 4:00 -- 6:00 PM in Fulton 160 Lab

Zhixuan (Josh) Zhao
Office Hours: Wednesdays 6:00 -- 8:00 PM in Fulton 160 Lab


This course is about probability theory, which provides the mathematical tools to understand randomness and uncertainty. Why should computer scientists study probability theory? The reason is that randomness is essential to many areas of computer science:

Beyond computer science, probability theory has applications in many physical and social sciences, particularly for data analysis. Increasingly, these fields rely on computer programs to help carry out such analyses.

One challenge in studying probability theory is that humans have poor intuitions for randomness. We see patterns where there are none and misestimate how likely events are. By applying the formal rules of probability theory, we can overcome these flawed intuitions.

But as computer scientists, we have another tool at our disposal: we can write programs that simulate randomized events. By studying the results of these simulations, we can often approximate the answers to many important questions. In this course, we will use these simulations to complement theoretical analysis.


The listed prerequisites are CSCI 2243 and Calculus. In reality, familiarity with programming at the level of CSCI 1101 should suffice in place of CSCI 2243. The textbook does include content that involves linear algebra, but we will not cover this material.

There will be programming assignments in Python, but they will not use any "advanced" features of Python. So, if you are not familiar with Python, you should be able to quickly pick up the basics needed for the assignments as long as you have some prior programming experience.


The textbook for this course is Randomness and Computation by Professor Sergio Alvarez. The book is available for free as a PDF that will be distributed via Canvas. Please do not re-distribute this text. The readings in the schedule refer to this book. I will provide lecture notes on topics that are not covered by the book.


Homework will be assigned roughly weekly, due the following week. The homework will include both written exercises and programming problems. As mentioned above, the programming assignments will be in Python. Solutions to written problems must be typed. Because these assignments will involve mathematics, I strongly encourage you to learn to use LaTeX, which is software designed for typesetting mathematics. It is the standard for writing documents in a wide range of technical fields (mathematics, computer science, physics, statistics, and so on), so it is worthwhile to start learning. There are alternatives, like Microsoft Equation Editor, that should also suffice.


There will be two midterm exams and a final exam. The midterms will be on Friday, October 11 and Friday, November 8 in class. The date, time, and location of the final exam are dictated by the registrar's office.


Your final score for the class will depend on the assignments and exams. These components will be weighted as follows: 50% homework, 10% midterm 1, 10% midterm 2, 30% final. There is no predetermined scale for mapping raw scores to letter grades.

Academic Integrity

The university takes academic integrity seriously. You should review the university's policies.

For this course, you are allowed to discuss the assignments and material with other students. However, the work you submit should be your own. To ensure this, you should follow something that is sometimes called the "whiteboard policy": you and another student can discuss a problem at a whiteboard at a high level. You should not record any notes or be writing code during these discussions. When you're done, you should erase the whiteboard, leave, and write up your solution on your own. The spirit behind this rule is that you must fully understand what you submit by being able to write and formulate it independently.

Services for Students with Disabilities

Students with disabilities who need accommodations should request them by contacting the Connors Family Learning Center or the Disability Services Office. See the overview of the resources BC provides for accessibility.


Your health and well-being are important. Please be aware that the university provides a range of support services for students struggling with mental health issues.

Schedule of Lectures

Week Topic Reading/Notes Homework
Aug. 26-30 Discrete Probability 2.1, 2.2

If you need to install python3 and libraries, you can look at Prof. Straubing's instructions from an earlier iteration here
Homework 1 out, due Sept. 6

Homework 1

Starter code
Sept. 2-6 Counting 2.3 Homework 2 out, due Sept. 13

Homework 2

Starter code
Sept. 9-13 Random Variables 3 Homework 3 out, due Sept. 20

Homework 3

Starter code
Sept. 16-20 Inequalities, Conditional Probability 5.1, 5.4, 6 Homework 4 out, due Sept. 27

Homework 4

Sept. 23-27 Conditional Expectations, Poisson Approximation 5.2.2, Notes Homework 5 out, due Oct. 4

Homework 5

Sept. 30- Oct. 4 Continuous Distributions, Central Limit Theorem 4, 5.2.3
Oct. 7-11 Convolution, Exam Review Homework 6 out, due Oct. 25

Homework 6

Oct. 14-18 Markov Chains 9

Oct. 21-25 Analysis of Absorbing and Ergodic Chains 9 Homework 7 out, due Nov. 8

Homework 7

Oct. 28- Nov. 1 Variances for Absorbing and Ergodic Chains (video lectures)
Nov. 4-8 Coupling, Exam Review Homework 8 out, due Nov. 16

Homework 8

Nov. 11-15 Martingales Homework 9 out, due Nov. 23

Homework 9

Nov. 18-22 Moment Generating Functions Homework 10 out, due Dec. 7

Homework 10