Stanford 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.
Fennie is independent and not affiliated with Stanford University. This is an unofficial study guide.
Build my CS 106A study planWhat makes it hard
The course itself is friendly; the quarter isn't. Assignments are substantial and weekly, and students who lean on section leaders and trial-and-error to finish them meet exams that require writing code on paper. Self-learners following the public materials face the opposite problem: without deadlines or sections, most stall out around the midpoint when assignments stop being small.
What you'll cover
- • Python fundamentals and Karel-style problem solving
- • Control flow and functions
- • Decomposition and program design
- • Lists, dictionaries, and strings
- • File processing
- • Graphics and interactive programs
The CS 106A study guide
How to study for Stanford CS 106A, step by step.
- 1
Code a little every day from week one
Ten-week quarters punish binge-and-rest rhythms. Twenty to forty minutes of daily writing keeps each assignment buildable instead of heroic, and it's the only schedule that survives week five.
- 2
Practice decomposition explicitly
CS 106A grades program design, not just working output. Before coding each assignment, write the function breakdown in plain English — that skill is what the course is actually teaching.
- 3
Write code on paper before each exam
Exams happen without an interpreter, and students who finished assignments by run-and-fix collapse there. Produce small functions by hand weekly and trace code you didn't write.
- 4
Redo assignment logic from a blank file
After an assignment is done, rebuild its core from scratch. If you can't reproduce it without your old code, you borrowed understanding you don't own yet.
- 5
Self-learners: impose a real schedule
The public materials are complete but deadline-free, which is why most self-paced attempts stall mid-course. Set fixed weekly assignment dates and treat them as immovable.
- 6
Put the quarter on rails with Fennie
Upload the CS 106A syllabus — or the public course schedule if you're self-studying — and Fennie's Daily Plan paces daily coding practice to assignment and exam dates, with quizzes generated from the actual course material. Free to start.
Start my CS 106A plan free
How Fennie helps with CS 106A
Fennie's Daily Plans give CS 106A the daily-practice structure a ten-week quarter demands — and give self-learners the deadlines the public materials don't come with. Chat explains why your code behaves the way it does, trace by trace, building the on-paper fluency exams test, with practice questions drawn from your actual materials.
FAQ
Is CS 106A hard for beginners?
It's designed for true beginners and the support system is famous — but it's still a five-unit Stanford course on a ten-week clock. Assignments grow fast, and the students who struggle are the ones who treat the gentle first weeks as the pace of the whole course.
Can I take CS 106A online for free?
The lectures, assignments, and materials are publicly available, and Stanford's Code in Place program teaches the first half free each year. You won't get Stanford credit, but the content is the real course — the challenge for self-learners is structure, not access.
What language does CS 106A use?
Python, since the course transitioned from Java in 2019-2020. It starts with Karel-style problem solving to teach decomposition before full Python, which is part of why it works so well for beginners.
Pass CS 106A with a plan, not a cram
Upload your CS 106A 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 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 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.
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.