Computer Science
Programming, algorithms and artificial intelligence, from first principles.

Lecture 1: Algorithmic Thinking, Peak Finding
Introduction to Algorithms · Srini Devadas

Lecture 2: Models of Computation, Document Distance
Introduction to Algorithms · Erik Demaine

Lecture 3: Insertion Sort, Merge Sort
Introduction to Algorithms · Srini Devadas

Lecture 4: Heaps and Heap Sort
Introduction to Algorithms · Srini Devadas

Lecture 5: Binary Search Trees, BST Sort
Introduction to Algorithms · Srini Devadas

Lecture 6: AVL Trees, AVL Sort
Introduction to Algorithms · Erik Demaine

Lecture 7: Counting Sort, Radix Sort, Lower Bounds for Sorting
Introduction to Algorithms · Erik Demaine

Lecture 8: Hashing with Chaining
Introduction to Algorithms · Erik Demaine

Lecture 9: Table Doubling, Karp-Rabin
Introduction to Algorithms · Erik Demaine

Lecture 10: Open Addressing, Cryptographic Hashing
Introduction to Algorithms · Srini Devadas

Lecture 11: Integer Arithmetic, Karatsuba Multiplication
Introduction to Algorithms · Srini Devadas

Lecture 1: What is Computation?
Introduction to Computer Science and Programming in Python · Dr. Ana Bell

Lecture 2: Branching and Iteration
Introduction to Computer Science and Programming in Python · Dr. Ana Bell

Lecture 3: String Manipulation, Guess and Check, Approximations, Bisection
Introduction to Computer Science and Programming in Python · Dr. Ana Bell

Lecture 4: Decomposition, Abstraction, and Functions
Introduction to Computer Science and Programming in Python · Dr. Ana Bell

Lecture 5: Tuples, Lists, Aliasing, Mutability, and Cloning
Introduction to Computer Science and Programming in Python · Dr. Ana Bell

Lecture 6: Recursion and Dictionaries
Introduction to Computer Science and Programming in Python · Prof. Eric Grimson

Lecture 7: Testing, Debugging, Exceptions, and Assertions
Introduction to Computer Science and Programming in Python · Dr. Ana Bell

Lecture 8: Object Oriented Programming
Introduction to Computer Science and Programming in Python · Dr. Ana Bell

Lecture 9: Python Classes and Inheritance
Introduction to Computer Science and Programming in Python · Dr. Ana Bell

Lecture 10: Understanding Program Efficiency, Part 1
Introduction to Computer Science and Programming in Python · Prof. Eric Grimson

Lecture 11: Understanding Program Efficiency, Part 2
Introduction to Computer Science and Programming in Python · Prof. Eric Grimson

Lecture 1: Introduction and Scope
Artificial Intelligence · Patrick H. Winston

Lecture 2: Reasoning: Goal Trees and Problem Solving
Artificial Intelligence · Patrick H. Winston

Lecture 3: Reasoning: Goal Trees and Rule-Based Expert Systems
Artificial Intelligence · Patrick H. Winston

Lecture 4: Search: Depth-First, Hill Climbing, Beam
Artificial Intelligence · Patrick H. Winston

Lecture 5: Search: Optimal, Branch and Bound, A*
Artificial Intelligence · Patrick H. Winston

Lecture 6: Search: Games, Minimax, and Alpha-Beta
Artificial Intelligence · Patrick H. Winston

Lecture 7: Constraints: Interpreting Line Drawings
Artificial Intelligence · Patrick H. Winston

Lecture 8: Constraints: Search, Domain Reduction
Artificial Intelligence · Patrick H. Winston

Lecture 9: Constraints: Visual Object Recognition
Artificial Intelligence · Patrick H. Winston

Lecture 10: Introduction to Learning, Nearest Neighbors
Artificial Intelligence · Patrick H. Winston

Lecture 11: Learning: Identification Trees, Disorder
Artificial Intelligence · Patrick H. Winston