Skip to main content

The lecture schedule is tentative and subject to change as the term progresses.

Date Topic Required Readings
Tue, Aug 29, 2017 Stacks and Queues
  • Welcome to CIS 121
  • Stacks and Queues
  • Resizing Arrays
  • Amortized Analysis
Thu, Aug 31, 2017 Analysis of Algorithms
  • Mathematical Models
  • Order of Growth Classification
  • Big O, Big Theta, and Big Omega notation
  • Memory Usage (read the textbook on your own for this section)
In class notes on Asymptotic Analysis
  • Chapter 1.4 in the textbook
Tue, Sep 5, 2017 Theory of Algorithms and Elementary Sorts
  • Big O, Big Theta, and Big Omega notation
  • Selection Sort
  • Insertion Sort
Thu, Sep 7, 2017 Elementary Sorts and Sorting in Java
  • Selection Sort and Insertion Sort Wrap-up
  • Sorting in Java
  • Comparable Interface, compareTo, Comparators
  • Stability
  • Chapter 2.2 in the textbook
Tue, Sep 12, 2017 Mergesort by Guest Lecturer (CCB is traveling)
  • Bottom-up Mergesort
  • Sorting Complexity
  • Comparators
  • Stability
In class notes on number of compares used by mergesort
  • Chapter 2.2 in the textbook
Thu, Sep 14, 2017 Quicksort by Guest Lecturer (CCB is traveling)
  • Theory of Algorithms
  • Selection
  • Duplicate Keys
  • System sorts
In class notes on average number of compares used by quicksort
  • Chapter 2.3 in the textbook
Tue, Sep 19, 2017 Sorting wrap up
  • Selection
  • Pitfalls of quicksort
  • The theory of algorithms
In class notes on Asymptotic Analysis
  • Chapter 2.3 in the textbook
Thu, Sep 21, 2017 Priority Queues
  • Binary Heaps
  • Heapsort
Tue, Sep 26, 2017 Symbol Table
  • Symbol Table API
  • Ordered Operations
  • Binary Search Trees
Tue, Sep 26, 2017 Option Review Session for Midterm 1 (8-10pm in Wu and Chen)
  • Java Knowledge
  • Analysis of Algorithms
  • Sorting
  • Heaps and Priority Queues
  • Binary Search Trees
  • Symbol Table API
  • Review chapters 1.3-1.5 and 2.1-2.4 and 3.1-3.2 in the textbook. All of the material in lectures, the assigned readings in the textbook and in the homework assignments is fair game.
Thu, Sep 28, 2017 Midterm 1
  • Java Knowledge
  • Analysis of Algorithms
  • Sorting
  • Symbol Table API
  • Binary Search Trees
  • Review chapters 1.3-1.5 and 2.1-2.3 and 3.1-3.2 in the textbook
Tue, Oct 3, 2017 Balanced Search Trees
  • 2-3 Search Trees
  • Red-Black BSTs
  • Chapter 3.3 in the textbook
Thu, Oct 5, 2017 No class (Fall Term Break)
Mon, Oct 9, 2017 Drop deadline
  • We will make grades for Midterm 1 available by the drop deadline
Tue, Oct 10, 2017 Hash Tables
  • Hash Functions
  • Separate Chaining
  • Linear Probing
  • Symbol Table Applications
Thu, Oct 12, 2017 Tries
  • R-way Tries
  • Ternary Search Tries
  • Character-Based Operations
  • Chapter 5.2 the textbook
Tue, Oct 17, 2017 Undirected Graphs
  • Intro to Graphs
  • Graphs API
  • Depth-First Search
  • Breadth-First Search
  • Connected Components
  • Graph Challenges
  • Chapter 4.1 in the textbook
Thu, Oct 19, 2017 Directed Graphs
  • Intro to Digraphs
  • Digraphs Seach
  • Topological Sort
  • Strong Components
  • Chapter 4.2 in the textbook
Tue, Oct 24, 2017 Shortest Paths
  • Properties of Shortest Paths
  • Dijkstra's Algorithm
  • Edge-Weighted Directed Acyclic Graphs
  • Negative Weights
  • Chapter 4.4 in the textbook
Thu, Oct 26, 2017 Minimum Spanning Trees
  • Greedy Algorithm for MSTs
  • Edge Weighted Graphs
  • Kruskal's Algorithm
  • Union-Find
  • Prim's Algorithm
  • Chapter 4.3 in the textbook, plus Chapter 1.5 on Union-Find
Tue, Oct 31, 2017 Review session for Midterm 2
  • Binary search trees
  • Hash tables
  • Tries
  • Graphs
  • Shortest path algorithms
  • Minimum spanning trees
  • Review chapters 3.1-3.5, 4.1-4.4, and 1.5 (Union-Find) of the textbook
Thu, Nov 2, 2017 Midterm 2
  • Binary search trees
  • Hash tables
  • Tries
  • Graphs
  • Shortest path algorithms
  • Minimum spanning trees
  • Review chapters 3.1-3.5, 4.1-4.4, and 1.5 (Union-Find) of the textbook
Tue, Nov 7, 2017 No lecture today (Election Day - go vote!)
Thu, Nov 9, 2017 Withdraw Deadline is Tomorrow (November 10)
  • We will attempt to make grades for Midterm 2 available by the end of the day
Thu, Nov 9, 2017 Strings
  • Key-Indexed Counting
  • LSD Radix Sort
  • MSD Radix Sort
  • 3-way Radix Quicksort
  • Chapter 5.1 the textbook
Tue, Nov 14, 2017 Data Compression
  • Run-Length Coding
  • Huffman Compression
  • LZW Compression
  • Chapter 5.5 the textbook
Thu, Nov 16, 2017 Substring Search
  • Brute Force Substring Search
  • Knuth-Morris-Pratt
  • Chapter 5.3 the textbook
Tue, Nov 21, 2017 Suffix Arrays
  • Suffix Arrays
  • How Professor Callison-Burch uses these in his research
Thu, Nov 23, 2017 No class today (Thanksgiving Break)
Tue, Nov 28, 2017 Regular Expressions
  • Regular Expressions and Non-deterministic Finite State Automata
  • NFA Simulation
  • NFA Construction
  • Chapter 5.4 the textbook
Thu, Nov 30, 2017 Maximum Flow
  • Ford–Fulkerson algorithm
  • maxflow–mincut theorem
  • Chapter 6 the textbook (Reductions)
Wed, Dec 6, 2017 TBD
Thu, Dec 7, 2017 Course Wrap-up
Thu, Dec 7, 2017 Review Session for Final Exam
  • Roughly 50% of the exam will be drawn from materials after midterm 2, including
  • Radix Sort
  • Tries
  • Data compression
  • Substring search
  • Suffix Arrays
  • Regular expressions
  • Mincut/Maxflow
  • The remaining 50% will cover topics from earlier parts of the class, including
  • Java knowledge
  • Order of growth classification
  • Sorting
  • Priority queues
  • Balanced search trees
  • Hash tables
  • Graph algorithms
  • MSTs
  • Shortest
  • Review chapters 5.1-5.5 from the textbook, plus chapters 1-4
Final Exam