2:26
Introduction | OCaml Programming | Chapter 1 Video 1
Michael Ryan Clarkson
7:22
Functional Programming - What | OCaml Programming | Chapter 1 Video 2
8:14
Functional Programming - Why Part 1 | OCaml Programming | Chapter 1 Video 3
7:45
Functional Programming - Why Part 2 | OCaml Programming | Chapter 1 Video 4
5:54
OCaml | OCaml Programming | Chapter 1 Video 5
6:46
Five Aspects of Learning a Programming Language | OCaml Programming | Chapter 2 Video 1
10:41
Expressions | OCaml Programming | Chapter 2 Video 2
6:51
If Expressions | OCaml Programming | Chapter 2 Video 3
5:58
Let Definitions | OCaml Programming | Chapter 2 Video 4
3:40
Let Expressions | OCaml Programming | Chapter 2 Video 5
7:13
Variable Expressions and Scope | OCaml Programming | Chapter 2 Video 6
2:40
Scope and the Toplevel | OCaml Programming | Chapter 2 Video 7
5:22
Anonymous Functions | OCaml Programming | Chapter 2 Video 8
4:44
Lambdas | OCaml Programming | Chapter 2 Video 9
4:52
Function Application | OCaml Programming | Chapter 2 Video 10
Named Functions | OCaml Programming | Chapter 2 Video 11
2:34
Recursive Functions | OCaml Programming | Chapter 2 Video 12
5:07
Function Types | OCaml Programming | Chapter 2 Video 13
4:08
Partial Application | OCaml Programming | Chapter 2 Video 14
2:59
Polymorphic Functions | OCaml Programming | Chapter 2 Video 15
4:28
Operators As Functions | OCaml Programming | Chapter 2 Video 16
Application Operators | OCaml Programming | Chapter 2 Video 17
3:49
Lists | OCaml Programming | Chapter 3 Video 1
4:22
List Syntax and Semantics | OCaml Programming | Chapter 3 Video 2
7:30
Records and Tuples | OCaml Programming | Chapter 3 Video 3
1:21
Comparison of Data Types | OCaml Programming | Chapter 3 Video 4
5:52
Record Syntax and Semantics | OCaml Programming | Chapter 3 Video 5
1:53
Tuple Syntax and Semantics | OCaml Programming | Chapter 3 Video 6
10:31
Pattern Matching | OCaml Programming | Chapter 3 Video 7
9:42
Pattern Matching with Lists | OCaml Programming | Chapter 3 Video 8
2:20
The Function Keyword | OCaml Programming | Chapter 3 Video 9
2:05
Cons vs Append | OCaml Programming | Chapter 3 Video 10
5:15
Pattern Matching Syntax and Semantics | OCaml Programming | Chapter 3 Video 11
8:34
Static Checking of Pattern Matching | OCaml Programming | Chapter 3 Video 12
5:08
Variants | OCaml Programming | Chapter 3 Video 13
6:11
Pattern Matching with Variants Part 1 | OCaml Programming | Chapter 3 Video 14
4:29
Pattern Matching with Variants Part 2 | OCaml Programming | Chapter 3 Video 15
3:28
Variant Syntax and Semantics | OCaml Programming | Chapter 3 Video 16
6:25
Algebraic Data Types | OCaml Programming | Chapter 3 Video 17
7:39
An ADT for Pokemon | OCaml Programming | Chapter 3 Video 18
7:05
Recursive Parameterized Variants | OCaml Programming | Chapter 3 Video 19
9:31
Options | OCaml Programming | Chapter 3 Video 20
5:04
Exceptions | OCaml Programming | Chapter 3 Video 21
3:15
Handling Exceptions | OCaml Programming | Chapter 3 Video 22
2:50
Binary Trees | OCaml Programming | Chapter 3 Video 23
6:47
Higher-Order Functions | OCaml Programming | Chapter 4 Video 1
3:06
Map | OCaml Programming | Chapter 4 Video 2
6:30
Implementing Map | OCaml Programming | Chapter 4 Video 3
3:51
Combine | OCaml Programming | Chapter 4 Video 4
7:51
Fold | OCaml Programming | Chapter 4 Video 5
Filter | OCaml Programming | Chapter 4 Video 6
3:23
Trees with Map and Fold | OCaml Programming | Chapter 4 Video 7
5:53
Modular Programming | OCaml Programming | Chapter 5 Video 1
4:04
Modules and Structures | OCaml Programming | Chapter 5 Video 2
6:24
Functional Stacks | OCaml Programming | Chapter 5 Video 3
2:52
Functional Data Structures | OCaml Programming | Chapter 5 Video 4
3:20
Module and Structure Syntax and Semantics | OCaml Programming | Chapter 5 Video 5
3:32
Scope and Opening | OCaml Programming | Chapter 5 Video 6
7:55
Functional Queues | OCaml Programming | Chapter 5 Video 7
6:09
Exceptions vs Options and More Application Operators | OCaml Programming | Chapter 5 Video 8
5:05
Module Types and Signatures | OCaml Programming | Chapter 5 Video 9
Module Types for Stacks and Queues | OCaml Programming | Chapter 5 Video 10
3:58
Module Type Syntax and Semantics | OCaml Programming | Chapter 5 Video 11
5:30
Abstract Types | OCaml Programming | Chapter 5 Video 12
4:49
Compilation Units | OCaml Programming | Chapter 5 Video 13
5:51
Utop with Modules | OCaml Programming | Chapter 5 Video 14
5:43
Includes | OCaml Programming | Chapter 5 Video 15
1:44
Include vs Open | OCaml Programming | Chapter 5 Video 16
6:03
Functors | OCaml Programming | Chapter 5 Video 17
Standard Library Map | OCaml Programming | Chapter 5 Video 18
7:50
Abstraction and Specification | OCaml Programming | Chapter 6 Video 1
3:39
Function Specifications | OCaml Programming | Chapter 6 Video 2
7:08
Parts of a Function Specification | OCaml Programming | Chapter 6 Video 3
3:16
Data Abstractions | OCaml Programming | Chapter 6 Video 4
4:40
Implementing Sets as Lists | OCaml Programming | Chapter 6 Video 5
4:01
Another Implementation of Sets | OCaml Programming | Chapter 6 Video 6
8:00
Abstraction Functions | OCaml Programming | Chapter 6 Video 7
6:39
Implementing Abstraction Functions | OCaml Programming | Chapter 6 Video 8
Representation Invariants | OCaml Programming | Chapter 6 Video 9
5:40
Implementing Representation Invariants | OCaml Programming | Chapter 6 Video 10
Abstraction Functions and Commutative Diagrams | OCaml Programming | Chapter 6 Video 11
5:29
Testing and Validation | OCaml Programming | Chapter 6 Video 12
2:33
Bugs | OCaml Programming | Chapter 6 Video 13
6:33
Approaches to Testing | OCaml Programming | Chapter 6 Video 14
1:29
Black Box vs Glass Box Testing | OCaml Programming | Chapter 6 Video 15
9:34
Black Box Testing | OCaml Programming | Chapter 6 Video 16
6:54
Glass Box Testing | OCaml Programming | Chapter 6 Video 17
3:45
Bisect | OCaml Programming | Chapter 6 Video 18
7:29
Randomized Testing and QCheck | OCaml Programming | Chapter 6 Video 19
4:48
Debugging | OCaml Programming | Chapter 6 Video 20
6:56
Formal Verification | OCaml Programming | Chapter 6 Video 21
4:47
Equality of Expressions | OCaml Programming | Chapter 6 Video 22
6:37
Equational Reasoning | OCaml Programming | Chapter 6 Video 23
7:49
Inductive Proofs about Recursive Functions | OCaml Programming | Chapter 6 Video 24
Example Proof: Summation | OCaml Programming | Chapter 6 Video 25
11:57
Example Proof: Iterative Factorial | OCaml Programming | Chapter 6 Video 26
6:22
Induction on an ADT for Natural Numbers | OCaml Programming | Chapter 6 Video 27
5:31
Induction on Lists | OCaml Programming | Chapter 6 Video 28
4:39
Example Proof: List Length and Append | OCaml Programming | Chapter 6 Video 29
Induction on Trees | OCaml Programming | Chapter 6 Video 30
6:12
Example Proof: Preorder and Length | OCaml Programming | Chapter 6 Video 31
7:10
Induction and Recursion | OCaml Programming | Chapter 6 Video 32
5:35
Total Correctness | OCaml Programming | Chapter 6 Video 33
5:45
Equational Specification of Stacks | OCaml Programming | Chapter 6 Video 34
9:14
Equational Specification of Queues | OCaml Programming | Chapter 6 Video 35
8:35
Design of Equations | OCaml Programming | Chapter 6 Video 36
Refs | OCaml Programming | Chapter 7 Video 1
Syntax and Semantics of Refs | OCaml Programming | Chapter 7 Video 2
4:38
Semicolon | OCaml Programming | Chapter 7 Video 3
3:35
Aliasing | OCaml Programming | Chapter 7 Video 4
7:25
Implementing a Counter | OCaml Programming | Chapter 7 Video 5
3:05
Mutable Fields | OCaml Programming | Chapter 7 Video 6
4:59
Mutable Singly Linked Lists Part 1 | OCaml Programming | Chapter 7 Video 7
Mutable Singly Linked Lists Part 2 | OCaml Programming | Chapter 7 Video 8
5:39
Arrays Part 1 | OCaml Programming | Chapter 7 Video 9
Arrays Part 2 | OCaml Programming | Chapter 7 Video 10
5:48
Map ADT: Insert, Find, Remove | OCaml Programming | Chapter 8 Video 1
5:01
Map ADT: Bindings, Of List | OCaml Programming | Chapter 8 Video 2
4:27
Association Lists: Rep Type | OCaml Programming | Chapter 8 Video 3
5:03
Association Lists: Bindings | OCaml Programming | Chapter 8 Video 4
Association Lists: Of List | OCaml Programming | Chapter 8 Video 5
5:09
Association Lists: Improving Tests, and TDD | OCaml Programming | Chapter 8 Video 6
3:07
Association Lists: Insert, Find, Remove | OCaml Programming | Chapter 8 Video 7
3:52
Direct Address Map ADT | OCaml Programming | Chapter 8 Video 8
Array Map: Rep Type, and Create | OCaml Programming | Chapter 8 Video 9
Array Map: Remaining Operations | OCaml Programming | Chapter 8 Video 10
1:31
Association Lists vs Arrays | OCaml Programming | Chapter 8 Video 11
6:36
Hash Table Rep Type v1 | OCaml Programming | Chapter 8 Video 12
Hash Table Rep Type v2 | OCaml Programming | Chapter 8 Video 13
3:12
Rehashing | OCaml Programming | Chapter 8 Video 14
3:04
Hash Table Interface | OCaml Programming | Chapter 8 Video 15
10:20
Hash Table Insert Implementation | OCaml Programming | Chapter 8 Video 16
7:35
Hash Table Resize Implementation | OCaml Programming | Chapter 8 Video 17
Hash Table Find and Remove Implementation | OCaml Programming | Chapter 8 Video 18
1:30
Hash Tables vs Other Data Structures for Maps | OCaml Programming | Chapter 8 Video 19
Hash Functions | OCaml Programming | Chapter 8 Video 20
5:26
Efficiency Analysis of Rehashing | OCaml Programming | Chapter 8 Video 21
6:59
Amortized Analysis of Hash Tables | OCaml Programming | Chapter 8 Video 22
1:32
The Idea of Amortized Analysis | OCaml Programming | Chapter 8 Video 23
4:32
Amortized Analysis of Two-list Queues | OCaml Programming | Chapter 8 Video 24
4:25
Theory of Amortized Analysis | OCaml Programming | Chapter 8 Video 25
7:23
Bankers and Physicists Methods | OCaml Programming | Chapter 8 Video 26
4:03
Functional Maps and Sets | OCaml Programming | Chapter 8 Video 27
6:00
Binary Search Trees | OCaml Programming | Chapter 8 Video 28
7:38
Binary Search Tree Efficiency | OCaml Programming | Chapter 8 Video 29
2:27
Balanced Trees | OCaml Programming | Chapter 8 Video 30
7:12
Red-Black Trees | OCaml Programming | Chapter 8 Video 31
1:39
Red-Black Tree Implementation: Rep Type, Empty, Mem | OCaml Programming | Chapter 8 Video 32
3:00
Okasaki's Algorithm for Red-Black Tree Insertion | OCaml Programming | Chapter 8 Video 33
9:09
Red-Black Tree Rotations | OCaml Programming | Chapter 8 Video 34
2:39
Red-Black Tree Insert Implementation | OCaml Programming | Chapter 8 Video 35
Red-Black Set Performance | OCaml Programming | Chapter 8 Video 36
5:11
Implementing Maps with Red-Black Trees | OCaml Programming | Chapter 8 Video 37
3:08
Compilers and Interpreters | OCaml Programming | Chapter 9 Video 1
7:28
Compiler Architecture | OCaml Programming | Chapter 9 Video 2
2:24
Calculator: Intro | OCaml Programming | Chapter 9 Video 3
8:48
Calculator: Parse Integers | OCaml Programming | Chapter 9 Video 4
Calculator: Evaluate Integers | OCaml Programming | Chapter 9 Video 5
7:24
Calculator: Addition | OCaml Programming | Chapter 9 Video 6
1:13
Calculator: Multiplication | OCaml Programming | Chapter 9 Video 7
Calculator: Precedence and Associativity | OCaml Programming | Chapter 9 Video 8
2:06
Calculator: Whitespace and Parentheses | OCaml Programming | Chapter 9 Video 9
Tokens and AST | OCaml Programming | Chapter 9 Video 10
7:11
Menhir and Ocamllex | OCaml Programming | Chapter 9 Video 11
Grammars and BNF | OCaml Programming | Chapter 9 Video 12
1:16
Small-Step Evaluation | OCaml Programming | Chapter 9 Video 13
Evaluation Relations | OCaml Programming | Chapter 9 Video 14
2:48
Let Semantics | OCaml Programming | Chapter 9 Video 15
4:34
Substitution Examples | OCaml Programming | Chapter 9 Video 16
2:14
Definition of Substitution | OCaml Programming | Chapter 9 Video 17
8:32
Implementing Let in the Calculator | OCaml Programming | Chapter 9 Video 18
SimPL Small Step | OCaml Programming | Chapter 9 Video 19
6:02
SimPL Big Step | OCaml Programming | Chapter 9 Video 20
Core OCaml Small Step | OCaml Programming | Chapter 9 Video 21
7:27
Substitution in Functions | OCaml Programming | Chapter 9 Video 22
7:00
Environment Model of SimPL | OCaml Programming | Chapter 9 Video 23
3:42
Environment Model Example | OCaml Programming | Chapter 9 Video 24
SimPL Environment Model Interpreter | OCaml Programming | Chapter 9 Video 25
Function Semantics in the Environment Model | OCaml Programming | Chapter 9 Video 26
Closures | OCaml Programming | Chapter 9 Video 27
2:25
Lexical vs Dynamic Scope | OCaml Programming | Chapter 9 Video 28
Remaining Core OCaml Environment Model | OCaml Programming | Chapter 9 Video 29
3:57
Recap of All Models | OCaml Programming | Chapter 9 Video 30
Type Checking | OCaml Programming | Chapter 9 Video 31
SimPL Type System | OCaml Programming | Chapter 9 Video 32
3:02
Adding Types to SimPL Interpreter | OCaml Programming | Chapter 9 Video 33
9:41
SimPL Type Checker Part 1 | OCaml Programming | Chapter 9 Video 34
6:31
SimPL Type Checker Part 2 | OCaml Programming | Chapter 9 Video 35
5:57
Type Safety | OCaml Programming | Chapter 9 Video 36
Hindley-Milner Type Inference | OCaml Programming | Chapter 9 Video 37
Type Inference Relation | OCaml Programming | Chapter 9 Video 38
3:17
Inference of Constants and Names | OCaml Programming | Chapter 9 Video 39
6:52
Inference of Ifs | OCaml Programming | Chapter 9 Video 40
Inference of Functions | OCaml Programming | Chapter 9 Video 41
Inference of Applications | OCaml Programming | Chapter 9 Video 42
7:16
Intuition for Unification | OCaml Programming | Chapter 9 Video 43
Unification Algorithm | OCaml Programming | Chapter 9 Video 44
13:14
A Worked Example of Type Inference | OCaml Programming | Chapter 9 Video 45
Finishing Type Inference | OCaml Programming | Chapter 9 Video 46
Naive Inference of Let | OCaml Programming | Chapter 9 Video 47