Lecture 1
Lecture 1.1 - Intro to CS and Programming
Lecture 1.2 - Computational Problem Solving
Lecture 1.3 - Capturing a Recipe in a Mechanical Process
Lecture 1.4 - Creating "Recipes"
Lecture 2
Lecture 2.1 - Programming Languages
Lecture 2.2 - Python Programs
Lecture 2.3 - Simple Means of Abstraction
Lecture 2.4 - Strings
Lecture 2.5 - Simple Scripts
Lecture 2.6 - Branching Programs
Lecture 3
Lecture 3.1 - Iteration
Lecture 3.2 - Guess and Check Algorithms
Lecture 3.3 - Loop Mechanisms
Lecture 3.4 - Floating Point Accuracy
Lecture 3.5 - Approximation Methods
Lecture 3.6 - Bisection Search
Lecture 3.7 - Newton-Raphson Root Finding
Lecture 4
Lecture 4.1 - Creating Functions
Lecture 4.2 - Environments
Lecture 4.3 - Computing Powers as an Example
Lecture 4.4 - Understanding Variable Binding
Lecture 4.5 - How Environments Separate Variable Bindings
Lecture 4.6 - Understanding Root Finding
- roots.py
Lecture 4.7 - Modules
Lecture 5
Lecture 5.1 - Iterative Algorithms
Lecture 5.2 - Recursive Algorithms
Lecture 5.3 - Using Environments to Understand Recursion
Lecture 5.4 - Inductive Reasoning
Lecture 5.5 - Factorial Time
- fact.py
Lecture 5.6 - Towers of Hanoi
Lecture 5.7 - Fibonacci
- fib.py
Lecture 5.8 - Recursion on Strings
- isPal.py
Lecture 5.9 - Global Variables
Lecture 6
Lecture 6.1 - Tuples
Lecture 6.2 - Lists
Lecture 6.3 - Operations on Lists
Lecture 6.4 - Functions as Objects
Lecture 6.5 - Dictionaries
Lecture 7
Lecture 7.1 - Testing and Debugging
Lecture 7.2 - Test Suites
Lecture 7.3 - Black-Box Testing
Lecture 7.4 - Glass-Box Testing
Lecture 7.5 - Test Drivers and Stubs
Lecture 7.6 - Debugging
Lecture 7.7 - Debugging as Search
Lecture 8
Lecture 8.1 - Exceptions
Lecture 8.2 - Error Handling
Lecture 8.3 - Exceptions as Control Flow
Lecture 8.4 - Assertions
Lecture 9
Lecture 9.1 - Measuring Complexity
Lecture 9.2 - Asymptotic Notation
Lecture 9.3 - Complexity Classes
Lecture 9.4 - Comparing Complexity Classes
Lecture 10
Lecture 10.1 - Search Algorithms
Lecture 10.2 - Binary Search
Lecture 10.3 - Selection Sort
Lecture 10.4 - Merge Sort
Lecture 10.5 - Hashing
Lecture 11
Lecture 11.1 - User-defined Types
Lecture 11.2 - A Class Example
Lecture 11.3 - An Environment View of Classes
Lecture 11.4 - Adding Methods to a Class
Lecture 11.5 - Example Class: A Set of Integers
Lecture 12
Lecture 12.1 - Inheritance
Lecture 12.2 - Using Inheritance Subclasses to Extend Behavior
Lecture 12.3 - Using Inheritance: Designing a Class Hierarchy
Lecture 12.4 - Example: A Gradebook
Lecture 12.5 - Generators
Lecture 13
Lecture 13.1 - Trees Introduction
Lecture 13.2 - Searching a Tree
Lecture 13.3 - Decision Trees
Lecture 13.4 - Implicit Search
Lecture 13.5 - Overgrown Trees
Wrap Up
Wrap Up 1 - Computational Thinking
Wrap Up 2 - Where Have You Been?
Wrap Up 3 - Where are You Headed?