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.
- Grading Basis: Letter Grade or Credit/No Credit
- Cross-Listings: ENGR 70B
- Unit-Range Information: 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.
- Intensive Studies: This course is offered as part of the Computer Science Intensive and must be taken for 5 units. See the Intensive Studies page for more information on how to receive an official Document of Completion.
CS 106A or equivalent