Students program in C++ and are introduced to complex data structures, classes and templates, recursion, and algorithm analysis among other topics. The class is more difficult than CS 106A, as it deals with more abstract and in-depth topics.
Programs written in a typical quarter may include Random Writer, Word Ladder, the Recursion problem set, Boggle, Sorting Lab, Priority Queue, and Huffman Encoding.
From the course website: This course is the successor to CS 106A and covers more advanced programming topics such as recursion, algorithmic analysis, and data abstraction. This course is taught using the C++ programming language, which is similar to both C and Java. In the past when both CS 106A and CS106B were taught in C/C++, the coupling between the two classes was very tight and it was unheard for students to take CS106B without having completed our CS 106A (we recommended CS 106X instead). Nowadays, some students do go straight into CS106B, this is typically appropriate for a student who done well in an intro programming course (e.g scored 4 or 5 on the CS AP exam or earned a good grade in a college course) and has sufficient familiarity with good programming style and software engineering issues (at the level of CS 106A) to use this understanding as a foundation on which to tackle advanced topics.
The class is often taught by Professor Julie Zelenski.