Note: This web site is out of date. This is the course web site from a past quarter, Spring 2018. If you are a current student taking the course, this is not your class web site, and you should visit the current class web site instead at http://cs106b.stanford.edu/. If you are already at cs106b.stanford.edu, the web page may not be updated yet for the new quarter. Please be advised that courses change with each new quarter and instructor. Any information on this out-of-date page may not apply to you this quarter.
Thanks to everyone who came to the final exam review session! The slides have been posted at the top of the final exam review page, and the video has been uploaded to Canvas. We also have a few additional clarifications that have come up during the review session, as well as on Piazza, that we wanted to document here:
The CS106B final exam is Friday, June 8 8:30-11:30AM PST. Students will take the exam across several rooms on campus, organized by your last name below:
For your final assignment, you will use the skills you’ve learned in this course to implement several classic graph algorithms– including breadth-first search, Dijkstra’s algorithm, and A* search – as you build your own version of Google Maps. In the course of doing so, you’ll get to see how pathfinding algorithms work in the real world. This assignment gives you lots of practice in thinking about how to represent abstract concepts like graphs and paths in software, and how to use your understanding of those abstractions to develop the code. We hope you’ll have fun and see this as a capstone to your CS106B experience!
We'll be holding the YEAH (Your Early Assignment Help) hours session on Tues. 5/29 at a time and location to be announced soon. We hope to see you there!
Update: we corrected an error in the "alternate path" explanation part of the spec where the alternate path excluding the edge
B->C was listed as
instead of the correct alternate path
Update 2: we've added additional sample output for the Stanford and San Francisco maps! They can be found on the assignment page along with the rest of the sample output files.
Update 3: the YEAH slides have been uploaded to the course website, and the video has been uploaded to Canvas. Thank you to everyone who came!
Update 4: it was brought to our attention that the YEAH slides had the incorrect formula for calculating sufficient difference - we have corrected this.
For your sixth assignment, you'll get practice writing programs using binary trees and priority queues while building a file compression algorithm that allows the user to compress and decompress files using the standard Huffman algorithm for encoding and decoding.
We'll be holding the YEAH (Your Early Assignment Help) hours session on Fri. 5/18 11:30AM-12:20PM PST in Gates B03 (Basement). We hope to see you there!
Update 1: the YEAH slides have been posted on the assignment webpage, and the YEAH video has been uploaded to Canvas. Thanks to all who attended!
Update 2: the MyMap extension incorrectly listed the destructor's runtime as O(1) when it should be O(N).
For your fifth assignment, you'll get practice using pointers, dynamically-allocated memory, and classes while writing different implementations of a priority queue. We'll be holding the YEAH (Your Early Assignment Help) hours session for this assignment on Friday, May 11 3:30-4:20PM in Skilling Auditorium (directly after lecture). We hope to see you there!
Update: YEAH materials have been posted on the assignment page. Thanks to everyone who attended!
Update 2: the spec erroneously mentioned that the
toString method for the heap implementation must print out the values in sorted order. This is incorrect - like for the Vector implementation, you can print out the values in any order, and your implementation must run in O(n) time. The Linked List implementation must still print out the contents in sorted order. We sincerely apologize for the confusion!
Update 3: we have added a tip in the documentation for
toString for how to take advantage of the
<< operator to easily convert it to a string.
For your fourth assignment, you'll get practice writing programs using recursive backtracking and classes while implementing the classic word game, Boggle! Note: important material needed for this assignment, on classes, will be covered in lecture on Monday 4/30.
We'll be holding the YEAH (Your Early Assignment Help) hours session early next week. Stay tuned!
We have several important announcements following today's lecture:
For your third assignment, you'll get practice writing programs using recursion. This assignment consists of two programs - "Fractals", which draws recursive graphical patterns, and "Grammar Solver", which can generate random writing in the style of a specified structure.
We'll be holding the YEAH (Your Early Assignment Help) hours session later today (4/19) from 4:30PM-5:20PM in Skilling Auditorium (recording and slides available after). YEAH hours are sessions meant to help you get started on each assignment and answer questions, give you tips and tricks, and more. We hope to see you there!
Update: the materials have been posted on the assignment 3 page. Thanks to everyone who came!
Thanks to everyone who came to our Python to C++ session! The video has been posted to the lecture videos page, and the slides are available under the "Handouts" dropdown.
For your second assignment, you'll get practice writing programs using ADTs. This assignment consists of two programs - "Word Ladder", which generates connections between two different English words, and "Random Writer", which can generate random writing in the style of another writer.
For those who submitted section preferences by 5PM on Sunday, section assignments are available starting at 5PM from the link in the Sections dropdown. SCPD students can view their graders at that link as well. If you were unable to submit the form by the 5PM Sunday deadline, the late signup form is available starting at 5PM under the "Sections" tab. As a reminder, SCPD students should sign up via the special SCPD link there instead.
If you would like to switch to a different section, you can swap by using the link in the "Sections" dropdown in the Sections dropdown. If you would like to switch into a different section to be with a requested partner, but you or your partner's sections are not available to swap into, please request a swap by filling out this form. For this form, please be sure to fill out ALL possible times you and your partner are free, not just your current section times.
The deadline for signups and swaps is Wednesday, 4/18, at 12PM. As a reminder, sections start this week!
We have a few important logistical notes as we enter the start of week 2:
Assignment 1 has been posted. The YEAH video describing the assignment can be found on Canvas under "Beta Lecture Videos->YEAH Videos".
If you have trouble setting up QT Creator, please feel free to come by our QT Creator troubleshooting session, happening on Wednesday, April 4 7-9PM in the LaIR (Tresidder first floor eating area).
Welcome to CS106B! We are looking forward to a fun quarter. Class starts Monday April 2nd at 2:30pm in NVIDIA Auditorium.
This quarter CS106B is using Piazza to facilitate questions. Go to https://piazza.com/stanford/spring2018/cs106b/ to sign up. You can ask course related questions and see answers to other student questions. For personal questions please feel free to email Nick or Chris.
See below for a short instructional video on how to create a blank project from a copy of another project.