Assignment 3 Released

Assignment 3 has been released and will be due on Tuesday, March 13th at 11:59pm.

This is a really interesting assignment that involves writing a data structure referred to as a KDTree. Please email me as soon as possible if you have any trouble getting started!

Assignment 2 Released (Part B)

The second part of Assignment 2 is out and will be due on Tuesday, Feb 27th at 11:59pm. In this part, you will implement an intelligent bot that can find a link ladder between two given Wikipedia pages!

Please email me as soon as possible if you have any trouble getting started!

New C++ Guide

Due to some of the insightful feedback provided by the class, I have spent the past week or so writing up a C++ guide, split up roughly by topic, of common patterns and useful idioms in C++ programming. For example, there are code snippets on how to read from a file or do conversions using stringstreams. As the quarter progresses, I will (time allowing) update this with more information about the newer topics.

I do really want to discourage viewing this as a sort of cookie cutter template from which you copy verbatim. Instead you can think of it as a set of guidelines that you can use as a starting point when programming. If you notice any typos or have points for improvement, definitely let me know! You can find it here or in the panel on the right. I hope you find it useful :)

Apply to Section Lead

Applications are now open for section leading the CS106's! Section leading is a phenomenal opportunity to teach computer science in the foundational CS courses at Stanford and be part of an amazing community of talented people committed to teaching.

Section leaders hired this quarter will begin in the spring and it will be a two-quarter commitment, but you are still welcome to apply if you plan to go abroad in the spring or autumn.

The deadlines to apply are Thursday, February 1st at 11:59PM (for students who have completed CS106B/X) and Friday, February 16th at 11:59PM (for current CS106B/X students only). Apply here, and please let me know if you have any questions!

Assignment 1 Released

Assignment 1 is out and will be due on Tuesday, January 30th at 11:59pm. Please email me as soon as possible if you have any trouble getting started!

Week 1 - Interesting Links

We spoke a bit about the history of programming and the invention of C++. Here are a few interesting links related to the kind of stuff we covered.

One really cool thing to check out is the source code for the Apollo 11 rocket, written completely in a special assembly language made for the missions. Note how well commented the code is! There are some funny easter eggs thrown around in the comments e.g. here and here.

QT Help Hours

We will be holding helper hours in the LaIR this Thursday January 11th, from 7-9pm to fix any issues you might be having in setting up QT Creator. Note: please try and install QT Creator yourself before coming to the help hours!

We will be located at Tressider Memorial Union, in the food court.

First Lecture

Our first lecture will be on Tuesday, January 9th from 1:30 - 2:20pm in Shriram-104. Looking forward to meeting all of you!

Welcome to CS106L!

CS106L is a companion class to CS106B and CS106X that offers a more complete exploration of the C++ language. We have an exciting quarter ahead of us! Over the next 10 weeks we will touch on some fundamentals of the C++ programming language before quickly progressing on to cover more advanced concepts. Our focus will be on developing practices coherent with the philosophy and style of the C++ ecosystem. By the end of the quarter, you will be equipped to use this powerful language and its surrounding community as a tool to solve any meaningful problems you decide to tackle in the future!

Lectures meet on Tuesdays and Thursdays from 1:30-2:20pm in Shriram 104. There are no exams, and grades are entirely based on three programming assignments, of which you only have to do two! The class is intended to be useful to any student who has taken or is currently taking CS106B (or equivalent). In particular, we won't go through basic C++ syntax. If you have any questions about the prerequisites for this class, don't hesitate to reach out to me.

CS106L will be using an IDE called QT creator for lecture examples as well as assignments. To install QT creator, follow this installation Walkthrough.

If you have any questions about the class, feel free to email me at