OpenCourse: Programming Abstractions / Stanford
2009年9月1日
「Programming Abstractions」コースはスタンフォード大学が公開している講座です。「Programming Methodology」コースの上級版にあたります。C++言語を用いて、再帰的呼び出し、解析アルゴリズム、抽象化、スタックやキューなどの基本的なデータ構造などを学習します。
コースの詳しい内容やハンドアウトなどの関連資料は、「Stanford School of Engineering - Stanford Engineering Everywhere」のページから参照できます。

About the CS106 Series at Stanford

Similarity between C++ & Java: - syntax - variable types - operators - control structures

C++ Libraries - Standard Libraries

C++ Console I/O, C++ File I/O, Stream Operations

Client Use of Templates, Vector Class, Vector Client Interface

More Containers, Map Class, Uses of Map, Map Client Interface

Seeing Functions as Data: Specific Plot Functions, Generic Plot Function, Back to the Set

Common Mistakes Stumbled Upon: 'I'terator, Common Mistakes Stumbled Upon: Concatenating Strings, Solving Problems Recursively, Functional Recursion

Thinking Recursively, Procedural vs Functional - Recursion, Fractal Code

Refresh: Permute Code, Tree of Recursive Calls

Backtracking Pseudocode, Sudoku Solver, Sudoku Code, Cryptarithmetic, Dumb Solver, Smarter Solver, Looking for Patterns

Pointer Movie, Pointer Operations: Code & Pointer Memory Diagrams, Pointer Basics, Pointer and Dynamic Arrays, Use of Pointers

Coding with Linked List, Printing the List, Using Recursion to Print List, De-allocating the Memory Used for the Linked List

Algorithm Analysis, Evaluating the Performance, Analysis of Codes: Statement Counts

Selection Sort, Live Demo: Working/execution of the Code, Selection Sort Analysis, Insertion Sort Algorithm

Partitioning for Quicksort, Quicksort Code Working/execution, Quicksort Code

Sort Template with Callback, Supplying the Callback Function, One Last Convenience: Default Callback Function, Why Object Oriented Programming

Abstract Data Types, Wall of Abstraction, Why ADTs?

Rules of Template Implementation, Explanation of the Working, Not Allow Member Wise Copy, InsertAt Function

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

Buffer: Vector vs Stack, Buffer as Linked List, Cursor Design, Use of Dummy Cell, Linked List Insert/delete, Linked List Cursor Movement

Map as Vector, A different Strategy: Binary Search Tree, Trees in General, Binary Search Tree for Numbers, Operating on Trees, Tree Traversals at Work

Pathfinder Demo, Graphs: Examples, Graphs: Explanation, Implementation Strategies, Graph Representation in C++, Nodes and Arcs in C++, Graph Traversals

Compare Map Implementations, Hashtable Idea, Hash Functions, Hash Collisions

Lexicon Case Study, Lexicon as Sorted Vector, Lexicon as BST, Lexicon as Hash Table, Summary so Far, Noticing Patterns/repetitions in the Words

Final Showdown, Thinking About Design, Runtime Performance, Memory Used, Code Complexity, Making Tradeoffs, Array vs Vector, Stack/Queue vs Vector

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
≫次の記事
OpenCourse: Programming Methodology / Stanford
≪前の記事
OpenCourse: Programming Paradigms / Stanford