This page contains archived versions of the Stanford CS106L (Standard C++ Programming Laboratory) webpage. All internal links should be valid, though external links may no longer be functional.
It's hard to fully capture in words how wonderful this quarter's installment of CS106L was. It will be my last time teaching the class, at least in the foreseeable future, and I made a huge effort this time around to help students as much as possible outside of lecture. From the evaluations I received, it looks as though this was a huge success - the course was the highest-rated class in the entire School of Engineering (at least, when looking at classes of at least twenty students). Seeing CS106L end up as it has is a wonderful feeling. Two veteran SLs will be taking over the class Spring quarter, and I have no doubt in my mind that they'll do a great job with it. This will certainly not be the last time that I teach this course - I'll be sure to periodically pick it up for a quarter or two, and when compilers start fully supporting C++0x I'm going to give the whole course a pretty serious overhaul.
To all of my students from this and previous quarters - thank you for reminding me why I love computer science and C++ programming as much as I do.
Spring 2010's class was some of the most fun I've ever had. The students were extremely motivated and insightful, and in delivering lectures I found that I had acquired a much more nuanced understanding of the roles of each language feature and library than I had in previous quarters. I also started giving out optional puzzles at the start of each lecture, and was particularly impressed with what students were able to come up with. Also, the assignments for this quarter were significantly more flashy than in previous quarters, with two of the assignments using Qt for GUIs.
The fifth iteration of CS106L was a great success. Students loved the material and seemed to have a much more nuanced grasp of the core issues. This was also the first quarter that I delivered a lecture on template metaprogramming to students. Additionally, this quarter I experimented with using a fully-fledged course reader instead of in-class handouts, with pleasantly surprising results.
Matrix
(practice with class design, smart pointers, operator overloading)The fourth run of CS106L was nothing short of wonderful. We ended up covering a bunch of fun topics that we hadn't explored in previous quarters (notably Boost). This was also the first quarter to have problem sets, which really seemed to have a net positive effect on the class as a whole.
Variant
(practice with class design, unions, and operator overloading)This was the third time I taught CS106L and it was an absolute blast. There were about fifty percent more students than in previous quarters and the students were among the most motivated I've ever had the pleasure of teaching. This offering of CS106L had considerably more content than before, with about six hours of new material (the preprocessor, advanced functors, smart pointers, advanced inheritance, policy classes, C++0x).
vector
, stack
, queue
, deque
)map
, set
, multimap
, multiset
)const
, initializer lists, object copying and assignment, conversion constructorsgrid
(practice with class design, iterators, operator overloading)It was certainly much easier teaching CS106L the second time around. Most of the handouts had already been written, though I ended up writing four more (two assignments, intro to pointers, intro to inheritance). The class was truly great and I had a wonderful time teaching.
getline
, stringstream
).const
, initalizer lists.This was the first quarter I taught CS106L, and it was a truly wonderful experience. CS106L was offered as an extra class in conjunction with CS106X, and the students were highly motivated and seemed to really enjoy the material.
getline
, stringstream
), C stringsvector
, stack
, queue
, deque
)map
, set
, multimap
, multiset
)const
, Initalizer Lists (static
covered in the course handouts)const
)