CS106A: Programming Methodologies
Stanford University: Winter 2019
Monday, Wednesday, Friday 3:30pm - 4:20pm in NVIDIA Auditorium

This is the website for the CS106A offering from Win 2019. To access the course for Spr 2019, please go to this page.


CS106A Info
Course Schedule
Style Guide
icon Piazza
icon Eclipse
Karel Book
icon Stanford Java Lib
Blank Java Project
Blank Karel Project
LaIR Hours



Monday, Feb 11th

Final Exam
Monday, Mar 18th

Chris Piech
Gates 202
Tue 1:30-3:30pm

Brahm Capoor
Gates B02
Wed 1-3pm
Thurs 2-4pm


Monday 2-4PM
Tuesday 4-6PM
Wednesday 5:30-7:30PM
Thursday 12-2PM

Sign up here
(free QueueStatus account required).

All office hours in PST.

Office Hours end after Thurs. 3/14


Final Exam Practice and Information

The final exam is Monday, March 18th, from 8:30AM - 11:30AM. You can find all of the final exam information, including practice exams and exam locations, here: Final Exam Info

Assignment 7: Shahidi

In your last assignment you will program a web app called Shahidi. This assignment consists of client and server programs that communicate with each other over the Internet. See the assignment page for the handout and starter code, as well as demo programs.


In your penultimate assignment you will program a data visualizer: NameSurfer. See the assignment page for the handout and starter code.


One of the joys of programming is the ability to make something totally of your own creation. In CS106A this quarter we are hosting a Graphics Contest where you can program anything you like using the concepts and tools we learn in class. There will be four grand prizes which each are worth a 100% on the final exam. Serious entries and runners up will be awarded extra credit on assignments. See the contest handout for more details.

This contest is genuinely optional (and in the genuine sense of the word optional – not in some mischievous “this is extra credit but if you don’t do it, your grade will suffer” sort of way). I will only apply bonuses for the contest after I have calculated final grades for the class. Thus, if you don’t participate you are going to get the exact same final grade in CS106A as you would have received had there been no contest.

Assignment 5: DarkRoom

For your fifth assignment, you will implement the algorithms for an image editing program. This assignment will give you practice with concepts like 1D arrays, 2D arrays, and image manipulation. Checkout the assignment page and make sure to get started early!

Midterms Returned

Graded CS106A midterms are available here.
If your midterm doesn't load please email Chris or Brahm.

The mean for the CS106A midterm was 95 out of 120 points. The median was 99 out of 120 points. Here is the full distribution:

Chris' Office Hours Rescheduled

Chris' office hours have been moved to Thursday 2/21 from 1:30-3:30pm.

Midterm Exam

The midterm is Monday, February 11th, from 7pm to 9pm. Last names A - O will be in Cemex, and last names P - Z will be in Cubberly Auditorium. See the Midterm page for all the details and practice exams.

It is open-book with 10 pages of open-notes, but closed electronic device for everything except administering the exam itself (this means any resources you want to use during the exam must be printed out). If you requested an alternate time and/or OAE accommodations, you should have received an email from Brahm with your timing and room assignment details.

The exam will be administered digitally; if you do not have access to a laptop you feel comfortable using for the duration of the exam, please send Brahm as soon as possible. Please bring a fully charged laptop to the exam. If you'd like extra assurance of access to an outlet, please feel free to bring an extension cord if you have one (we will have some, but extras are always helpful).

Assignment 4: Hangman

Assignment 4 (Hangman) has been released, a fun console+graphics game that will give you practice with strings and file-reading - see the assignment page for the handout, starter code and pair instructions.

Assignment 3: Breakout

In your third assignment you will program the classic game of Breakout! See the assignment page for the handout and starter code. Assignment 3 YEAH hours will be Wednesday January 30th, 7:00-8:00 PM in 320-105 . As a reminder, YEAH hours, or “Your Early Assignment Help” hours, are optional sessions meant to provide additional help getting started with each assignment. We hope to see you there!

Martin Luther King, Jr. Day

Reminder that today, Jan 21st, is MLK day so there will be no classes. LaIR office hours will start this evening at 6pm.

Here is a video of the last public speech MLK gave. The date was April 3, 1968 and he was assassinated the day after. Civil rights for all people, regardless of their ethnicity, is a cause that is still being fought for around the world.

If you haven't recently seen the I Have a Dream Speech, that is worth watching for its beautiful narrative and its influence on history. In 1967 MLK gave a speech at Stanford where he directly addressed students and faculty.

Nested for loops walkthrough

Nested for loops are a challenging concept, but important to understand. To help make sure you grasp the mechanics of this control flow, we prepared a video walkthrough of the chessboard example from lecture today. Check it out below:

Second Assignment: Simple Java

For your second assignment, you'll get practice writing a series of small Java programs. These programs consist of both console and graphics programs! After Friday's lecture you should be able to complete problems 1 through 5. Note that the style guide has also been updated with additional guidelines for the second assignment, and YEAH hours slides will be available after YEAH hours.

Section Assignments & Late Signups

For those who submitted section preferences by 5PM on Sunday, we have finished making section assignments; as a reminder, sections start this week! (You can view your assigned section via cs198.stanford.edu). If you were unable to submit the form by the 5PM Sunday deadline, the late signup form is available on that site as well once you log in.

If you would like to individually switch to a different section because of scheduling or other constraints please request a swap via cs198.stanford.edu. You can also use this form to join the section of a partner who is another section. If you have any questions, email Brahm.

Section Signups Open Until 5PM Sunday 1/13

Section signups are now open! Click on the "Section" tab at the top and select "Section Signup" to submit your preferences. As a reminder, signups are not first come first serve. As such, you may modify your preferences any time up until the Sunday 5PM deadline. We will notify you of your section assignment early next week.

First Assignment: Karel

For your first assignment you will write a series of Karel the Robot programs. See the assignment page for more details. The assignment is due Friday, Jan 18th, but make sure to get started early. Though Karel is a fun, simple robot, some of the questions can take a lot of time.

Download Eclipse

In CS106A we use a free "development environment" called iconEclipse to write our programs. It is the most popular development environment for the Java language. Download eclipse by following these instructions.

If you run into any issues while installing or using Eclipse, please see the bottom of the Eclipse install instructions for common troubleshooting steps. There will also be an Eclipse installation troubleshooting session Wednesday the 9th of January, 7pm to 9pm in the LaIR (first floor of Tresidder). Try to install Eclipse before and come if you have any trouble.

Who are you?

We have a very simple google form for you to fill out so that we have a chance to get to know you a little. It should only take a few minutes. Though we call it "assignment 0" it is not for a grade.

CS 106A PathFinders

CS Pathfinders is a supplementary instruction program created to increase the diversity of the undergraduate population in the School of Engineering. Students participating in the program will enroll in an additional one unit course (CR/NC) and will attend an additional two hour section every week focused on reviewing course material and completing coding exercises to solidify understanding.

Application link: https://goo.gl/forms/Yrt6X3fmnJZ0Ceq83 This is the general ACE link but students can select CS106A as their "ACE Course" at the bottom of the form.

Any questions can be directed towards (TG) at tgsido@stanford.edu

What is CS106A?

We put together some handouts to help you the CS106A journey. See the General Information handout for details on logistics and the Course Placement handout to help you decide if CS106A is the right place for you. The Course Schedule page shows you the topics that we are going to cover and the corresponding readings.


Welcome to CS106A! We are looking forward to a fun quarter. Class starts Monday Jan 7th at 3:30pm in the NVIDIA Auditorium (inside the Huang building).