CS 106A: Programming Methodology
Summer 2018
Monday, Tuesday, Wednesday, Thursday 11:30AM-12:20PM PST in NVIDIA Auditorium


Lecture Videos
icon Eclipse
Course Staff
Pair Programming
icon Stanford Library Docs
Blank Karel Project
Blank Java Project


Monday, July 23

Friday, August 17
12:15-3:15PM PST


Sun-Wed, 7-11PM



Hours may change each week, please check this calendar!


Colin Kincaid Instructor: Colin Kincaid
Gates B02
Mon-Thu 12:30-1:30PM
Annie Hu Head TA: Annie Hu
Gates B02
Sun, Wed 5-7PM


Assignment 6: BiasBars


For your sixth assignment, you will implement a BiasBars, a program that visualizes gender biases in online comments. BiasBars will give you practice with data structures, classes and interactors. See the assignment page for more details. The assignment is due Tuesday, August 14th, but make sure to get started early! Additionally, no late submissions (free late days or otherwise) will be accepted on this assignment.

Midterms Graded

The midterm exams have been graded, and individual scores have been released via Gradescope, an online course grading website. Please see the midterm webpage for more information about exam regrades, statistics and scores. Regrades will be accepted until 1PM on Monday, August 6, 2018.

Assignment 5: ImageShop


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. See the assignment page for more details. The assignment is due Monday, August 6th, but make sure to get started early!

Midterm is ready to download!

The encrypted midterm is ready to download. Make sure to have both the midterm and bluebook download prior to the test. See the Midterm page for details. Reminder that there is no class tomorrow (so you have a little extra time to get ready). All the best!

Assignment 4: Breakout


For your fourth assignment, you will implement the classic arcade game Breakout. This assignment will give you practice with concepts like graphics programs, events, animation and instance variables. See the assignment page for more details. The assignment is due Monday, July 30th, but make sure to get started early!

In particular, the material covered by this assignment is also covered by the midterm, so starting this assignment before the midterm can give you extra practice with graphics, events, animation and instance variables. Definitely prioritize preparing for the midterm, though :-)


The midterm is coming up Monday, July 23 7-9PM PST in Hewlett 200, and a recorded review session will be held on Friday, July 20 1:30-2:50PM PST in Gates B01. For detailed information, including material to study, exam policies, and practice material, please see the midterm info webpage, linked to in the sidebar at left.

The midterm will be on your computer, so email Annie ASAP if you will need to borrow a laptop.

Assignment 3: Snowman

For your third assignment, you will write a console program to play a game called Snowman. This program will give you practice with methods, parameters, return, Strings, and file-reading. See the assignment page for more details. This assignment may optionally be completed in pairs. The assignment is due Thursday, July 19th, but make sure to get started early! The demo is currently missing from the assignment page, but it will be up shortly (and you can use the output comparison tool without the demo).

There will be YEAH hours Friday, 1:30-2:20pm in Gates B01. We hope to see you there!

Update: YEAH slides are now posted on the assignment page.

Lecture Feedback

Thank you to everyone who has given lecture feedback this quarter! (If you have not received an email from Annie about giving feedback, your assigned lectures have not come up yet). We really appreciate your comments and have been working to incorporate them as much as possible. If, at any point, you would like to provide some quick thoughts about a lecture besides the ones to which you are assigned, please feel free. We would really appreciate it! The feedback link can be found in the "Lectures" dropdown at the top of the page.

Updated console output tool

We hope you are hard at work on Assignment 2! We have updated the starter project with a change to the console output tool to make it slightly more accurate. Once you download the new starter project, the only change you need to make to your existing project is to copy the "spl.jar" file from the new project's "lib" folder to the current project's "lib" folder, replacing the current "spl.jar" file. The changes to the tool will likely affect very few people, but we would recommend getting the new tool just in case. Happy testing!

Assignment 2: Intro to Java

For your second assignment, you will write a series of Java console programs. These programs will give you practice with concepts like variables, methods, control flow, and more. See the assignment page for more details. The assignment is due Wednesday, July 11th, so make sure to get started early.

There will be YEAH (“Your Early Assignment Help”) hours tomorrow, 1:30-2:20pm in Gates B01. This is an optional session meant to provide additional help getting started with the assignment. We hope to see you there!

Update: YEAH slides are now posted on the assignment page.

July 4 Holiday

As a reminder, because of the July 4 holiday, we will not have lecture Wednesday. Additionally, there will be no helper hours or office hours.

If you have a Wednesday section, your Section Leader should have emailed you with your makeup section time. If you cannot make the new time, you may attend any of these makeup sections:

Time Room
Tuesday 5:30 PM Gates 260
Tuesday 6:30 PM Gates 260
Thursday 7:30 PM Gates 260
Thursday 8:30 PM Gates 200
Friday 6:30 PM Gates 260
Friday 7:30 PM Gates 260
Friday 8:30 PM Gates 260

Debugging with Karel

Since we did not have time to cover the Eclipse debugger during lecture last Wednesday, we have posted a video and a handout walkthrough to help you get more familiar with debugging using Eclipse. There are a few resources that may come in handy:

  1. Instructions on how to use the Eclipse debugger: these are in a new section added to the Eclipse page, linked to on the left.
  2. A "Debugging with Karel" handout: this is a new handout in the "Handouts" dropdown at the top. This handout walks you through debugging a sample buggy Roomba Karel program using the Eclipse debugger functionality outlined in the above online instructions.
  3. A video tutorial on using the Eclipse debugger:

We highly recommend you read through both of the handouts and/or watch the video to help you as you work on the assignments in this class. Knowing how to use the debugger is a valuable skill that will help you find and fix bugs more quickly. Moreover, if you run into bugs, you should try finding and fixing them yourself first before reaching out for help at the LaIR or office hours; in particular, at helper hours we will ask what you have first tried on your own to fix the issue you are having.

Good luck with Assignment 1!

Help Hours

As a reminder, LaIR helper hours and office hours have begun and are available if you need help on your first assignment, or if you have any questions about course material. The LaIR is in the first floor of Tressider Union. When you arrive, sign up for help at the computer near the back and sit at any of the tables in the area. The LaIR is open Sun - Wed 7PM-11PM. Colin's and Annie's office hours are listed in the sidebar to the left.

If you visit the LaIR, you will have the option to sign up for two different queues to most efficiently get help:

  • CLaIR queue: Sign up for the "Conceptual LaIR" (CLaIR) queue if you have a conceptual question about an assignment or material. Note that you are not allowed to ask questions about your code (e.g. debugging questions) in the CLaIR queue; only conceptual questions will be answered.
  • Standard queue: Sign up for the standard queue if you have a question that does not fit in the above categories, such as a more in-depth debugging question about your code.
Assignment 1: Karel the Robot
Karel the Robot

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 Thursday, July 5th, but make sure to get started early. Though Karel is a fun, simple robot, some of the questions can be tricky!

Section Assignments + Late Section Signups

Regular section signups have concluded, and we have finalized section assignments. You can find your assigned section here.

If you missed regular section signups, you may sign up using the late signup form in the "Section" dropdown at the top. Any SCPD students who missed the opportunity to sign up for a grader should do so also via the "Section" dropdown at the top.

If you would like to request a section swap, please carefully follow the instructions below. The deadline to request a section swap is Tuesday, 7/3 @ 5PM PST:

  • If you are an individual requesting a swap, you may do so via the "Section" dropdown at the top.
  • If you are a pair that are in different sections but would like to be in the same section, please fill out this form
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 Tuesday 6/26 (tomorrow), 7pm to 9pm in the LaIR (first floor of Tressider). Try to install Eclipse before and come if you have any trouble.

Also, as a reminder, regular LaIR hours will begin this Wednesday, 6/27.

Section Signups Open Until 5:00PM Tuesday 6/26

Section signups are now open! Click on the "Section" dropdown at the top and select "Sign up for section" to submit your preferences. As a reminder, signups are not first come, first served. As such, you may modify your preferences any time up until the Tuesday 5:00PM deadline. We will notify you of your section assignment by Wednesday morning, 6/27. Sections start this week!

Note: Remote SCPD students (if you are an SCPD student but able to attend a section on campus, you may disregard this message) should not sign up for a section; instead, register through the SCPD signup link in the "Section" tab.


Welcome to CS 106A! We are looking forward to a fun quarter. Class starts Monday, June 25th at 11:30AM in NVIDIA Auditorium. Please see the "Handouts" dropdown above for the General Information handout, as well as the Honor Code handout. SCPD students should also read the SCPD Information handout.