To visit the website for fall quarter's CS106B offering, click here.
Midterm Logistics
February 18, 2019

Our midterm exam is coming up tomorrow evening. Locations are divvied up by last (family) name:

  • A - K: Go to Bishop Auditorium
  • L - Z: Go to Hewlett 200
  • The exam will be administed via BlueBook, which you can download under the "Resources" tab to the left. Click this link to download the exam itself. You should download the exam before attending; we'll give out the password once we're in the exam room itself.

    We will be providing a midterm reference sheet at the exam that contains common functions and types that you might want to use on the exam. In addition to this, you can bring a single, double-sided sheet of 8.5" × 11" paper with whatever notes you'd like. Aside from this, you may not have any other notes with you. The exam is closed-book.

    The exam covers material from Lecture 01 - 12 (intro C++ and basic recursion up through big-O notation, searching, and sorting) and from Assignments 0 - 4 (using the debugger up through recursive backtracking).

    You've worked really hard to learn this material, and we're really impressed by how much everyone has progressed since the start of the quarter. Best of luck on the exam!

    Assignment 5 Released
    February 15, 2019

    Assignment 5 (Data Sagas) goes out today and is due on Wednesday, February 27th. This assignment is all about data processing and exploration, and by the time you're done you'll know way more about swimming, earthquakes, national parks, and child mortality than when you started!

    You are allowed to work on this assignment in pairs. For more information about our policies regarding pair programming, check out the "Working in Pairs" link in the "Resources" section of this website.

    Good luck!

    Practice Midterm Exam
    February 12, 2019

    We'll be holding a practice midterm exam this evening in room 320-105 from 7PM - 10PM. The practice exam is available online as a BlueBook file and we'll release the password at the practice exam. If you're interested in attending, download BlueBook using the link under the "Resources" section, along with the practice exam file, and stop on by!

    February 11, 2019

    We will be using the software tool BlueBook for our midterm exam next week. To help you get comfortable using it, this week's section handout is available online as a BlueBook file. Use the password "section" to unlock it.

    Assignment 4 Released
    February 6, 2019

    Assignment 4 (Recursion to the Rescue) goes out today and is due on Friday, February 15th. In this assignment, you'll get to see just how powerful a technique recursion is, and hopefully will learn a thing or two about medicine, civics, and public safety!

    You are allowed to work on this assignment in pairs. For more information about our policies regarding pair programming, check out the "Working in Pairs" link in the "Resources" section of this website.

    Good luck!

    Assignment 3 Released
    January 28, 2019

    Assignment 3 (Recursion!) goes out today and is due on Wednesday, February 6th. This assignment is all about doing cool things with recursion, and we hope that you have a lot of fun working through it!

    You are allowed to work on this assignment in pairs. For more information about our policies regarding pair programming, check out the "Working in Pairs" link in the "Resources" section of this website.

    Good luck!

    Recursive Drawing
    January 23, 2019

    Want to play around with that website that lets you draw recursive pictures? Check out Recursive Drawing!

    Assignment 2 Released
    January 18, 2019

    Our second programming assignment, Fun with Collections, goes out today. It's due on Monday, January 28th at the start of class (11:30AM). In the course of completing this assignment, you'll get comfortable writing code using a bunch of different collections. You'll build some larger and more elaborate C++ programs than what you saw in Assignment 1. And you'll end up with some really nifty programs that we think you may want to share with friends and family!

    Good luck!

    Assignment 1 Released
    January 11, 2019

    The first programming assignment of the quarter, Assignment 1: Welcome to C++!, goes out today. It's due on Friday, January 18th at the start of class (11:30AM). This assignment explores general C++ coding, strings, recursion, debugging, and the Stanford libraries. We hope you have fun with this one!

    LaIR shifts will begin this Sunday at 7PM. Feel free to stop by for help! We highly recommend reading our handout about debugging strategies for advice about how to debug your programs and how to ask good questions in the LaIR.

    Good luck!

    Qt Creator Help Session
    January 8, 2019

    We will be holding a set of LaIR hours this Wednesday, January 9th from 7PM - 9PM in the first floor of Tresidder Union specifically to help troubleshoot issues with installing Qt Creator. Please feel free to stop by if you're having trouble getting things up and running.

    A note: we incorrectly reported that this session would be on Thursday evening in the printed version of the Assignment 0 handout. This was an error and it's been corrected in the web version of the handout. Sorry about that!

    Welcome to CS106B!
    January 2, 2019

    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 explore fundamental techniques in modeling and solving problems using a variety of programming techniques and evaluating their tradeoffs. By the time you're done with this class, you'll have a firm grasp of problem-solving techniques and will ready to start applying your skills in areas that you genuinely care about.

    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. If you're wondering whether this is the right class for you, check out our handout with course placement information.

    See you soon!


    07: Assignment Submission Checklist
    06: Debugging Your Code
    03: Honor Code
    02: Course Placement
    01: Syllabus
    00: Course Information

    Section Handouts

    Section Handout 5 | (Solutions)
    Section Handout 4 | (Solutions)
    Section Handout 3 | (Solutions)
    Section Handout 2 | (Solutions)
    Section Handout 1 | (Solutions)


    Assignment 5: Data Sagas

    Assignment 4: Recursion to the Rescue

    Assignment 3: Recursion!

    Assignment 2: Fun with Collections

    Assignment 1: Welcome to C++!

    Assignment 0: Welcome to CS106B!

    Practice Exams

    Midterm Exam
    Practice Midterm
       (password: maplesyrup)


    Stanford C++ Library Documentation
    C++ Standard Library Documentation
    Setting Up Qt Creator
    Blank Stanford C++ Project
    Assignment Submitter
    LaIR Helper Schedule
    Working in Pairs
    Style Guide
    Midterm Reference Sheet


    16: Linked Lists, Part I
      Slides | Code
    15: Implementing Abstractions, Part II
      Slides | Code
    14: Implementing Abstractions, Part I
      Slides | Code
    13: Designing Abstractions
      Slides | Code
    12: Algorithmic Analysis, Part II
    11: Algorithmic Analysis, Part I
    10: Recursion, Part V
      Slides | Code
    09: Recursion, Part IV
      Slides | Code
    08: Recursion, Part III
      Slides | Code
    07: Recursion, Part II
      Slides | Code
    06: Recursion, Part I
      Slides | Code
    05: Collections, Part III
      Slides | Code
    04: Collections, Part II
      Slides | Code
    03: Collections, Part I
      Slides | Code
    02: Strings in C++
      Slides | Code
    01: Functions in C++
      Slides | Code
    00: Introduction
      Slides | Code