To visit the website for fall quarter's CS106A offering, click here.

Announcements

Assignment 8 Out
March 9, 2015

The final programming assignment of the quarter, Assignment 8 (FacePamphlet) goes out today. It's due on Tuesday, March 17 at 8:30AM (note the unusual due time of 8:30AM). This assignment asks you to design a program for maintaining a social network. You can create profiles, set status messages, and create friendships. Conceptually, there's not much new in this assignment from NameSurfer, and we hope that this assignment helps solidify your understanding of the course content and serves as a fitting capstone to your CS106A experience. After all - you'll have gone from zero to building your own social network in ten weeks!

Second Midterm Room Assignments
March 2, 2015

The second midterm exam locations are the same as the first! Rooms are assigned by last (family) names as follows:

  • Abb - Jon: Go to Hewlett 200
  • Jun - Mari: Go to Hewlett 201
  • Marq - Mik: Go to Hewlett 101
  • Mil - Ogr: Go to Hewlett 102
  • Oke - Pat: Go to Hewlett 103
  • Pau - Tan: Go to Braun Auditorium
  • Tao - Zuc: Go to 320-105

Good luck!

Assignment 7 Out
February 27, 2015

Assignment 7 (NameSurfer) goes out today. It's due on Monday, March 9 at 3:15PM. This assignment will give you a chance to play around with classes, interactors, HashMaps, inheritance, and the graphics system. We hope that you enjoy it!

Practice Midterm Released
February 26, 2015

In case you missed the practice exam tonight, we've released electronic copies of the practice second midterm and solutions.

We recommend that you write out your answers on paper and then check them electronically. We've released a Java project with starter code for trying out the coding problems that you can use to help test out your answers. Hope this helps!

Second Midterm Logistics
February 24, 2015

The first midterm exam is coming up next Tuesday, March 3, from 7PM - 10PM. The exam is closed-book and closed-computer. You may, however, have one double-sided sheet of 8.5" × 11" paper with you when you take the exam. We'll be providing this Java and library reference handout during the exam.

The exam covers material up through and including Wednesday's lecture on graphs and networks. The exam will primarily focus on the topics tested on Assignments 5 and 6 but will include at least one question on HashMaps. Interactors will not be tested. Due to the nature of the material in this course, the exam may indirectly test topics from earlier in the quarter (loops, methods, etc).

We will be holding a practice exam on Thursday from 7PM - 10PM in Cubberly Auditorium. It's purely optional, but highly recommended as a way to get practice writing code on paper under exam conditions. We'll release the exam and solutions electronically this evening in case you're unable to make it.

We are currently finalizing the exam locations, and we'll post room assignments later this week.

Assignment 6 Sources Released
February 19, 2015

If you are interested in adding extensions to Assignment 6 and would like to access the full source for the assignment starter code, you can download the full source using this link. For simplicity, we recommend only downloading these projects if you're adding in extensions; the default starter code is all you need for the base assignment.

Midterms Graded
February 18, 2015

The first midterm exam has been graded! If you haven't already picked up your exam, they're available for pickup right outside of Keith's office (Gates 178). You're welcome to stop by at your convenience.

We've released a handout with statistics, solutions, and common mistakes that we hope will give you a better sense for your performance on the exam and how to improve going forward.

If you believe that we've made any grading errors on your exam, you are welcome to submit a regrade request. To do so, please print out a copy of the regrade request form, fill it out, and staple it to the front of your exam. You can then hand it to either Keith or Alisha at their office hours or at lecture. All regrade requests must be received by 4:15PM on Wednesday, February 26.

Assignment 6 Out
February 18, 2015

Assignment 6 (Array Algorithms) goes out today and is due on Friday, February 27. In this assignment, you'll get to play around with arrays, image processing, and sound processing and will build up a much stronger intuition for how, when, where, and why to use arrays. We hope you have fun with this one!

Midterm Room Assignments
February 5, 2015

The first midterm will be spread across seven different testing locations, which are assigned by last (family) name as follows:

  • Abb - Jon: Go to Hewlett 200
  • Jun - Mari: Go to Hewlett 201
  • Marq - Mik: Go to Hewlett 101
  • Mil - Ogr: Go to Hewlett 102
  • Oke - Pat: Go to Hewlett 103
  • Pau - Tan: Go to Braun Auditorium
  • Tao - Zuc: Go to 320-105

Good luck!

Midterm Logistics
February 4, 2015

The first midterm exam is coming up next Tuesday, February 10, from 7PM - 10PM. The exam is closed-book and closed-computer. You may, however, have one double-sided sheet of 8.5" × 11" paper with you when you take the exam. We'll be providing this Karel and library documentation handout during the exam as a reference.

The exam covers material up through and including today's (Wednesday's) lecture on strings and string processing. The focus of the exam will primarily be on the material explored on the first four programming assignments.

We will be holding a practice exam tonight from 7PM - 10PM in Cemex Auditorium. It's purely optional, but highly recommended as a way to get practice writing code on paper under exam conditions. We'll release the exam and solutions electronically this evening in case you're unable to make it.

We are currently finalizing the exam locations, and we'll post room assignments later this week.

Assignment 4 Out
February 2, 2015

Assignment 4 (Breakout!) goes out today and is due next Monday, February 9, at 3:15PM. In this classic CS106A assignment, you'll get a chance to combine the skills you developed in Assignments 2 and 3 with event processing to build your owen version of the classic arcade game. We hope that you have a lot of fun with this assignment!

Good luck!

Assignment 3 Out
January 26, 2015

Assignment 3 (Problem-Solving in Java) goes out today and is due in one week (Monday, February 2). This assignment picks up where Assignment 2 leaves off and asks you to design a collection of smaller Java programs, some graphical, some text-based. We hope that you find these problems interesting and come away from this assignment with a firm grasp of loops, methods, variables, parameters, and return statements.

Good luck!

Assignment 2 Out
January 16, 2015

Assignment 2 goes out today and is due on Monday, January 26 at 3:15PM. In this assignment, you'll explore new features of Java that weren't covered in Karel (graphics, variables, parameters, and constants) and will get a better command of how these tools work. As always, feel free to email your section leader, stop by office hours, or visit Alisha's and Keith's office hours if you have any questions.

Good luck!

Assignment 1 Out
January 7, 2015

The first programming assignment of the quarter goes out today. It's due on Friday, January 16 at 3:15PM. In this assignment, you'll get your first practice programming Karel the Robot and will write your very first programs!

We recommend that you try to complete the Collect Newspaper Karel problem as soon as possible so that you have time to iron out any Eclipse installation issues that might come up. From there, you'll then have a full week to complete the remaining three programming problems.

Good luck!

Welcome to CS106A!
January 5, 2015

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 htiek@cs.stanford.edu with questions.

See you soon!

Handouts

27: JAR Files
25S: Midterm 2 Solutions
25R: Midterm 2 Regrade Request Form
22: Practice Midterm 2
22S: Practice Midterm 2 Solns
18S: Midterm Solutions
18R: Regrade Request Form
15: Practice Midterm
15S: Practice Midterm Solutions
07: Submission Instructions
05: Using Karel in Eclipse
04: Downloading Eclipse
03: Honor Code Policies
02: Course Placement
01: Syllabus
00: Course Information

Section Handouts

Section Handout 8
(solutions)
Section Handout 7
(solutions)
Section Handout 6
(solutions)
Section Handout 5
(solutions)
Section Handout 4
(solutions)
Section Handout 3
(solutions)
Section Handout 2
(solutions)
Section Handout 1
(solutions)

Assignments

Assignment 8: FacePamphlet
   Handout | Starter Files

Assignment 7: NameSurfer
   Handout | Starter Files

Assignment 6: Array Algorithms
   Handout | Starter Files

Assignment 5: The Java String Quartet
   Handout | Starter Files

Assignment 4: Breakout!
   Handout | Starter Files

Assignment 3: Problem-Solving in Java
   Handout | Starter Files

Assignment 2: Welcome to Java!
   Handout | Starter Files

Assignment 1: Karel the Robot
   Handout | Starter Files

Office Hours

Keith (Gates 178)
  Thursday 1:00PM - 4:00PM

Alisha (Gates 160)
  Tuesday 1:00PM - 4:00PM
  Wednesday 4:15PM - 5:15PM

Resources

Lecture Videos
Download Eclipse
Karel Reader
Section Sign-Ups
Blank Karel Project
Blank Java Project
ACM Docs

Lectures

27: Where to Go from Here
  Slides
26: Your Questions
  Slides
25: Programming in the Real World
  Slides | Code
24: Passwords
  Slides
23: Networking
  Slides | Code
22: Machine Learning
  Slides | Code
21: Classes
  Slides | Code
20: Graphs and Networks
  Slides | Code | Data
19: HashMap
  Slides | Code
18: Interactors
  Slides | Code
17: Testing and Debugging
  Slides | Code
16: Multidimensional Arrays
  Slides | Code
15: Arrays
  Slides | Code
14: ArrayLists
  Slides | Code
13: File Processing
  Slides | Code
12: Strings
  Slides | Code
11: Objects and Parameters
  Slides | Code
10: Events
  Slides | Code
09: Animation
  Slides | Code
08: Randomness and Returns
  Slides | Code
07: Control Structures Revisited
  Slides | Code
06: Methods and Parameters
  Slides | Code
05: Control Structures
  Slides | Code
04: Graphics in Java
  Slides | Code
03: Intro to Java
  Slides | Code
02: Problem-Solving with Karel
  Slides | Code
01: Programming Karel
  Slides | Code
00: Introduction
  Slides | Code