Learn C++ - Programming Abstractions from STANFORD University 100% Worth Watching from Computer Science Labs. This course is the natural successor to Programming Methodology. It covers such advanced programming topics as recursion, algorithmic analysis, and data abstraction using the C++ programming language, which is similar to both C and Java.
Programming Abstractions may be an appropriate course for you to start with, but often Programming Abstractions (Accelerated) is a better choice. Programming Abstractions assumes that you already have familiarity with good programming style and software engineering issues (at the level of Programming Methodology), and that you can use this understanding as a foundation on which to tackle new topics in programming and data abstraction.
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.