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

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
• 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
• 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
• 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