CS106A: Programming Methodologies
Spring 2018
Monday, Wednesday, Friday 1:30pm to 2:20pm in Hewlett 200


Congrats and thank you for a great quarter!

Thats all for CS106A. It has been a wonderful experience being your teacher. Please don't be a stranger. I look forward to hearing about the great things that you all go on to do (both in computer science and beyond). For those of you who are graduating a special congratulations.

The exams have been marked and grades have been released. You can see your marked final here. Since we are away for summer, we don't take regrade requests unless we overlooked a significant part of your solution.

Until next time! Enjoy a well earned summer break :-)

All the best,
Chris, Julia and the rest of the teaching team.

Download your final exam

I hope this announcement finds you well. Most importantly, I hope you are all finding your learning zen this evening as we wrap up CS106A. You have come a long way and I see your hard work. CS106A is not an easy course. All the best with studying tonight, download your exam, get a good nights rest and we will see you tomorrow. Respect.

The CS106A exam is ready to download (see the final exam page).

Final Exam Practice and Information

The final exam is Friday, June 8th, 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: SteamTunnel

In your last assignment you will program a mini social network called SteamTunnel. 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.

Honor Code + Retractions

Worried about the honor code? Check out the announcement from today's class.


In your penultimate assignment you will program a data visualizer: NameSurfer. See the assignment page for the handout and starter code. Assignment 6 YEAH hours will be Wednesday 8-9:30PM in the LaIR. We hope to see you there!


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.

Midterms Returned

Graded CS106A midterms are available via
If your midterm doesn't load please email Chris or Julia, the Head TA.

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

If you believe part of your exam was incorrectly graded, regrade requests will be accepted through https://goo.gl/forms/WzSBM6RazMIVx9t02 until Wednesday, May 23. As part of your request, you will need to provide a short write-up of the problem(s) on your exam that you think were misgraded. Regrade requests need to point out the aspect of the problem that was correct, but for which points were taken off. We use a detailed rubric to grade exams, so simply requesting that an incorrect answer "should be worth more points" is not likely to result in additional points. Also, we reserve the right to re-grade the whole exam to make sure there are no other grading issues present - this may result in a lower total score.

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. Checkout the assignment page and make sure to get started early!

Extra examples with Strings

We've posted some extra String problems to give you even more practice, especially if you're finding Strings tricky on Hangman. In addition, Julia has made a video walkthrough of the Separating Digits and Letters problem from last week's section handout. Check it out!

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!

Extra Study Session

Women in CS (WiCS) is hosting a study session with section leaders Saturday 2:30-4 pm in the Women's Community Center. Everyone is welcome! There will be cupcakes and boba.

Midterm Exam

The midterm is Monday, May 7th, from 7pm to 9pm. Last names A - M will be in 320-105, and last names N - Z will be in 370-370. See the Midterm page for all the details and practice exams.

It is open-book, 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 will be receiving an email from Julia 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 Julia an email by Wednesday, May 2nd. 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).

We will be releasing practice exams and problems over the course of the next week, and we encourage people to attend CLaIR (conceptual LaIR), which is available at the same time and place as regular LaIR. There will be a midterm review session this Thursday at 7:30 pm in Hewlett 201. Hope to see you there!

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 Tuesday April 24th, 7:30-8:30 PM in 380-380x . 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!

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 (and are not switching for reasons related to being with a requested partner), please request a swap via cs198.stanford.edu. If you would like to switch into a different section to be with a requested partner, please request a swap by filling out this form. For this form, please be sure to fill out ALL possible times you and your partner are both free, not just your current assigned section times.

The deadline for signups and swaps is Wednesday, 4/18, at 12PM.

Section Signups Open Until 5PM Sunday 4/8

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.

Video recording free

As you have probably noticed CS106A lecture is not recorded Spring quarter. Suprisingly, that turns out to be a good thing! Students consistently learn more and perform much better in quarters without video recordings. If you miss a class you can catch up by doing the readings -- the book is an amazing resource :-).

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 19th, 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 4th of April, 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.

What is CS106A?

We put together some handouts to help you understand where we are going to go in CS106A and how we plan to get there. 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 in CS106A and the corresponding readings. We will also post lecture slides and lecture code on the schedule page.


Welcome to CS106A! We are looking forward to a fun quarter. Class starts Monday Apr 2nd at 1:30pm in the Hewlett 200 Auditorium.