Lectures

Lecture Slides

Topic

Notebooks

Links

Introduction

Readings:
M&R Ch. 1.1 - 1.3

Python Review

Readings:
M&R Ch. 1.4
Python Review

Runtime Analysis

Readings:
M&R Ch. 2.1-2.3
Complexity Curves
Anagrams
Untitled
Simple Runtime Plot
Base 10 Int to Binary Int
Timing Examples
Algorithmic Complexity

Stacks

Readings:
M&R Ch. 3.1 - 3.3
Simple Balanced Parentheses
ws_stacks
Infix to Postfix
Simple Balanced Symbols

Queues

Readings:
M&R Ch. 3.4
Hot Potato

Deques

Readings:
M&R Ch. 3.5
Palindrome Checker

Lists

Readings:
M&R Ch. 3.6
Ordered List
Unordered List

Recursion

Readings:
M&R Ch. 4.1 - 4.6
Workshop
Sierpinski Triangle
Recursion
Integer to String
Fibonacci
Factorial
Brute Force Anagrams

Dynamic Programming

Readings:
M&R Ch. 4.7

Searching

Readings:
M&R Ch. 5.2.1-5.2.2
Searching

Hashing

Readings:
M&R Ch. 5.2.3
Hashing
Testing HashTable from pythonds9
HashTable ADT

Sorting

Readings:
M&R Ch. 5.3
Bubble Sort
Shell Sort
Insertion Sort
Merge Sort
Selection Sort
Quick Sort

Trees

Readings:
M&R Ch. 6.1 - 6.5
Binary Tree Using Lists
Untitled
Expression Trees
Binary Tree Using Classes

Priority Queues with Binary Heaps

Readings:
M&R Ch. 6.6
Priority Queue with Binary Heap

Binary Search Trees

Readings:
M&R Ch. 6.7
Binary Search Trees

AVL Trees

Readings:
M&R Ch. 6.8
AVL Trees

Graphs

Readings:
M&R Ch. 7.1 - 7.3
Graphs With Adjacency Lists
Graphs Using Adjacency Matrix

Graphs - BFS

Readings:
M&R Ch. 7.4
Word Ladder

Graphs - DFS

Readings:
M&R Ch. 7.5
Depth-First Searching

Toplogical Sorting

Readings:
M&R Ch. 7.6

Strongly Connected Components

Readings:
M&R Ch. 7.7

Dijkstras’ Algorithm

Readings:
M&R Ch. 7.8.1 - 7.8.2

Prim’s Spanning Tree Algorithm

Readings:
M&R Ch. 7.8.3