OpenCourse: Programming Paradigms / Stanford
「Programming Paradigms」コースは、スタンフォード大学が公開している講座です。「Programming Methodology」コースと「Programming Abstractions」コースのさらに上級に位置するコースです。
CおよびC++における、より高度なメモリ管理、Lispを用いた関数型パラダイムや、C/C++を用いたコンカレントプログラミング、そしてPython、Objective-C、C#などの言語についても学びます。
コースについての詳細やハンドアウトなどの関連資料は、「Stanford School of Engineering - Stanford Engineering Everywhere」から参照できます。
![Lecture 1 | Programming Paradigms](http://img.youtube.com/vi/Ps8jOj7diA0/1.jpg)
Languages and Paradigms Taught - C++ vs. Pure C, Procedural Paradigm vs. Object-Oriented Paradigm
![Lecture 2 | Programming Paradigms](http://img.youtube.com/vi/jTSvthW34GU/1.jpg)
C/C++ Data Types - Interpretations, Sizes, Bits- How Bytes are Broken Up into Bits
![Lecture 3 | Programming Paradigms](http://img.youtube.com/vi/H4MQXBF6FN4/1.jpg)
Converting Between Types of Different Sizes and Bit Representations Using Pointers, Little Endian vs. Big Endian
![Lecture 4 | Programming Paradigms](http://img.youtube.com/vi/_eR4rxnM7Lc/1.jpg)
Creating a Generic Swap Function for Data Types of Arbitrary Size
![Lecture 5 | Programming Paradigms](http://img.youtube.com/vi/73Z7gaAvovQ/1.jpg)
Generic Lsearch - Prototype, Comparison Function, Implementation
![Lecture 6 | Programming Paradigms](http://img.youtube.com/vi/iyLNYXcEtWE/1.jpg)
Integer Stack Implementation - Constructor and Destructor, Stackpush Implementation
![Lecture 7 | Programming Paradigms](http://img.youtube.com/vi/Yr1YnOVG-4g/1.jpg)
Problems with Ownership of Memory, How Default Implementation of Stackdispose Does Not Free Dynamically Allocated Data
![Lecture 8 | Programming Paradigms](http://img.youtube.com/vi/1nYDflSL0Mg/1.jpg)
Heap Management - How Information about Allocations are Stored in the Heap
![Lecture 9 | Programming Paradigms](http://img.youtube.com/vi/arjo2-JQeaY/1.jpg)
How a Code Snippet is Translated into Assembly Instructions, Store, Load, and ALU Operations
![Lecture 10 | Programming Paradigms](http://img.youtube.com/vi/FvpxXmEG1F8/1.jpg)
More Detail about Activation Records - Layout of Memory During a Function Call
![Lecture 11 | Programming Paradigms](http://img.youtube.com/vi/DwTXMjVkIUY/1.jpg)
Moving from C Code Generation to C++ Code Generation: Basic Swap Example
![Lecture 12 | Programming Paradigms](http://img.youtube.com/vi/0rXjvLa2NSs/1.jpg)
Preprocessing Commands - #Define as a Glorified Find and Replace, Preprocessing Macros
![Lecture 13 | Programming Paradigms](http://img.youtube.com/vi/ucQI5HpiFrI/1.jpg)
Review of Compilation Process of a Simple Program Into a .O File, Effect of Commenting Out a C Standard Library .H File on the Resulting Translation Unit
![Lecture 14 | Programming Paradigms](http://img.youtube.com/vi/TRfbJIsDBIM/1.jpg)
Example in Which Writing Past the End of Array Causes the Return Address of the Function to be Overwritten
![Lecture 15 | Programming Paradigms](http://img.youtube.com/vi/omE3YYpHhLo/1.jpg)
Transitioning from Sequential Programming to Concurrent Programming in the Ticket Sale Example
![Lecture 16 | Programming Paradigms](http://img.youtube.com/vi/OGHN_zVTMMo/1.jpg)
Review of Semaphore Syntax, Semaphoresignal and Semaphorewait
![Lecture 17 | Programming Paradigms](http://img.youtube.com/vi/kF3eSQTFagQ/1.jpg)
Review of the Dining Philosopher Problem, Modeling Each Philosopher as a Thread
![Lecture 18 | Programming Paradigms](http://img.youtube.com/vi/ynwh5O3jVRM/1.jpg)
Guest Lecturer, Setup of the Ice Cream Store Problem, with Customer, Cashier, Clerk, and Manager Threads
![Lecture 19 | Programming Paradigms](http://img.youtube.com/vi/_cV8NWQCxnE/1.jpg)
Imperative/Procedural Paradigms (C) and Object-Oriented Paradigm(C++), Introduction to the Functional Paradigm (Scheme)
![Lecture 20 | Programming Paradigms](http://img.youtube.com/vi/onKR7ICXacQ/1.jpg)
Car-Cdr Recursion Problem that Returns the Sum of Every Element in a List of Integers
![Lecture 21 | Programming Paradigms](http://img.youtube.com/vi/omzSd3En5g4/1.jpg)
Introduction to the Kawa Development Environment: Evaluation of Expressions, Loading Function Definitions From a .Scm File
![Lecture 22 | Programming Paradigms](http://img.youtube.com/vi/3LeCydausnk/1.jpg)
Writing a Recursive Power Set Function in Scheme
![Lecture 23 | Programming Paradigms](http://img.youtube.com/vi/TJkH1CSHg44/1.jpg)
Scheme Memory Model - How Scheme Instructions Synthesize Linked Lists Behind the Scenes and Perform Operations on Them
![Lecture 24 | Programming Paradigms](http://img.youtube.com/vi/_9XAlLofYwU/1.jpg)
Overarching Features of Python: Scripting Language, Imperative, Object-Oriented, Functional, More Python Overview - Dynamic Typing, Use of Whitespace and Tabs
![Lecture 25 | Programming Paradigms](http://img.youtube.com/vi/V-5DCBQdErM/1.jpg)
Rewriting RSG to Illustrate all Three Paradigms and Lambdas in Python, How Objects Are Implemented in Python
![Lecture 26 | Programming Paradigms](http://img.youtube.com/vi/PrnRTwCaWz8/1.jpg)
XML Processing and Python - Two Different XML Processing Models, Example XML Fragment
![Lecture 27 | Programming Paradigms](http://img.youtube.com/vi/cXY4fSA7DnM/1.jpg)
Guest Lecturer: Sasha Rush, Haskell History, Safeguards in Haskell that Avoid Runtime Errors, Expressive Functions in Haskell
関連記事 on Publickey
あわせて読みたい
OpenCourse: Programming Abstractions / Stanford
≪前の記事
OpenCourse: Computer System Engineering / MIT