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.
- Intensive Study: Computer Science
- Enrollment requirements: This is a 5 unit course. Only matriculated Stanford graduate students are allowed to enroll in it for 3, 4 or 5 units but must still do the standard 5 units of coursework. Visiting students must enroll in 5 units. Do not enroll in discussion sections in Axess. The first week of class, students sign up for discussion sections. Discussion section assignments received during second week of class when sections start.
- Online Format: Both Synchronous & Asynchronous - This course is taught through a combination of synchronous and asynchronous opportunities. Students should check the Stanford Explore Courses website for information on the scheduling options.
CS 106A or equivalent