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 techniques 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.
Important topics of this course are:
- Transitioning to C++, syntax, procedural paradigm
- Standard C++ and CS106 Libraries
- Functional and procedural recursion
Algorithm analysis, sorting, template functions - Dynamic arrays and Linked lists
- Vectors in C++, Stack, and Queue implementation
- Trees, Hashing, Map, Set, Graphs Implementation
Lecture | Description | Slides |
---|---|---|
1 | About the CS106 Series at Stanford, The CS106 Philosophy, Why take CS106B?, Logistics of the Course, Introducing C++ | Lecture01.pdf |
2 | Similarity between C++ & Java | Lecture02.pdf |
3 | C++ Libraries – Standard Libraries, C++ String Type, C++ string vs Java String and C++ Console I/O | Lecture03.pdf |
4 | C++ Console I/O, C++ File I/O, Stream Operations. | Lecture04.pdf |
5 | Client Use of Templates, Vector Class and Stack, Queue etc. | Lecture05.pdf |
6 | Containers, Maps, Use of Set, Set Higher-level Operations, Why Set is Different | Lecture06.pdf |
7 | Seeing Functions as Data | Lecture07.pdf |
8 | Common Mistakes Stumbled Upon | Lecture08.pdf |
9 | Thinking Recursively, Procedural vs Functional | Lecture09.pdf |
10 | Refresh: Permute Code, Tree of Recursive Calls etc. | Lecture10.pdf |
11 | Backtracking Pseudocode, Sudoku Solver, Sudoku Code, Cryptarithmetic, Dumb Solver, Smarter Solver. | Lecture11.pdf |
12 | Pointer and Pointer Operations. | Lecture12.pdf |
13 | Coding with Linked List | Lecture13.pdf |
14 | Algorithm Analysis, Evaluating the Performance, Analysis of Codes | Lecture14.pdf |
15 | Sorting Techniques | Lecture15.pdf |
16 | More on Sorting | Lecture16.pdf |
17 | Object Oriented Techniques | Lecture17.pdf |
18 | Abstract Data Types, Wall of Abstraction, Why ADTs? | Lecture18.pdf |
19 | Rules of Template Implementation, Explanation of the Working | Lecture19.pdf |
20 | Recap of the Vector-based Implementation for Stack and Linked List Implementation for Stack | Lecture20.pdf |
21 | Buffer and Map as Vector | Lecture21.pdf |
22 | Map as Vector, A different Strategy: | Lecture22.pdf |
23 | Pathfinder Demo, Graphs: Examples, Graphs: Explanation, Implementation Strategies | Lecture23.pdf |
24 | Compare Map Implementations, Hashtable Idea, Hash Functions, Hash Collisions | Lecture24.pdf |
25 | Lexicon Case Study, Lexicon as Sorted Vector, Lexicon as BST, Lexicon as Hash Table | Lecture25.pdf |
26 | Thinking About Design, Runtime Performance, Memory Used, Code Complexity | |
27 | Guest Lecturer: Keith Schwarz, About the C++ Language, Quick History of C++, C++ Philosophy | H38-C++sansCS106.pdf |
Stanford Engineering Everywhere, https://see.stanford.edu/. License: Creative Commons BY-NC-SA. For more information about using these materials and the Creative Commons license please visit: http://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
Best Free C/C++ Programming Courses
We have compiled a list of C and C++ Programming courses that could help you learn basic and advanced programming techniques. These courses are offered online by different universities, and they are absolutely FREE.