Learn CS

CS106B Programming Abstractions



Prerequisite: CS106A


CS106B is one of the follow-up courses of CS106A and part of Stanford's CS106 family. The relationship is as follows (from CS106B's 18 winter slide):

  • CS106A: Programming Methodology (Java) Prereq: none
    • first course in programming, software development, coding style
    • text and graphics; basic data and algorithms; problem solving
  • CS106B: Programming Abstractions (C++) Prereq: 106A
    • big data; complex data structures
    • algorithm analysis and algorithmic techniques such as recursion
    • programming style and software development practices
  • CS106X: Programming Abstractions (Accelerated) (C++)
    • similar content to CS106B, but faster and more complex
    • expects significant coding experience, ability to learn quickly

You can either choose CS106B or CS106X. If you'd like to improve your C++ skills, you can learn CS106L at the same time.

Schedule (Spring 2020)

  1. Welcome! slide
  2. C++ slide
  3. Strings slide
  4. Vectors and Grids slide
  5. Stacks and Queues slide
  6. Sets and Maps slide
  7. Big O and Asymptotic Analysis slide
  8. Introduction to Recursion slide
  9. Fractals slide
  10. Procedural Recursion slide
  11. Backtracking 1 slide
  12. Backtracking 2 slide
  13. C++ Classes slide
  14. Dynamic Memory slide
  15. Memory and Pointers slide
  16. Implementing VectorInt slide
  17. Heaps slide
  18. Sorting slide
  19. Linked Lists 1 slide
  20. Linked Lists 2 slide
  21. Trees slide
  22. Binary Search Trees slide
  23. Huffman Coding slide

Assignment (Spring 2020)

  1. Welcome to CS106B! handout starter code
  2. Getting Your C++ Legs handout starter code
  3. Fun with Collections handout starter code
  4. Recursion handout starter code
  5. Backtracking handout starter code
  6. Priority Queue handout starter code unavailable
  7. Linked Lists handout starter code
  8. Huffman (optional) handout starter code

What's Next