Lecture Archive

Click on a title to expand a lecture.

Aug. 29 › Types and Expressions
In this class we give an overview of the course and its expectations. We also also talk about setting up Python over the weekend.   Watch ›

August 29, 2019 slides handout no demos
Sep. 3 › Variables and Assignments
In this class we build a mental model to understand how Python works. We use the iClickers for the first time today.   Watch ›

September 3, 2019 slides handout no demos
Sep. 5 › Functions and Modules
In this class we see how to import optional features into Python. We also show how to make program files we can run.   Watch ›

September 5, 2019 slides handout demos
Sep. 10 › Defining Functions
In this lecture we introduce how to define our own functions. We also develop a mental model for executing functions.   Watch ›

September 10, 2019 slides handout demos
Sep. 12 › Strings
In this lecture we introduce how to process text in Python. These techniques will be used in the first assignment.   Watch ›

September 12, 2019 slides handout demos
Sep. 17 › Specifications and Testing
In this lecture we introduce the concept of testing as a formal process. This material forms the basis of software engineering.   Watch ›

September 17, 2019 slides handout demos
Sep. 19 › 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.   Watch ›

September 19, 2019 slides handout demos
Sep. 24 › 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.   Watch ›

September 24, 2019 slides handout demos
Sep. 26 › 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.   Watch ›

September 26, 2019 slides handout demos
Oct. 1 › 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.   Watch ›

October 1, 2019 slides handout demos
Oct. 3 › 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.   Watch ›

October 3, 2019 slides handout demos
Oct. 8 › 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.   Watch ›

October 8, 2019 slides handout no demos
Oct. 10 › 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.   Watch ›

October 10, 2019 slides handout demos
Oct. 17 › Recursion
Recursion is a powerful programming tool and one of the fundamental principles of computer science. It is used in many advanced algorithms.   Watch ›

October 17, 2019 slides handout demos
Oct. 22 › More on Recursion
As we saw last lecture, divide-and-conquer is one of the more popular uses of recursion. In this lecture we expand more on this concept.   Watch ›

October 22, 2019 slides handout demos
Oct. 24 › Nested Lists and Dictionaries
This lecture introduces the last built-in (as opposed to user-defined) types in this course. These types are often used to store data in files.   Watch ›

October 24, 2019 slides handout demos
Oct. 29 › 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.   Watch ›

October 29, 2019 slides handout demos
Oct. 31 › Using Classes Effectively
In the lecture on algorithm design, we talked about how to properly implement a a function definition. In this lecture we do the same for classes.   Watch ›

October 31, 2019 slides handout demos
Nov. 5 › Inheritance
This lecture introduces subclasses, which can add extra functionality to an existing class. Subclasses and inheritance important parts of object oriented programming.   Watch ›

November 5, 2019 slides handout demos
Nov. 7 › Operators and Abstraction
We have seen several mysterious double-underscore methods in Python classes. In this lecture show why these methods are so important.   Watch ›

November 7, 2019 slides handout demos
Nov. 12 › Typing and Subclasses
Typing is the act of determining the type of a value. Today we question why typing is so important, and show some challenges of typing.   Watch ›

November 12, 2019 slides handout demos
Nov. 14 › While Loops
Today we introduce while-loops, which are an alternate form of iteration. We show why they are different from for-loops, and when to use them.   Watch ›

November 14, 2019 slides handout demos
Nov. 19 › Loop Invariants
Today we discuss how to design algorithms for while-loops. We introduce loop invariants, which are powerful programming technique.   Watch ›

November 19, 2019 slides handout demos
Nov. 21 › GUI Applications
This lecture combines while-loops and classes to show how to make complex graphical applications. This lecture will provide you all that you need to know to get started on the last assignment.   Watch ›

November 21, 2019 slides handout demos
Nov. 26 › Sequence Algorithms
Today we start on the last major topic in the course: sorting. We start off with some sorting-like algorithms to demonstrate the challenges.   Watch ›

November 26, 2019 slides handout demos
Dec. 3 › Sequence Algorithms (cont)
Today we continue with the invariants and algorithms from the last lecture. We show how changing invariants can change your algorithm.   Watch ›

December 3, 2019 slides handout demos
Dec. 5 › Searching and Sorting
Today we complete our discussion of loop invariants and show how to use them to implement sorting.   Watch ›

December 5, 2019 slides handout demos
Dec. 10 › Course Wrap-Up
Hopefully you have enjoyed this course. Assuming that you have, today we discuss your options about what to do next in computer science.   Watch ›

December 10, 2019 slides no handout no demos