Stanford CS 103: Mathematical Foundations of Computing
CS 103 is Stanford's discrete math and theory gateway — proof techniques, set theory, induction, graph basics, then finite automata, regular languages, and the first look at computability and P vs NP. For most students it's the first course where the deliverable is a proof, not a program.
Fennie is independent and not affiliated with Stanford University. This is an unofficial study guide.
Build my CS 103 study planWhat makes it hard
Proof-writing is a different muscle: problem sets are graded on rigor and precision of language, and answers that 'have the right idea' lose most of their points. Induction and the pumping-lemma-style arguments are the classic walls. Students used to verifying their work by running it have no compiler here — the feedback loop is slower and the standards are exact.
What you'll cover
- • Proof techniques and mathematical logic
- • Set theory and functions
- • Induction in all its forms
- • Graphs and relations
- • Finite automata and regular languages
- • Computability and P vs NP
The CS 103 study guide
How to study for Stanford CS 103, step by step.
- 1
Learn the proof formats as formats
Direct proof, contrapositive, contradiction, induction — each has a shape with required sentences. Internalize the templates first; creativity comes after the scaffolding is automatic.
- 2
Write proofs out fully, every time
Sketching 'the idea' and moving on is the failure mode — points live in the precision. Write complete proofs for practice problems and compare them line by line against posted solutions.
- 3
Give induction double reps
Induction underwrites half the course and most students' first proofs of it are subtly broken. Practice until stating the hypothesis precisely and using it honestly is reflexive.
- 4
Start problem sets early and revisit
Proofs need incubation — the argument you can't find Tuesday often appears Thursday. A problem set started the night before gets your worst thinking on every problem.
- 5
Translate definitions into your own words
Automata, regular languages, decidability: exam questions test whether you can wield definitions, not recite them. Restate each one and construct your own examples and non-examples.
- 6
Keep the proofs flowing with Fennie
Upload your CS 103 syllabus and Fennie's Daily Plan schedules proof practice daily with problem sets started early by design, plus quizzes built from the actual course material to test your definitions. Free to start.
Start my CS 103 plan free
How Fennie helps with CS 103
Fennie's Daily Plans schedule the daily proof reps CS 103 actually requires, with problem sets paced from release so arguments get incubation time. Chat through a proof's structure — what the hypothesis gives you, where the logic leaks — until rigor becomes habit, with your own course definitions as the source material.
FAQ
Is CS 103 hard?
It's a genuine gear-shift: the first Stanford CS course graded on proofs, where 'right idea, imprecise writing' loses most of the points. Students who practice writing complete proofs — not just reading them — handle it; everyone else gets recalibrated on problem set one.
Do I need CS 103 before CS 161?
Yes — CS 161 assumes the proof maturity and discrete-math toolkit CS 103 builds. The induction and graph fluency in particular get used constantly in algorithm analysis.
How do I get better at CS 103 proofs?
Volume plus comparison: write complete proofs for practice problems, then diff your writing against solutions line by line to see where rigor leaked. Office hours and the problem-set feedback are the fastest calibration loop — use both early in the quarter.
Pass CS 103 with a plan, not a cram
Upload your CS 103 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 Stanford courses
CS 106A — Programming Methodology
CS 106A is Stanford's famous introduction to programming, taught in Python — control flow, functions, decomposition, lists, dictionaries, and graphics — assuming zero prior experience. Its lectures and assignments are public, and through Code in Place it has been taught free to hundreds of thousands of people, so it's studied worldwide by enrolled students and self-learners alike.
CS 106B — Programming Abstractions
CS 106B follows 106A with programming abstractions in C++ — recursion, ADTs and the standard collections, big-O, linked structures, trees, and hashing. It's the course where Stanford CS gets real, and like 106A its materials are public and heavily used by self-learners.
CS 107 — Computer Organization and Systems
CS 107 takes students from C++ down to the machine: C programming, pointers and memory, bit-level representation, x86-64 assembly, and how the heap actually works — culminating in the famous heap allocator assignment. It's the systems gateway of the Stanford CS core.
CS 109 — Probability for Computer Scientists
CS 109 is probability built for CS — counting, conditional probability, random variables and distributions, the central limit theorem, then maximum likelihood and the first real machine learning algorithms. It bridges the core sequence to CS 221 and CS 229 and is many students' favorite course in the major.