OpenCourse: Programming Abstractions / Stanford
「Programming Abstractions」コースはスタンフォード大学が公開している講座です。「Programming Methodology」コースの上級版にあたります。C++言語を用いて、再帰的呼び出し、解析アルゴリズム、抽象化、スタックやキューなどの基本的なデータ構造などを学習します。
コースの詳しい内容やハンドアウトなどの関連資料は、「Stanford School of Engineering - Stanford Engineering Everywhere」のページから参照できます。
![Lecture 1 | Programming Abstractions](http://img.youtube.com/vi/kMzH3tfP6f8/1.jpg)
About the CS106 Series at Stanford
![Lecture 2 | Programming Abstractions](http://img.youtube.com/vi/wmiD5J8Dw9E/1.jpg)
Similarity between C++ & Java: - syntax - variable types - operators - control structures
![Lecture 3 | Programming Abstractions](http://img.youtube.com/vi/fhe0IVJOy4g/1.jpg)
C++ Libraries - Standard Libraries
![Lecture 4 | Programming Abstractions](http://img.youtube.com/vi/09jZuh-KjtI/1.jpg)
C++ Console I/O, C++ File I/O, Stream Operations
![Lecture 5 | Programming Abstractions](http://img.youtube.com/vi/XHXEn6kxtdQ/1.jpg)
Client Use of Templates, Vector Class, Vector Client Interface
![Lecture 6 | Programming Abstractions](http://img.youtube.com/vi/eYTDzvlAZMM/1.jpg)
More Containers, Map Class, Uses of Map, Map Client Interface
![Lecture 7 | Programming Abstractions](http://img.youtube.com/vi/xMoDmhvGr50/1.jpg)
Seeing Functions as Data: Specific Plot Functions, Generic Plot Function, Back to the Set
![Lecture 8 | Programming Abstractions](http://img.youtube.com/vi/gl3emqCuueQ/1.jpg)
Common Mistakes Stumbled Upon: 'I'terator, Common Mistakes Stumbled Upon: Concatenating Strings, Solving Problems Recursively, Functional Recursion
![Lecture 9 | Programming Abstractions](http://img.youtube.com/vi/uFJhEPrbycQ/1.jpg)
Thinking Recursively, Procedural vs Functional - Recursion, Fractal Code
![Lecture 10 | Programming Abstractions](http://img.youtube.com/vi/NdF1QDTRkck/1.jpg)
Refresh: Permute Code, Tree of Recursive Calls
![Lecture 11 | Programming Abstractions](http://img.youtube.com/vi/p-gpaIGRCQI/1.jpg)
Backtracking Pseudocode, Sudoku Solver, Sudoku Code, Cryptarithmetic, Dumb Solver, Smarter Solver, Looking for Patterns
![Lecture 12 | Programming Abstractions](http://img.youtube.com/vi/K8DjFXkMRbY/1.jpg)
Pointer Movie, Pointer Operations: Code & Pointer Memory Diagrams, Pointer Basics, Pointer and Dynamic Arrays, Use of Pointers
![Lecture 13 | Programming Abstractions](http://img.youtube.com/vi/C36NAaS6ITM/1.jpg)
Coding with Linked List, Printing the List, Using Recursion to Print List, De-allocating the Memory Used for the Linked List
![Lecture 14 | Programming Abstractions](http://img.youtube.com/vi/iZyUsF1srHo/1.jpg)
Algorithm Analysis, Evaluating the Performance, Analysis of Codes: Statement Counts
![Lecture 15 | Programming Abstractions](http://img.youtube.com/vi/ENp00xylP7c/1.jpg)
Selection Sort, Live Demo: Working/execution of the Code, Selection Sort Analysis, Insertion Sort Algorithm
![Lecture 16 | Programming Abstractions](http://img.youtube.com/vi/y4M9IVgrVKo/1.jpg)
Partitioning for Quicksort, Quicksort Code Working/execution, Quicksort Code
![Lecture 17 | Programming Abstractions](http://img.youtube.com/vi/Tp3HCeeqyDs/1.jpg)
Sort Template with Callback, Supplying the Callback Function, One Last Convenience: Default Callback Function, Why Object Oriented Programming
![Lecture 18 | Programming Abstractions](http://img.youtube.com/vi/CYlbEVP349c/1.jpg)
Abstract Data Types, Wall of Abstraction, Why ADTs?
![Lecture 19 | Programming Abstractions](http://img.youtube.com/vi/-gZJGesVLmU/1.jpg)
Rules of Template Implementation, Explanation of the Working, Not Allow Member Wise Copy, InsertAt Function
![Lecture 20 | Programming Abstractions](http://img.youtube.com/vi/ItCsK1vZcHU/1.jpg)
Live Coding: Recap of the Vector-based Implementation for Stack, Linked List Implementation for Stack, Live Coding: Linked List Implementation for Stack, Analyzing Push/pop Functions, Queue Implementation
![Lecture 21 | Programming Abstractions](http://img.youtube.com/vi/-uITzwyfdcg/1.jpg)
Buffer: Vector vs Stack, Buffer as Linked List, Cursor Design, Use of Dummy Cell, Linked List Insert/delete, Linked List Cursor Movement
![Lecture 22 | Programming Abstractions](http://img.youtube.com/vi/FKvL3Duawv8/1.jpg)
Map as Vector, A different Strategy: Binary Search Tree, Trees in General, Binary Search Tree for Numbers, Operating on Trees, Tree Traversals at Work
![Lecture 23 | Programming Abstractions](http://img.youtube.com/vi/DLRBkVADdU0/2.jpg)
Pathfinder Demo, Graphs: Examples, Graphs: Explanation, Implementation Strategies, Graph Representation in C++, Nodes and Arcs in C++, Graph Traversals
![Lecture 24 | Programming Abstractions](http://img.youtube.com/vi/9hT5YQ4sKXk/1.jpg)
Compare Map Implementations, Hashtable Idea, Hash Functions, Hash Collisions
![Lecture 25 | Programming Abstractions](http://img.youtube.com/vi/TJ8SkcUSdbU/1.jpg)
Lexicon Case Study, Lexicon as Sorted Vector, Lexicon as BST, Lexicon as Hash Table, Summary so Far, Noticing Patterns/repetitions in the Words
![Lecture 26 | Programming Abstractions](http://img.youtube.com/vi/GVp1v6GKgbc/1.jpg)
Final Showdown, Thinking About Design, Runtime Performance, Memory Used, Code Complexity, Making Tradeoffs, Array vs Vector, Stack/Queue vs Vector
![Lecture 27 | Programming Abstractions](http://img.youtube.com/vi/x7pMi7-wro8/1.jpg)
Guest Lecturer: Keith Schwarz, About the C++ Language, Quick History of C++, C++ Philosophy, C++ Without genlib.h, A Working genlib.h Replacement
関連記事 on Publickey
あわせて読みたい
OpenCourse: Programming Methodology / Stanford
≪前の記事
OpenCourse: Programming Paradigms / Stanford