UW CSE 312: Foundations of Computing II
CSE 312 is the Allen School's discrete probability course and the sequel to CSE 311: counting and combinatorics, discrete and continuous random variables, expectation and variance, and applications of randomness to computing. It's the probabilistic foundation for machine learning, algorithms, and most quantitative upper-division CSE work.
Fennie is independent and not affiliated with University of Washington. This is an unofficial study guide.
Build my CSE 312 study planWhat makes it hard
The course pivots from the proof-writing of CSE 311 to probabilistic reasoning, and the two skills feel unrelated. Setting up the right counting argument or recognizing which distribution a problem describes is where students stall — the math is rarely the hard part, the modeling is. Linearity of expectation problems in particular look trivial and routinely sink exam scores.
What you'll cover
- • Combinatorics and counting
- • Discrete probability and conditioning
- • Random variables and expectation
- • Variance and common distributions
- • Continuous probability and densities
- • Tail bounds and applications to computing
The CSE 312 study guide
How to study for UW CSE 312, step by step.
- 1
Rebuild your counting toolkit first
Most CSE 312 probability errors are counting errors in disguise. Spend the opening weeks until permutations, combinations, and the inclusion-exclusion principle are automatic — everything downstream multiplies on top of them.
- 2
Name the distribution before computing
For every problem, decide whether it's binomial, geometric, Poisson, or something else before touching the math. Recognizing the model is the tested skill; the formula follows once you've named it.
- 3
Drill linearity of expectation relentlessly
These problems look trivial and quietly wreck exam scores. Work a dozen indicator-variable problems until decomposing a complicated expectation into a sum of simple ones is reflexive.
- 4
Write the setup in words, then the math
Define your sample space and random variables explicitly before any calculation. Partial credit on CSE 312 lives in a clearly stated model, and skipping it is how clean computations end up answering the wrong question.
- 5
Hand the probability units to Fennie
Upload your CSE 312 syllabus and Fennie builds a Daily Plan that paces counting and probability practice to your midterm dates, generating quizzes on distribution-recognition from your actual course materials. Free to start.
Start my CSE 312 plan free
How Fennie helps with CSE 312
Fennie's Daily Plans pace CSE 312's counting and probability units to your exam dates so distribution-recognition practice accumulates instead of cramming the weekend before. Chat through why a problem is geometric rather than binomial, and drill flashcards on expectation, variance, and the common distributions exams lean on.
FAQ
Is CSE 312 hard?
It's a real adjustment from CSE 311 — probabilistic modeling instead of proofs. The arithmetic is light, but setting up the right counting argument or naming the right distribution under exam pressure is where students lose points.
What's the prerequisite for CSE 312?
CSE 311 is the standard prerequisite, and comfort with the calculus sequence helps for the continuous-probability portion. Check current Allen School requirements, which evolve.
How do I study for CSE 312 exams?
Work problems by naming the distribution or counting technique before computing, and drill linearity-of-expectation problems specifically — they look easy and consistently cost points.
Pass CSE 312 with a plan, not a cram
Upload your CSE 312 materials and Fennie generates a Daily Plan paced to your deadline — plus chat, flashcards, and quizzes built from the actual course content.
Get started freeMore UW courses
CSE 121 — Introduction to Computer Programming I
CSE 121 is UW's no-experience-required intro to programming in Java, the first course in the CSE 12X sequence that replaced the old CSE 142/143 in 2022. It's designed for students who have never written code, covering variables, control flow, methods, and arrays through weekly programming assignments.
CSE 122 — Introduction to Computer Programming II
CSE 122 is the second course in UW's intro programming sequence, and the usual starting point for students with AP CS A credit or prior coding experience. It covers data structures from the client perspective — lists, sets, maps, stacks, queues — plus file processing and reasoning about code complexity.
CSE 123 — Introduction to Computer Programming III
CSE 123 completes UW's intro programming sequence, shifting from using data structures to building them. Students implement linked lists and binary trees, write recursive algorithms, and design class hierarchies with inheritance and interfaces — the material that used to be the back half of CSE 143.
CSE 311 — Foundations of Computing I
CSE 311 is UW's discrete math and theory course — propositional logic, proofs, set theory, induction, regular expressions, and finite automata. It's the first course in the major where the work is writing proofs instead of writing programs, and it underpins everything from CSE 312 to algorithms.