Assignment 7 Out
March 10, 2014

Assignment 7 (FacePamphlet) went out early today. It's due on Friday, March 21 at 11:30AM. This is a hard deadline and no late days may be used on the assignment.

In this assignment, you'll build your own social network. In doing so, you'll pull together techniques from all over the course into a single, unified project. We hope that this final assignment of the quarter gives you a sense for just how much ground we've covered!

Good luck!

Review Session Notes
March 2, 2014

We've posted notes from the second midterm review session in case you'd like to study off of them. Hope this helps!

Midterm Locations
March 1, 2014

The second midterm exam will be held across 11 different rooms based on last name. Here's the room assignments:

  • Abr - Che: Gates B01
  • Chi - Erd: Gates B03
  • Esp - Fre: Gates B12
  • Fu - Kea: SkillAud
  • Kel - Lim: HerrinT175
  • Lin - Oul: Hewlett201
  • Pad - Ren: 200-205
  • Rey - San: 380-380W
  • Sar - Sta: 380-380X
  • Ste - Tse: 380-380Y
  • Tsk - Zhu: 420-041
Assignment 6 Out
February 28, 2014

Assignment 6 (NameSurfer) goes out today and is due on Wednesday, March 12 at 3:15PM. This assignment will give you experience with data visualization, object-oriented design, and interactors. We hope that you have fun exploring popular trends in US history!

Second Midterm Exam
February 26, 2014

The second midterm exam will be next Wednesday, March 5, from 7PM - 10PM. It covers material up through and including today's lecture on interactors.

We've posted a practice midterm exam. This was the second midterm we gave out last winter, which should be similar in structure to the upcoming exam. We'll release a second practice exam on Friday along with a solution set.

Midterms Graded
February 20, 2014

Midterms are graded! We handed back exams at the end of yesterday's lecture, and they are currently available for pickup in a marked filing cabinet in the Gates B Wing near Keith's office (under the entrance marked "Stanford Engineering Venture Fund Laboratories."). Solutions and statistics about the first midterm are available online.

If you have any questions about the exam, please feel free to ask us. If you believe that we made any errors grading your exam, you are welcome to submit the exam for a regrade no later than Wednesday, February 26 at 3:15PM by writing a short note describing what you'd like us to review and handing your exam to either Keith or Vikas. No regrades will be considered after this deadline.

Assignment 5 Out
February 19, 2014

Assignment 5 (Array Algorithms) goes out today and is due next Friday, February 28 at 3:15PM. This assignment explores arrays as applied to media processing, and we hope that you have fun building out the programs for this project!

This assignment comes with some prepackaged JAR files that contain the driver code for the assignment. Your job is just to implement the core logic for the various programs. If you'd like to access the full source of those JAR files (perhaps out of curiosity, or perhaps to do some extensions), you can download the JAR source files at the link for the assignment.

Assignment 4 Out
February 10, 2014

Assignment 4 (Readability Indices) goes out today and is due next Wednesday, February 19 at 3:15PM. This assignment explores strings, file processing, ArrayLists, decomposition, and modular design. It's a new assignment for CS106A, and we hope you enjoy it!

Review Session Notes
February 9, 2014

We've posted notes from the first midterm review session in case you'd like to study off of them. Hope this helps!

Exam Locations
February 8, 2014

The midterm will be held in three different locations this Tuesday from 7PM - 10PM, divvied up by last name:

  • Last name Aa - Ep: Braun Auditorium
  • Last name Eq - Na: Hewlett 200
  • Last name Nb - Zz: Cemex Auditorium

If you have requested to take the exam at an alternate time, you should receive an email with us confirming the alternate exam time and place later this afternoon.

Good luck!

Midterm Review Session
February 8, 2014

The review session for the first midterm is tomorrow, Sunday February 9, at 1pm in Hewlett 200. Come with questions! If you cannot make it, slides from the session will be posted here.

Midterm Date Change
February 6, 2014

The first midterm exam has been rescheduled for Tuesday, February 11 from 7PM - 10PM. I sincerely apologize for the inconvenience. Please refer to the email I sent out to the class list for more information.

Because this new date is so close to the Breakout due date, I have given everyone in the course an extra late period.

Please feel free to contact me if you have any questions.

Practice Exam Available
February 3, 2014

To help you prepare for the midterm, we've released a practice midterm. This was the midterm from last Winter quarter, so it should be comparable in style and substance to the actual midterm. We'll release solutions to this exam later in the week.

Assignment 3 Out
January 31, 2014

Assignment 3: Breakout goes out today and is due on Monday, February 10 at 3:15PM. This classic CS106A assignment combines together events, animation, and randomness into a nifty arcade game that you'll definitely want to share with your friends. We hope that you have fun with this assignment!

Miles will be holding assignment review hours on Tuesday, February 4 from 7:30PM - 8:30PM in Braun Auditorium. We'll get notes from that review session posted as soon as possible.

Good luck!

Keith's OH Location
January 22, 2014

Keith's office hours will now be held in Gates 300 rather than the previous location. The times are the same as before.

Assignment 2 Out
January 17, 2014

Assignment 2: Welcome to Java goes out today and is due on Friday, January 31 at 3:15PM. This will be your first introduction to Java programming. The programs in this assignment range from simple console programs up through artistic composition, and we hope you enjoy it!

Good luck!

Assignment 1 Out
January 8, 2014

Assignment 1: Karel the Robot goes out today and is due on Friday, January 17 at 3:15PM. In this assignment, you'll get to play around with methods and control structures and will see how to use computers to solve complex problems using simple tools.

Good luck!

Welcome to CS106A!
January 3, 2014

Welcome to CS106A! We've got an exciting quarter ahead of us and you're in for a real programming treat. Over the next ten weeks, we'll explore programming methodology, standard programming idioms and techniques, and applications of computer science across a variety of disciplines. It's going to be a lot of fun, and I hope that you're able to join us!

In the meantime, feel free to check out the course information handout and syllabus to learn more about what this class is all about, the prerequisites, and the course policies. If you have any questions in the meantime, feel free to email me at with questions.

See you soon!


00: Course Information
01: Syllabus
02: Course Placement
03: Honor Code
04: Downloading Eclipse
05: Karel in Eclipse
07: Submitting Work
09: Programming Patterns
11: Control Statements
13: Random Numbers
15: Coding Style
18: Practice Midterm
18S: Practice Midterm Solns
19: Exam Strategies
20: 2nd Practice Midterm
20S: 2nd Practice Midterm Solns
22S: Midterm Solutions
27: Practice Second Midterm
27S: Practice Second Midterm Solns
28: Practice Second Midterm II
28S: Practice Second Midterm II Solns
30S: Second Midterm Solns
33: JAR Files

Section Handouts

Section Handout 1
Section Handout 2
Section Handout 3
Section Handout 4
Section Handout 5
Section Handout 6
Section Handout 7
Section Handout 8


Assignment 1: Karel the Robot
   Handout | Starter Files

Assignment 2: Welcome to Java!
   Handout | Starter Files | Notes

Assignment 3: Breakout
   Handout | Starter Files | Demo | Notes

Assignment 4: Readability Indices
   Handout | Starter Files | Notes

Assignment 5: Array Algorithms
   Handout | Files | Demo | JARs | Notes

Assignment 6: NameSurfer
   Handout | Files | Notes

Assignment 7: FacePamphlet
   Handout | Files | Demo | Notes

Office Hours

Keith (Gates 300)
  Tue 10:15AM - 12:15PM
  Wed  4:30PM -  6:30PM

Vikas (Gates 160)
  Tue/Thu 2:15PM - 4:15PM


Lecture Videos
Download Eclipse
Assignment Feedback
Section Sign-Ups
CS106A YouTube Channel
ACM Documentation
Karel Book
Blank Karel Project
Blank Java Project
LaIR Helper Hours
Question Hut, Q&A site


00: Introduction
  Slides | Code
01: Programming Karel
  Slides | Code
02: Problem Solving w/Karel
  Slides | Code
03: Introduction to Java
04: Expressions, Control Statements
  Slides | Code
05: Control Statements
  Slides | Code
06: Objects and Graphics
  Slides | Code
07: Methods
  Slides | Code
08: Animation
  Slides | Code
09: Randomness
  Slides | Code
10: Events
  Slides | Code
11: Strings I
  Slides | Code
12: Strings II
  Slides | Code
13: File Processing
  Slides | Code
14: ArrayList
  Slides | Code
15: Testing
  Slides | Code
16: Arrays
  Slides | Code
17: Multidimensional Arrays
  Slides | Code
18: HashMap
  Slides | Code
19: Graphs and Networks
  Slides | Code | Data
20: Interactors
  Slides | Code
21: Classes
  Slides | Code
22: Networking
  Slides | Code
23: Machine Learning
  Slides | Code
24: Efficiency
25: Security and Privacy
26: Programming in the Real World
  Slides | Code
27: Where to Go from Here