Lecture Archive

Click on a title to expand a lecture.

Aug. 26 › Types and Expressions
In this class we give an overview of the course and its expectations. We also also talk about setting up Python to get started on the first lab.   More ›

no handout no slides no demos
Aug. 28 › Variables and Assignments
In this class we build a mental model to understand how Python works. This will be our first class where we use the iClickers   More ›

no handout no slides no demos
Sep. 2 › Functions and Modules
In this class we talk about how to import optional features into Python. We also show how to make program files we can run.   More ›

no handout no slides no demos
Sep. 4 › User-Defined Functions
In this lecture we introduce how to define our own functions. We also develop a mental model for executing functions.   More ›

no handout no slides no demos
Sep. 9 › Strings
In this lecture we introduce how to process text in Python. These techniques will be used in the first assignment.   More ›

no handout no slides no demos
Sep. 11 › Specifications and Testing
In this lecture we introduce the concept of testing as a formal process. This material forms the basis of software engineering.   More ›

no handout no slides no demos
Sep. 16 › Conditionals and Program Flow
In this lecture, we demonstrate the difference between program structure and program flow. We also introduce our first control structure: the conditional.   More ›

no handout no slides no demos
Sep. 18 › Algorithm Design
Your first assignment was very much do-this/do-that. Today we step back and see how we would design a complex program from the beginning.   More ›

no handout no slides no demos
Sep. 23 › Objects
This lecture introduces the notion of objects, a new type of data. It will also force us to question what we know about Python.   More ›

no handout no slides no demos
Sep. 25 › Memory in Python
The last lecture pulled back the curtain on what really is happenind with memory in Python. Today we put everything back together.   More ›

no handout no slides no demos
Sep. 30 › Asserts and Error Handling
In this lecture we show how to use our understanding of Python memory to read error messages. We also show how to create our own error messages and why.   More ›

no handout no slides no demos
Oct. 2 › Lists (and Sequences)
Today we introduce another sliceable data type: lists. They are similar to strings, except that they can contain data other than text.   More ›

no handout no slides no demos
Oct. 7 › For-Loops
Lists (and sequences) come with their own special control structure: the for-loop. This is the last traditional control structure we will see for a while.   More ›

no handout no slides no demos
Oct. 9 › Nested Lists
This lecture explores lists in greater depth, both literally and metaphorically, As lists can contain any object, they can also contain other lsits.   More ›

no handout no slides no demos
Oct. 16 › Recursion
Recursion is a powerful programming tool and one of the fundamental principles of computer science. It is used in many advanced algorithms.   More ›

no handout no slides no demos
Oct. 21 › More Recursion
The divide-and-conquer examples we saw in the previous session were on the easy side. In this session we look at some much more challenging examples.   More ›

no handout no slides no demos
Oct. 23 › Dictionaries
This presentation explores the last built-in (as opposed to user-defined) type in this course. We also show how to store this data in files.   More ›

no handout no slides no demos
Oct. 28 › Classes
Up until now, if we wanted to use objects, we imported a module that provided the class. In this lecture we finally learn how to create our own classes.   More ›

no handout no slides no demos
Oct. 30 › Object-Oriented Design
In the lecture on algorithm design, we talked about how to properly implement a function definition. In this lecture we do the same for classes.   More ›

no handout no slides no demos
Nov. 4 › Inheritance
This lecture introduces subclasses, which can add extra functionality to an existing class. Subclasses and inheritance important parts of object-oriented programming.   More ›

no handout no slides no demos