Abstraction and its relation to programming. Software engineering principles of data abstraction and modularity. Object-oriented programming, fundamental data structures (such as stacks, queues, sets) and data-directed design. Recursion and recursive data structures (linked lists, trees, graphs). Introduction to time and space complexity analysis. Uses the programming language C++ covering its basic facilities.
- CS 106B focuses on techniques for solving more complex problems than those covered in CS106A and for analyzing program efficiency. Its major topics are fundamental data types and data structures, recursive problem solving, graph algorithms, and basic algorithmic analysis. CS 106B assumes you have programming experience at the level of CS 106A, though you don’t necessarily have to have taken CS 106A in order to take CS 106B. If you’ve seen basic control structures (loops, if statements, etc.), variables, arrays, hash tables, and program decomposition, then you should be ready to take CS 106B.
- Enrollment in a mandatory discussion section is done in class the first week, not in Axess.
- Matriculated Stanford graduate students may enroll for 3, 4 or 5 units; everyone else must take the course for 5 units. All students do 5 units worth of work, including Stanford graduate students enrolled for 3 or 4 units.
- This course is cross-listed as ENGR 70B.
- The 5 unit version of this course is offered as part of the Summer Intensive in Computer Science, and qualifies toward the Certificate of Completion in Computer Science. 3 or 4 unit enrollments will not qualify toward the Certificate. Enrolled units can be adjusted in Axess through the Final Study List deadline.