CS106B: Programming Abstractions
Note: This web site is out of date. This is the course web site from a past quarter, Fall 2016. If you are a current student taking the course, this is not your class web site, and you should visit the current class web site instead at http://cs106b.stanford.edu/. If you are already at cs106b.stanford.edu, the web page may not be updated yet for the new quarter. Please be advised that courses change with each new quarter and instructor. Any information on this out-of-date page may not apply to you this quarter.
Fall 2016
Monday, Wednesday, Friday 12:30 to 1:20pm in Hewlett 200


Course Overview
icon Piazza
Lecture Videos
icon QT Creator
icon Stanford C++ Lib
Blank Project
Help Hours



Thursday, Nov 3rd

Monday, Dec 12th


Co-Lecturer: Chris Gregg
Gates 191
Tue 11-12pm,
Thur 4-5pm

Co-Lecturer: Chris Piech
Gates 193
Mon 3:30-4:30pm,
Wed 1:30-2:30pm

Head TA Anton Apostolatos
Huang Basement
Wed 2:30-4:30pm


Final Review Video

The slides can be found here

Practice Finals

We posted practice finals. The solutions to the first practice final are up, and the solutions to the second practice final will be posted on Friday.

Assignment 7 (Trailblazer) YEAH Hours Video

Search Demo

We put together a demo of all the search algorithms (to be updated as we learn more). Check it out:

Assignment 7 YEAH Hours

Come one, come all! This Friday December 2nd, 3:30pm-4:30pm in Bishop Auditorium we'll be holding the last YEAH hours of the quarter. A reminder that you may not use a late day for Trailblazer, so we definitely recommend you start early!

Assignment 6 (Huffman Encoding) YEAH Hours Video

Assignment 6 YEAH Hours

The YEAH hours for Huffman Encoding will be this Thursday, November 17 8-9pm at 320-105! Huffman encoding is an awesome algorithm, but it definitely can be tricky, so I envision these YEAH hours to be particularly useful. We will try to film, as usual. See you there!

Assignment 5 (PQueue) YEAH Hours Video

Assignment 5 YEAH Hours

We'll be holding PQueue YEAH hours this Thursday November 10, 8-9pm at 320-105 (note that this is a different room than usual). Even though the assignment was released on Monday, we won't be going over Binary Heaps (a large part of the PQueue assignment concerns heaps) until Wednesday, which is why we're holding YEAH hours slightly later this time around. We will once more try to record the session.

Midterm solutions

Midterm exams have been handed back electronically via gradescope. To help you get a big picture of how you are doing we published the class distribution, and midterm solutions. Good work! We were impressed.

Midterm Review Slides and Video

Midterm review slides

Midterm Resources

Update: we posted the second practice midterm and solutions to the first.

We made a midterm info page (and will continue to update it) with practice midterms, reference sheets and tips for taking exams by hand. The first practice midterm is up.


The midterm will be on Thursday November 3rd 7:00-9:00pm. We suggest you arrive a few minutes early, so that we can start on time. We will be located in two different rooms. You will go to a room depending on the first letter of your last name, as follows:

Last name starts with A-R: Cemex Auditorium (GSB)

Last name starts with S-Z: Braun Auditorium (Mudd Chemistry Building)

If you're in Braun, there's construction all around, so you may have a harder-than-usual time getting there. Plan accordingly and arrive early!

Midterm Review Session

We will be holding a Midterm Review Session Sunday October 30th at 7:00-8:30pm in Bishop Auditorium. We'll be going over the various topics for the midterm, working out problems for each of them, and discussing strategies for studying and for taking the written exam. You won't want to miss it!

Assignment 4 (Boggle) YEAH Hours Video

Assignment 4 YEAH Hours

YEAH Hours for the fourth assignment, Boggle, will be Monday, October 24th 7-8pm in 420-041. This is among the most involved assignments in this class, so it's definitely a session you won't want to miss!

We will be recording the session.

Assignment 3 (Meta Academy) YEAH Hours Video

Assignment 3 YEAH Hours

Excited to get a head start on the third assignment? YEAH hours for Homework 3: Meta Academy will be this Monday October 17 at 7:00pm-8:00pm in 420-041. The YEAH hour will be recorded, for those who can't make it. See you there!

Added Texts to Serafini

A student astutely pointed out that we didn't have a particularly diverse set of texts for the Serafini homework assignment. We have rectified this by adding the following texts:

To install the texts so you can use them in your program:

  1. Unzip the otherTexts.zip file.
  2. Close Qt Creator and delete the .user.pro file, and the build directory (probably in the same directory where your project directory is)
  3. Copy the .txt files into the Ngrams/res folder
  4. Re-open your project and re-configure it in Qt Creator
Let us know if you can't figure it out!

Assignment 2 YEAH Hours Video

Scatter blurriness -- we will accept two solutions

There have been a number of posts asking about why our Scatter example output is less blurry than yours. It turns out that in our solution, we interpreted "radius" to just be to the right and down on the image (not left/up, as well), which is contrary to our responses on Piazza and in office hours / LaIR.

So, we will accept solutions that meet either criteria. In other words, if you interpreted the scatter radius to be to the left/right and up/down distance away from the original pixel, that's fine. Or, if you interpreted the scatter radius to just be to one side and one vertical direction, we will accept that, too.

To reiterate: if your solution for Scatter is coming out much more blurry than our solution, that is probably fine, and we will accept it if you have a reasonable interpretation of the problem.

We're very sorry for the confusion, and thanks to everyone who posted a question about it!

Please respond in this thread in Piazza if you have further questions or concerns.

Assignment 2 YEAH Hours

Excited to get a head start on the second assignment? YEAH hours for Homework 2: ADTs will be this Friday October 7 at 4:00pm-5:00pm in 420-041. The YEAH hour will be recorded, though we will have a secret surprise to those who come to the session. See you there!

YEAH Fauxtoshop Introduction Video

See the video below for Anton's introduction to the Fauxtoshop assignment.

How to Create a Blank Project Video

See below for a short instructional video on how to create a blank project from a copy of another project.

Assignment 1: Fauxtoshop

Fauxtoshop, the first assignment, is out! It is due next Friday (Oct 7th) at noon. Get started early and come to YEAH hours (which will be recorded) Wednesday September 28 at 7:00pm-8:00pm in 420-041.

Qt Special Help Hour

We'll be holding special Qt help session hours in the LaIR (second floor of the Old Union) 8-9pm Thursday September 29. Please come only if you've tried installing Qt Creator and have problems that are not addressed in the FAQ or the troubleshooting guide!

Online Video Access

CS106B will be recorded this quarter, and will be available at 7:00pm same day of class lecture. Lectures are not downloadable, but are streamable throughout the Fall '16 quarter. These recordings are for on-campus students only - CS106B is not an SCPD course this quarter. The link to access these videos is:


Assignment 1 YEAH Hours

Every CS106B assignment will have YEAH (Your Early Assignment Help) hours. In these one-hour sessions we will delve into the homework collectively and try to tackle any questions or immediate issues we have with the write-up or what the assignment requires. These are super useful, and can cut many hours of head scratching for you when dealing with the assignments in this course.

The first YEAH hour will be this Wednesday September 28 at 7:00pm-8:00pm in 420-041. See you there!

Assignment 0: Name Hash

This is a very simple assignment that demonstrates that you have successfully installed Qt Creator on your computer and can run a short test program. Your only submission requirement is to put the result of the program (you will see what this means when you run it!) into a Google Form, located here:


This assignment is not meant to be stressful – we just want you to get Qt Creator going early so you don’t get realistically stressed out for the first real assignment.

Sign Up for Piazza

This quarter CS106B is using Piazza to facilitate questions. Go to piazza.com/stanford/fall2016/cs106b/home to sign up. You can ask course related questions and see answers to other student questions. For personal questions please feel free to email Anton or either Chris.


Welcome to CS106B! We are looking forward to a fun quarter. Class starts Monday Sept 26th at 12:30am in Hewlett 200.