List of Lecture Topics Lecture 1 – Introduction to Python: • Knowledge • Machines • Languages • Types • Variables • Operators and Branching Lecture 2 – Core elements of programs: • Bindings • Strings • Input/Output • IDEs • Control Flow • Iteration • Guess and Check Lecture 3 – Simple Programs: • Approximate Solutions • Bisection Search • Floats and Fractions • Newton-Raphson Lecture 4 – Functions: • Decomposition and Abstraction • Functions and Scope • Keyword Arguments • Specifications • Iteration vs Recursion • Inductive Reasoning • Towers of Hanoi • Fibonacci • Recursion on non-numerics • Files Lecture 5 – Tuples and Lists: • Tuples • Lists • List Operations • Mutation, Aliasing, Cloning Lecture 6 – Dictionaries: • Functions as Objects • Dictionaries • Example with a Dictionary • Fibonacci and Dictionaries • Global Variables Lecture 7 – Debugging: • Programming Challenges • Classes of Tests • Bugs • Debugging • Debugging Examples Lecture 8 – Assertions and Exceptions • Assertions • Exceptions • Exception Examples Lecture 9 – Classes and Inheritance: • Object Oriented Programming • Class Instances • Methods • Classes Examples • Why OOP • Hierarchies • Your Own Types Lecture 10 – An Extended Example: • Building a Class • Viualizing the Hierarchy • Adding another Class • Using Inherited Methods • Gradebook Example • Generators Lecture 11 – Computational Complexity: • Program Efficiency • Big Oh Notation • Complexity Classes • Analyzing Complexity Lecture 12 – Searching and Sorting Algorithms: • Indirection • Linear Search • Bisection Search • Bogo and Bubble Sort • Selection Sort • Merge Sort Lecture 13 – Visualization of Data: • Visualizing Results • Overlapping Displays • Adding More Documentation • Changing Data Display • An Example Lecture 14 – Summary