To visit the website for fall quarter's CS106B offering, click here.
That's All, Folks!
March 20, 2020

Katherine, the section leaders, and I have just finished grading the final exam. The exam and a set of solutions are available in PDF form under the "Exams" section. We'll be posting final grades later today.

Please take care over the next weeks and months. You're welcome to reach out to me over email if you'd like to chat, whether that's about life in general or whether that's about next steps in computer science.

Best of luck going forward!

Final Exam Available for Download
March 15, 2020

We've just posted the CS106B final exam file. This file requires a password to open; we'll distribute that password at 8:30AM tomorrow morning.

As a reminder, BlueBook will ask you to check some boxes before taking the exam indicating you won't switch windows and that you have disabled your network connection. Disregard these instructions, but check the boxes anyway. The exam is open-internet and open-computer, though you're not allowed to communicate with other humans during the exam.

For those of you taking the exam, best of luck tomorrow morning!

Section Handout 9 Released
March 9, 2020

We've posted Section Handout 9. This handout is slightly misnamed because there's no section this week. Rather, it's a set of cumulative review problems that you can use to hone your skills as we approach the end of the quarter. Feel free to contact your SL or to ask questions on Piazza if you have them!

Assignment 8 Released
March 6, 2020

The last assignment of the quarter, Assignment 8 (Huffman Coding), goes out today. It's due, as usual, at the start of lecture next Friday. We hope this is a fitting capstone to your experience in CS106B!

We recommend that you check out both the lecture slides on Huffman coding and the companion handout on Huffman coding before starting this assignment.

Because this is the last assignment of the quarter, per university policy, no late submissions will be accepted and no late periods may be used. We recommend that you periodically submit your work to Paperless; we'll only grade the last submission you make.

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 7 Released
February 28, 2020

Assignment 7 (The Adventures of Links) goes out today. It's due, as usual, at the start of lecture next Friday.

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 6 Released
February 21, 2020

Assignment 6 (The Great Stanford Hash-Off) goes out today. We're back to our normal Friday-to-Friday assignment schedule, so this assignment will be due, as usual, next Friday at the start of lecture.

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 5 Released
February 7, 2020

Assignment 5 (Data Sagas) goes out today. Because the midterm is next Tuesday, we've given you two weeks to work on this assignment. You can in principle start the first bit of the assignment today if you'd like, though some of the later parts reference material that we'll only cover in the middle of next week.

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!

Midterm Logistics
February 3, 2020

Our midterm exam is coming up Tuesday, February 11th from 7PM - 10PM. Locations are divvied up by last (family) name:

  • A - L: Go to Cubberley Auditorium.
  • M - V: Go to Bishop Auditorium.
  • W - Z: Go to 320-105.
  • The exam covers material from Lecture 00 - 09 (intro C++ up through but not including recursive backtracking) and from Assignments 0 - 3 (using the debugger up through recursive enumeration and optimization).

    We will be providing a copy of the container syntax reference handout at 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 and closed-computer.

    We've posted three practice exams that you can use to get a sense of what sorts of questions we've typically asked in previous exams. Additionally, we've posted a handout about preparing for the exam with advice about how to best get ready for the midterm, along with some general exam policies.

    Best of luck on the exam!

    Assignment 4 Released
    January 31, 2020

    Assignment 4 (Recursion to the Rescue) goes out today and is due next Friday. In this assignment, you'll get to see just how powerful a technique recursion is, and hopefully will learn a thing or two about logistics 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 24, 2020

    Assignment 3 (Recursion!) goes out today and is due, as usual, next Friday at the start of class. 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. You are required to read and understand the policies outlined at the "Working in Pairs" link in the "Resources" section of this website before starting to work in a pair.

    Good luck!

    Assignment 2 Released
    January 17, 2020

    Our second programming assignment, Fun with Collections, goes out today. It's due next Friday 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 10, 2020

    The first programming assignment of the quarter, Assignment 1: Welcome to C++!, goes out today. It's due on Friday, January 17th 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!

    Welcome to CS106B!
    January 6, 2020

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

    Handouts

    29: Huffman Coding
    16: Preparing for the Exam
    10: Container Syntax Reference
    07: Assignment Submission Checklist
    06: Debugging Your Code
    03: Honor Code
    02: Course Placement
    01: Course Calendar
    00: Course Information

    Section Handouts

    Section Handout 9
      (Solutions)
    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: Huffman Coding

    Assignment 7: The Adventures of Links

    Assignment 6: The Great Stanford Hash-Off

    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

    Practice Final Exam
      BlueBook File
      (Solutions)
    Practice Midterm III
      (Solutions)
    Practice Midterm II
      (Solutions)
    Practice Midterm I
      (Solutions)

    Exams

    Final Exam
      (Solutions)
      (BlueBook File)

    Midterm Exam
      (Solutions)
      (Qt Creator Files)

    Resources

    Stanford C++ Library Documentation
    C++ Standard Library Documentation
    Setting Up Qt Creator
    Blank Stanford C++ Project
    Assignment Submitter
    Working in Pairs
    Style Guide
    Python-to-C++ Guide
    BlueBook

    Lectures

    27: Where to Go from Here (Cancelled)
      Slides
    26: Minimum Spanning Trees (Cancelled)
      Slides
    25: Graphs (Cancelled)
      Slides
    24: Beyond Data Structures
      Slides
    23: Binary Search Trees II
      Slides | Code
    22: Binary Search Trees I
      Slides | Code
    21: Linked Lists III
      Slides | Code
    20: Linked Lists II
      Slides | Code
    19: Linked Lists I
      Slides | Code
    18: Hashing II
      Slides
    17: Hashing I
      Slides | Code
    16: Implementing Abstractions II
      Slides | Code
    15: Implementing Abstractions I
      Slides | Code
    14: Designing Abstractions
      Slides | Code
    13: Searching and Sorting II
      Slides
    12: Searching and Sorting I
      Slides
    11: Big-O Notation
      Slides
    10: Thinking Recursively, Part V
      Slides | Code
    09: Thinking Recursively, Part IV
      Slides | Code
    08: Thinking Recursively, Part III
      Slides | Code
    07: Thinking Recursively, Part II
      Slides | Code
    06: Thinking Recursively, 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