**Video Lectures:**

Lecture 1: Introduction to 6.00

Lecture 2: Core Elements of a Program

Recitation 1: Introduction to Coding Concepts

Lecture 4: Machine Interpretation of a Program

Recitation 2: Loops, Tuples, Strings and Functions

Lecture 6: Recursion

Recitation 3: Lists and their Elements, Sorting, and Recursion

Lecture 7: Debugging

Recitation 4: Recursion, Pseudo code and Debugging

Lecture 8: Efficiency and Order of Growth

Optional Recitation: Algorithm Complexity and Class Review

Lecture 9: Memory and Search Methods

Lecture 10: Hashing and Classes

Lecture 11: OOP and Inheritance

Recitation 5: Quiz 1 Answers and Object-Oriented Programming

Lecture 12: Introduction to Simulation and Random Walks

Lecture 13: Some Basic Probability and Plotting Data

Lecture 14: Sampling and Monte Carlo Simulation

Lecture 15: Statistical Thinking

Recitation 6: Probability and Statistics

Lecture 16: Using Randomness to Solve Non-random Problems

Lecture 17: Curve Fitting

Recitation 7: Distributions, Monte Carlo, and Regressions

Optimization Problems and Algorithms

Lecture 18: Optimization Problems and Algorithms

Lecture 19: More Optimization and Clustering

Lecture 20: More Clustering

Recitation 8: Hierarchical and k-means Clustering

Lecture 21: Using Graphs to Model Problems, Part 1

Lecture 22: Using Graphs to Model Problems, Part 2

Recitation 9: Directed and Undirected Node Graphs

Lecture 23: Dynamic Programming

Lecture 24: Avoiding Statistical Fallacies

Recitation 10: Introduction to Dynamic Programming