< CS106A

CS106A Syllabus

CS106AP introduces computer programming for people who have not programmed before. To learn programming, you need to do a lot of guided programming, and have a lot of help at hand - that's CS106A! This quarter's CS106AP is a new experimental course using the Python language and "lab" style coding in lecture. It is still CS106A, just trying a new strategy.

Students who already have significant programming experience should probably take another course, such as CME 193. There's also a "java" CS106A this quarter which is a very polished, well-worked out course.

Key course facts...

Nick Parlante, nick.parlante@cs.stanford.edu, Gates 189
I'll hang around at the end of class for questions


We will cover all the important topics of basic programming in Python: types, numbers, strings, functions, linear collections, dictionaries, logic, decomposition, good programming style, whole-program structure, text, file-processing, debugging, performance.


This is a new experimental draft form of the course this quarter! New lectures, new assignments, new labs .. new everything. The course is also offered in the spring, so you could take it then in a less-experimental form (with no enrollment limit).


There will be a weekly section, signups TBD. You will have your own section leader for the quarter who will lead section and grade your homeworks.


Nick's experimental lab-code machinery is hosted at parlante.org for now. We will also be using web-html notes each day as our book.

Python 3

We will use Python version 3. At first you will just use parlante.org so you don't need to install anything. Later we will do larger exercises where you will need a computer with Python 3 installed on it. We'll have detailed instructions for that when we get there.

Lab In Lecture

It's best to bring a laptop to lecture. We will experiment integrating little exercises with lecture. In some cases, these little exercises will need to be turned in as homework, so in effect, we'll use some lecture time to progress on homework exercises.


We will have approximately weekly programming assignments. We will also have small in-class programming exercises which may be due just a day after they are assigned. These will be very small.


There will be a midterm and a final.


Homework 40%

Section 5%

Exams 55%

Honor Code

In the spirit of collegial and cooperative learning, you are free to discuss ideas and approaches with other students, and then implement the solution yourself. The key is this: all the code you submit you should type in and get working yourself. In particular, it is not ok to share or paste in someone else's code. It is not ok to look at someone else's code and type it in as your own.

The Computer Science department produces many honor code cases at Stanford. This is not because CS is a magnet for cheating; it's just that online submissions provide a large body of evidence, and computer science has tools which do an extremely good job of finding cheating.

Each homework submission has a section where you can write notes for the grader. If you think a bit of collaboration may have crossed the line, mention it in your README notes for that homework. You can never get in honor code trouble for collaboration clearly descried in this way.

For this quarter, CS106AP exams will very much resemble the homework problems. So that's an additional reason you need to author and understand your own code.

It's not a person, it's a moment


Worked turned in by the due date will get a 5% on-time bonus. The 5% is small enough that will be unlikely to change anyone's grade, it's just a token reward for people who start the work early enough to finish on time. After the due date, each assignment will have a "grace period", 48 hours unless documented otherwise. You need to turn in the homework by the end of the grace period. Even work which does not function perfectly can get a lot more points than zero, so you should turn in what you have. And of course contact staff to arrange extra time for extraordinary circumstances.

Topics and Weekly Schedule

Below is a draft topic plan, more vague than it would be for an established course. The pace is very TBD as we experiment with this lab format. There is plenty of time in 10 weeks to cover all the important Python topics we need however. The exam dates are fixed.