148

Lecture Notes

More notes will be made available as the course progresses.

Instructions:

  • Each section is a browser page of note materials, you may also print out the page.
  • At any point, you can use your browser's back button to return to this main page.

  1. Recapping and Extending Some key Prerequisite Material
    1. The Python Memory Model: Introduction
    2. The Python Memory Model: Functions and Parameters
    3. The Function Design Recipe
    4. Python Type Annotations
    5. Testing Your Work
    6. Choosing Test Cases
    7. Introduction to Property-based Testing
  2. Object-Oriented Programming 2.1~2.3 2.4~2.7
    1. Introduction to Object-Oriented Programming
    2. Representation Invariants
    3. Designing Classes
    4. Inheritance: Introduction and Methods
    5. Inheritance: Attributes and Initializers
    6. Inheritance: Thoughts on Design
    7. The object Class and Python Special Methods
  3. Abstract Data Types
    1. Introduction to Abstract Data Types
    2. Stacks and Queues
    3. Exceptions
    4. Analysing Program Running Time
  4. Linked Lists
    1. Introduction to Linked Lists
    2. Traversing Linked Lists
    3. Mutating Linked Lists
    4. Linked Lists and Running Time
  5. Introduction to Recursion
    1. Motivation: Adding Up Numbers
    2. Nested Lists: A Recursive Data Structure
  6. Trees and Binary Search Trees Part 1 Part 2 Part 3
    1. Introduction to Trees
    2. A Tree Implementation
    3. Mutating Trees
    4. Introduction to Binary Search Trees
    5. Binary Search Tree Implementation and Search
    6. Mutating Binary Search Trees
    7. Binary Search Trees and Running Time
    8. Expression Trees
  7. Recursion Wrap-up
    1. Recursive Sorting Algorithms
    2. Efficiency of Recursive Sorting Algorithms