CP164: Notes and Lectures

These documents and videos provide information, help, and advice on CP164 topics.

These lectures are organized by topic, not by week - check the lab and assignment schedules as to when you should understand these topics.

Lecture attendance is not mandatory. Go through the notes and videos and bring your questions to lecture time.

Notes Recorded Lectures
Introduction to the Introduction
Getting Started
  • Introduction
  • Classes and Objects
  • Classes and Objects in Python
  • A Sample Python Class: Student
  • Special Python Methods (Magic Methods)
  • A Sample Python Class: Food
  • Data Structures
  • Abstract Data Types
  • Abstract Data Types vs Data Structures
  • Summary
  • References
Introduction
Classes and Objects
The Student Constructor
The Student String
The Student Comparisons
The Food Class
The Movie Class
Abstract Data Types
The Stack
  • Introduction
  • The Stack ADT
  • The Stack Maze
  • The Stack Brackets
  • Array-Based Stack Implementation
  • The Stack Mirror
  • Stack Applications
  • Summary
  • References
Data Structures
The Stack ADT
The Stack Maze
The Stack Balanced Brackets
The Stack Mirror
The Stack Array Implementation
The Queue
  • Introduction
  • The Queue ADT
  • Array-Based Queue Implementation
  • The Queue Maze
  • The Circular Queue
  • Queue Applications
  • Summary
  • References
The Queue ADT
The Queue Maze
Queue Simulations
The Array-Based Queue
The Circular Queue
The Priority Queue
  • Introduction
  • The Priority Queue ADT
  • Priority Queue Applications
  • Priority Queue Implementation
  • Array-Based Priority Queue Implementation
  • Summary
  • References
The Priority Queue ADT
The Array-Based Priority Queue
The List
  • Introduction
  • The List ADT
  • Array-Based List Implementation
  • Summary
  • References
List ADT
The Array-Based List
The Sorted List
  • Introduction
  • The Sorted_List ADT
  • Array-Based Sorted_List Implementation
  • The Binary Search
  • Summary
  • References
The Array-Based Sorted List
Recursion
  • Introduction
  • Recursion
  • Recursive Algorithms
  • Types of Recursion
  • Recursion with Auxiliary Functions
  • Recursive Big-O Analysis
  • Summary
  • References
Fruitful Recursion
In-Place Recursion
Tree Recursion
Recursion Demonstration
Algorithm Analysis
  • Introduction
  • Asymptotic Analysis
  • Big-O Notation
  • Big-O Analysis Of Algorithms
  • Summary
  • References
Algorithm Analysis
Linked Data Structures
  • Introduction
  • Linked Data Structures Concepts
  • The Linked Stack Implementation
  • Moving Nodes Between Stacks
  • is and None
  • Summary
  • References
Linked Data Structures
Moving Nodes
The Linked Queue
  • Introduction
  • The Linked Queue Implementation
  • Appending Linked Structures
  • Linked Traversal
  • Summary
  • References
The Linked Queue
Linked Traversal
The Linked Priority Queue
  • Introduction
  • Linked Thinking
  • The Priority Queue insert Method
  • The Priority Queue remove Method
  • Summary
  • References
Linked Thinking
Linked Lists and Sorted Lists
  • Introduction
  • Low Level Data Access
  • Array vs Linked Algorithm Comparisons
  • Linked Recursion
  • Summary
  • References
Array vs Linked Comparisons
Binary Search Trees
  • Introduction
  • The Binary Search Tree (BST)
  • BST Insertion
  • BST Deletion
  • BST Traversal
  • Summary
  • References
The BST
BST Insertion
BST Deletion
BST Traversal
Hashing
  • Hashes
  • Direct Access Tables
  • Hash Tables
  • Hash Table Collisions
  • Rehashing
  • The Hash Set Implementation
  • Summary
  • References
Hashing
Sorting
  • Comparison Sorts
    • The Insertion Sort
    • The Selection Sort
    • The Shell Sort
    • The Merge Sort
    • The Quick Sort
  • Non-Comparison Sorts
    • The Counting Sort
    • The Radix Sort
  • Summary
  • References
Sorting I
Sorting II
Sorting III