CSCI 493.55 Honor seminar in algorithms

Class
Lectures: Tue, Fri 9:45 AM - 11:00 AM, HW 611

Professor
Saad Mneimneh, HN 1090F
Office hours: Fri 11:00 AM - 1:00 PM or by appointment



Textbooks
The purpose of this course is to complement your algorithm background with either new topics or a deeper coverage of some typical topics. No textbook is required but here are some references:

- Introduction to Algorithms, CLRS
- Algorithms, S.D, C.P, U.V
- Algorithms on trees, strings, and sequences, D.G.
- Randomized algorithms, Motwani
- Data structures and network algorithm, Robert Tarjan
- Algorithmic Graph Theory and Perfect Graphs, Golumbic
- The art of computer programming, volume 2, Donald Knuth
- Online notes, Richard Karp
- Online notes, A.J.M van Gasteren, W.H.J. Feijen

Syllabus (tentative, we may not be able to cover everything)
- Eucledian algorithm and RSA
- Primality testing, Miller-Rabin
- Making faster multiplications with Divide-and-Conquer
- Better Master theorem, the Bazzi method
- Fast Fourrier Transform
- Linear Programming
- Graph search with DFS and applications
- Lexicographic DFS
- NP-complete problems on chordal graphs
- Network flows and cuts
- Matchings
- Strings matching algorithms
- Suffix trees
- Periods and the Z algorithm
- Some oldies revisited, binary search, quicksort
- Randomized algorithms with examples and data structures
- Randomization by integer programming relaxation
- Derandomization
- Quantum computing

Lecture notes
Note 1 Euclidean algorithm and RSA
Note 2 Primality testing and fast exponentiation
Note 3 Making faster multiplications
Note 4 Linear programming
Note 5 Depth first search and its applications
Note 6 Network flows and shortest paths
Note 7 Matchings
Note 8 String matching, hashing, FSM, and suffix trees (coming soon...)
Note 9 Revisiting sorting with randomized quicksort and game theory (coming soon...)
Note 10 Revisiting binary search, generalizing and fixing bugs (coming soon...)
Note 11 More on randomization (coming soon...)