CS 704 Algorithms
by Rajeev Wankar
Brief Description
In this course you will learn several fundamental principles of algorithm design.
You'll learn the divide-and-conquer design paradigm, with applications to fast sorting,
searching, and multiplication. You will learn how to apply greedy and dynamic programming for some problems and
compute the complexity of algorithms. Backtracking and Branch and bound algorithms give solution to many intereting problems, you will learn few of them.
We will study how graph-processing algorithms, including minimum spanning tree and shortest paths
algorithms work. The theory of NP Hard and Complete problems will also be discussed. We will also study string processing algorithms.
Required Materials
Fundamentals of Computer Algorithms, Horowitz and Sahni
Introduction to Algorithms,
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein
Lecture Notes
- Introduction
- Elementry Data Structures
- Divide and Conquer
- Greedy Techniques
- Dynamic Programming
- Basic Search and Traversal Techniques
- Backtracking
- Branch and Bound
- NP-Hard and NP-Complete Problems
- String Matching
Assignmenets
- Homework:
hw0,
hw1,
hw2,
hw3,
hw4,
hw5
- Exams:
midterm 1,
midterm 2,
final