Updated Syllabus and Assignment 6
August 6, 2013

We've slightly updated the readings on the syllabus. Please have a look at that.

Also, assignment 6 has been posted. For assignment 6, you'll need a bit of extra material that we won't be able to get to in section. Please refer to the "Functions as Parameters" handout for this material.

Practice Finals
August 5, 2013

In addition to the one posted on the right, here are a couple others:

  1. CS106X: Exam and Solutions
  2. Last quarter 106B: Exam and Solutions
Clarification to Late Policy
July 21, 2013

We've updated the course information handout to resolve an ambiguity in the maximum number of late days that can be used on any given assignment. Please review the revised late policy and let us know if you have any questions.

Even More Midterm Practice
July 19, 2013

Can't get enough CS106B? Well we've got the solution for you: another exam to practice on! Spcifically, this is the midterm given out last quarter in 106B. Material coverage and format should be very similar, but as always, we can't promise a 100% matchup.

Find the midterm here and the solutions here.

As an extra bonus, we've posted a sample reference sheet, similar to what you'll get on the exam. Have a look to make sure you know what we're going to provide. See the handouts on the right.

Additional Midterm Practice
July 16, 2013

If you're in search of additional practice materials for the exam, feel free to check out the materials at http://cs106x.stanford.edu. Note that the pacing may be a bit different, so the exact content coverage might not match exactly. But you should still be able to practice on most of the problems.

Small Update to Syllabus
July 11, 2013

We've made a small change to the assignment schedule for the later half of the class. If you have some dependency on knowing the exact schedule for things, please check the updated syllabus.

Assignment 1 Ready to Go!
June 25, 2013

(We sent this out via email as well. If you didn't get the email, let us know so we can add you to the mailing list.)

We've updated the handout to reflect the fact that you won't have your section leader's email address before the due date, so the deadline for the introductory email has changed.

We've also posted all of the starter files. If you downloaded the starter files yesterday, especially if you are running Mac OS X, you might want to redownload them. (If you're not having any problems, you can probably just keep using what you have.)

A few OS specific notes:

For Windows users, make sure you're running the most recent version of Java. (Head to www.java.com to download it.) If you're having any issues with the console not showing up, this should fix it.

For Mac OS users, using the starter files for your particular version of OS X should work fine. If you're still having problems with Xcode, you might want to check out the "Instructions to Fix Xcode" handout under the Resources section of the website.

(For Linux users, we're sort of assuming you know what you're doing...)

If you have any problems with the assignment, let us know.

Welcome to CS106B!
June 24, 2013

Welcome to CS106B! 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 be exploring the fundamental techniques necessary to reason about, model, and solve big, important problems. 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 adgress@cs.stanford.edu with questions.

See you soon!

Handouts

00: Course Information
01: Syllabus
02: Course Placement
03L: Running C++ On Linux
03M: Running C++ On Mac
03W: Running C++ On Windows
04: Honor Code
06M: Debugging with Xcode
06W: Debugging with Visual Studio
07: Submitting Assignments
08: Study Skills
09: Practice Midterm
10: Practice Midterm Solutions
11: Example Midterm Reference Sheet
12: Midterm
13: Midterm Reference Sheet
14: Midterm Solutions
15: Practice Final
16: Practice Final Solutions
17: Functions as Parameters
18: Functions as Parameters Solutions
19: Midterm 2
20: Midterm 2 Reference Sheet
21: Midterm 2 Solutions

Section Handouts

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

Assignments

Assignment 1: Welcome to C++!

Assignment 2: Fun with Collections

Assignment 3: Recursion!

Assignment 4: Boggle!

Assignment 5: Priority Queue

Assignment 6: Trailblazer

Office Hours

Aubrey (Gates 160)
Mon: 12 PM - 1 PM
Tue: 12 PM - 1 PM
Wed: 12 PM - 1 PM
Thu: 12 PM - 1 PM

Michael (Gates 160)
Tue: 3 PM - 5 PM
Wed: 3 PM - 5 PM

Resources

Course Reader PDF
Tresidder LaIR Office Hours
C and C++ Standard Library Docs
Stanford C++ Library Docs
Good Programming Style 1
Good Programming Style 2
Submitter
Lecture Videos
QuestionHut
Blank Windows Project
Blank Mac Project
Instructions to Fix Xcode

Lectures

00: Introduction
  Slides
01: C++ Functions
  Slides
  Code
02: Strings and Streams
  Slides
  Code
03: Collections I
  Slides
  Code
04: Collections II
  Slides
  Code
05: Collections III
  Slides
  Code
06: Collections IV
  Slides
  Code
07: Thinking Recursively
  Slides
  Code
08: Thinking Recursively II
  Slides
  Code
09: Thinking Recursively III
  Slides
  Code
10: Thinking Recursively IV
  Slides
  Code
11: Algorithmic Analysis and Sorting
  Slides
  Code
12: Algorithmic Analysis and Sorting II
  Slides
13: Algorithmic Analysis and Sorting III
  Slides
14: Designing Abstractions
  Slides
  Code
15: Implementing Abstractions
  Slides
  Code
16: Implementing Abstractions II
  Slides
  Code
17: Linked Lists
  Slides
  Code
18: Linked Lists II
  Slides
  Code
19: Hashing
  Slides
  Code
20: Binary Search Trees
  Slides
  Code
21: Tries
  Slides
  Code
22: Graphs
  Slides
  Code
23: Shortest Paths
  Slides
24: Minimum Spanning Trees
  Slides
25: Review Sessions
  Slides
26: Limits of What Computers Can Do
  Slides
27: Machine Learning
  Slides
  Code
28: Where to Go from Here
  Slides