Announcements
-
Labs 1-5 and Tests 1-2 have been graded.
-
Final Project information is here. Please email me your group and proposed topic by 11:59pm April 9.
Course Info
-
Professor: Joshua Brody
-
Class: Monday/Wednesday/Friday 9:30am-10:20am SCI 204
-
Lab: Thursday 2:45pm-4:15pm Clothier 016
-
Office Hours: Monday 2:00pm-4:00pm SCI 260, by appointment, and when my door is open.
-
Course Discussion: EdSTEM (mandatory enrollment)
-
Textbooks:
-
Probability and Computing, by Mitzenmacher and Upfal.
-
A Computational Introduction to Number Theory and Algebra, by Shoup. We’ll use this free, online book only for discrete probability (chapter 8).
-
Randomized Algorithms, by Motwani and Raghavan. This book is not required but is a good reference.
-
Required Materials
-
Probability Textbook: We’ll mainly use a free online textbook for developing probability theory: A Computational Introduction to Number Theory and Applications, by Victor Shoup. Don’t be put off by the title — we’ll only use the chapter on discrete probability (Chapter 8). It is self-contained.
-
Required Textbook: Much of our computer science applications will come from Probability and Computing, by Mitzenmacher and Upfal.
-
Optional Textbook: Randomized Algorithms, by Motwani and Raghavan. This book is not required but is a good reference.
Course Overview, Goals, and Structure.
This course provides an introduction to algorithm design with a focus on randomized algorithms and data structures. Topics include analysis of algorithms, basics of discrete probability including tail inequalities, the probabilistic method, NP-Completeness, and applications to graph algorithms, streaming algorithms, communication complexity, and machine learning.
Prerequisites: CPSC 035 is required. Mathematics background at the level of Linear Algebra or higher is also required but may be taken concurrently.
Goals for the Course
Above all, the goal of this course is to instill a deep understanding of discrete probability and the role randomness plays in computer science.
Class Structure
-
Class Meetings. Lecture material will cover course concepts in depth, include activities to practice concepts learned, and to facilitate student discussion.
-
Suggested Readings. There are no required readings for the class. However, there are suggested readings that reinforce lecture material and provide more context.
-
Gradescope Exercises. For the initial portion of the course where the focus is on discrete probability, we’ll use daily Gradescope exercises to reinforce new material. Each exercise will be released after lecture and be due at 11pm before the next lecture is due. My intent with these exercises is that they take approximately one hour of time, quickly reinforce material from class, and quickly identify any areas that require followup. Gradescope exercises will be graded on a check plus / check / check minus / did not complete scale.
-
Tests. There will be three 90 minute tests given throughout the semester, after roughly every four weeks. Tests will be closed book.
-
Lab Assignments. Each lab assignment will be partnered and come out roughly every two weeks.
-
Final Project. In lieu of a final exam, you and a partner will develop a final project that more deeply explores one area at the intersection of probability and computer science that is of greatest interest to you.
Schedule
WEEK | DAY | ANNOUNCEMENTS | TOPIC & READINGS | LAB ASSIGNMENTS |
1 | Jan 18 | Course Introduction, Asymptotic Analysis | ||
Jan 20 | ||||
2 | Jan 23 | Probability Definitions and Basics
| ||
Jan 25 | ||||
Jan 27 | Drop/Add Ends | |||
3 | Jan 30 | Conditional Probability, Independence
| ||
Feb 01 | ||||
Feb 03 | ||||
Feb 06 | Canceled Classes | |||
Feb 08 | ||||
Feb 10 | ||||
4 | Feb 13 | Random Variables, Expectation
| ||
Feb 15 | ||||
Feb 17 | ||||
5 | Feb 20 | Moments and Deviations
| ||
Feb 22 | Test 1 (Feb 23) | |||
Feb 24 | ||||
6 | Feb 27 | Randomized Algorithms | ||
Mar 01 | ||||
Mar 03 | ||||
Mar 06 | Spring Break | |||
Mar 08 | ||||
Mar 10 | ||||
7 | Mar 13 | Randomized Data Structures
| ||
Mar 15 | ||||
Mar 17 | ||||
8 | Mar 20 | The Probabilistic Method
| 3/20 lecture notes | |
Mar 22 | ||||
Mar 24 | Travel -- no classes | |||
9 | Mar 27 | |||
Mar 29 | Test 2 (Mar 30) | The Probabilistic Method
(continued) | ||
Mar 31 | ||||
10 | Apr 03 |
Random Graphs
| ||
Apr 05 | ||||
Apr 07 | ||||
11 | Apr 10 | Streaming Algorithms | ||
Apr 12 | ||||
Apr 14 | ||||
12 | Apr 17 | Randomized Algorithms for AI | ||
Apr 19 | ||||
Apr 21 | ||||
13 | Apr 24 | Intractability and NP-Completeness | ||
Apr 26 | Test 3 (Apr 27) | |||
Apr 28 |