Welcome to CS106A

alt: dogs try again and again and it does not work, 'it will work, you will see' they say

What Is The Plan for CS106A?


CS106A in a Picture

alt: computers and useful things like the internet, what is between?
alt: computers and useful things like the internet, CODE is what is between

Code drives the behavior of computer systems. In CS106A you will build, and play with, and debug many code problems. With that experience building code, even if you never write another line, you will understand the nature of computing, its possibilities and limitations in the world. Understanding code, I imagine that you will never see the world and its myriad computer systems quite the same way.

Why Take CS106A?

CS106A will show CS in its best light, be we should badger anyone about it. We will show how computing works, and what the practices and challenges are. But obviously each student ultimately must make their own decision about what to pursue, and there are many paths.

Reminder: We're Not Here To Badger Anyone

Other CS Courses

CS106AX is an "accelerated" variant of CS106A taught this quarter for people who already have some programming experience and want an extra-challenging experience. It's more advanced and moves more quickly.

CS106AX is designed for those with prior programming experience who want to review introductory material while challenging themselves with more elaborate programming assignments. Because those taking CS106AX have prior experience, we're able to cover the basics more quickly, understand how larger programs are constructed, and understand why the implementation of web applications often relies on an ability to code in multiple languages.

With that in mind, CS106AX teaches two programming languages: JavaScript and Python. JavaScript programs are typically executed within the web browser to foster interactivity and substantially improve user experience, and Python is often used to implement the server-synthesized HTML pages and deliver them to the browser.

CS106AX is intentionally offered at the same time as CS106A, so students can choose which of the two is the better fit without having to worry about how their choice will impact their class schedule.

CS193q is a 1 unit seminar that teaches Python very quickly, just mentioning the various features. Geared for people who already know how to program and want to see how programming constructs work in Python.

CS105 is a more lightweight introduction to CS ideas, but without as much coding as CS106A.

CS106B is the second course, teaching more advanced programming and computer science for people who know basic programming.

CME193 is a 1-unit course in applied Python for scientists and engineers. It is a course one could take after CS106A.

If you have zero or little programming experience, CS106A is the right place for you. If you have some experience and are not sure if CS106A is too easy for you, take a look at the old final exams linked off the course page. Since our week-1 material starts at the very beginning, looking at the final exam is a better indication of where we end up.


Fundamental Equation of Computers

computer = powerful + stupid

Computers are a surprising combination of opposites. Here is a little foreshadowing story on these lines.

Step 1 - Dumb, Fragile Computer .. Broken System

MM-DD-YYYY vs 9-22-2025

Step-2 - Weird But Not Difficult

MM-DD-YYYY vs 09-22-2025

Course Details

We will go through the main course details quickly here, then we'll start coding. Please read the syllabus for the spelled out details.

Everything on Course Page cs106a.stanford.edu

Videos

Python Language

Education Theory - Learn By Doing

Lecture Notes and Exercises

Lecture Goes Pretty Fast - Revisit Lecture Examples

Weekly Section

No A+ Grades

Late Days

Office Hours - Lair

Office Hours - Nick and Ngoc

Ed Forum

Honor Code

Nick's Theory of the 10 Week Quarter


CS106A Important True/False Disclosure

Q. You say everyone can do this class. True/False - CS106A is an easy course.

False. It's doable, but "easy" is not the word that springs to mind.