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. Summer quarter enrollment is limited. Priority given to Stanford students.
- 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 is limited. Priority given to Stanford students. All interested students should enroll, but may be asked to drop on the first day of the quarter. Students who are interested in CS 106B/ENGR 70B should enroll in an alternative course in Axess, in case they are not selected to remain in the course.
- Enrollment in a mandatory discussion section is done in class the first week, not in Axess.
- 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.
- Stanford graduate students (with instructor approval) may choose to enroll in this course for 3-5 units. All other students must enroll in this course for 5 units.
- This course is cross-listed as CS 106B.