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

The final exam has been graded, and exam scores have been emailed out. We've posted a handout with solutions and statistics here on the course website.

It's been a pleasure having all of you in CS106B this quarter. Best of luck on your future adventures, wherever they take you!

Final Exam Logistics
March 16, 2019

Our final exam is this upcoming Monday morning. Locations are divvied up by last (family) name:

  • A - O: Go to Cubberley Auditorium
  • P - Z: Go to Cemex Auditorium
  • 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 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 is cumulative and all topics from all lectures and the assignments are fair game. The exam will be focused more on topics that you explored in the programming assignments.

    Good luck on the exam!

    Assignment 7 Released
    March 8, 2019

    The final assignment of the quarter, Calligraphy, goes out today. This assignment is all about the beautiful things you can do with graphs, and we hope that once you've finished it you have a much deeper understanding of how all the topics we've covered this quarter fit together.

    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.

    No late submissions will be accepted for this assignment, even if you have remaining late days. Sorry about that - it's university policy.

    Good luck!

    Assignment 6 Released
    February 27, 2019

    Assignment 6 (MiniBrowser) has just been released. This assignment asks you to implement a number of linked structures in the service of building up a web browser hooked up to Wikipedia. You'll get practice working with linked lists, binary search trees, and tries, and will get to see how complex pieces of software are built out of multiple, smaller, simpler parts.

    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 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!

    BlueBook
    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 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

    07: Assignment Submission Checklist
    06: Debugging Your Code
    03: Honor Code
    02: Course Placement
    01: Syllabus
    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 7: Calligraphy

    Assignment 6: MiniBrowser

    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

    Final Exam | (Solutions)
    Practice Final Exam
       (password: quokka)
       (solutions)
    Midterm Exam | (Solutions)
       Test Harness
       Regrade Request Form
    Practice Midterm
       (password: maplesyrup)
       (solutions)

    Resources

    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
    BlueBook
    Midterm Reference Sheet
    Final Exam Reference Sheet

    Lectures

    27: Where to Go from Here
      Slides
    26: The Big Picture
      Slides
    25: Your Questions
      Slides
    24: Minimum Spanning Trees
      Slides
    23: Graphs, Part II
      Slides
    22: Graphs, Part I
      Slides
    21: Hashing
      Slides | Code
    20: String Data Structures
      Slides
    19: Binary Search Trees, Part II
      Slides | Code
    18: Binary Search Trees, Part I
      Slides | Code
    17: Linked Lists, Part II
      Slides | Code
    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
      Slides
    11: Algorithmic Analysis, Part I
      Slides
    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