Stanford Engineering Everywhere (SEE) offers few computer science courses to students online and at no charge. SEE courses include the content offered in an actual campus course including lecture videos, as well as all lecture slides, reading lists and handouts, homework assignments, quizzes, examinations, and when appropriate, solution sets.
One of the courses is Programming Abstractions (CS106B). This course covers advanced programming topics such as recursion, algorithmic analysis, and data abstraction using the C++ programming language, which is similar to both C and Java. This course assumes that student has familiarity with good programming style and software engineering issues, and that student can use this understanding as a foundation on which to tackle new topics in programming and data abstraction.
Prerequisites: Solid performance in Programming Methodology and readiness to move on to advanced programming topics. A comparable introductory programming course (including high school AP courses) is often a reasonable substitute for our Programming Methodology.