Course Overview
|
Course Synopsis
|
This course is designed to provide students with an understanding of the principles and techniques used in the design and analysis of algorithms. The course is primarily theoretical and does not require programming, but it does require understanding of the notion of a mathematical proof and some knowledge of elementary discrete mathematics. We will discuss and analyze a variety of data structures and algorithms chosen for their importance and their illustration of fundamental concepts. We will emphasize analyzing the worst-case running time of an algorithm as a function of input size. We will also spend some time exploring the boundary between feasible computations, taken to be those doable in polynomial time, and infeasible computations
|
Course Learning Outcomes
|
At the end of this course you should be able to :
- Analyze the worst-case running time of an algorithm as a function of input size
- Solve Recurrence relations
- Understand and implement Divide and Conquer strategy
- Understand the concepts of Dynamic programming
- Understand the concepts of Greedy Algorithm
- Understand the concepts of Graph traversing
- Understand and explain basics of Complexity theory
|
Course Calendar
|
2
|
Model of computation, 2-d maxima
|
5
|
2-d maxima: sweep line algorithm
|
7
|
Asymptotic notation, merge sort
|
9
|
Solving recurrence relations, median selection
|
Assignment No. 1
10
|
Median selection - partitioning algorithm
|
11
|
Analysis of median selection, binary heaps, sorting
|
12
|
Heap sort, analysis of heap sort
|
Quiz No. 1
14
|
Analysis of quick sort
|
15
|
Lower bounds for sorting, Linear time sorting, counting sort
|
Assignment No. 2
16
|
Bucket sort, radix sort, dynamic programming, Fibonacci sequence
|
17
|
Dynamic programming - edit distance
|
18
|
Dynamic programming - edit distance algorithm
|
Quiz No. 2
Midterm Examination
19
|
Dynamic programming - chain matrix multiply
|
20
|
Dynamic programming - chain matrix multiply
|
21
|
Dynamic programming - 0/1 knapsack
|
22
|
Dynamic programming - 0/1 knapsack
|
23
|
Greedy algorithms - coin change problem
|
24
|
Greedy algorithms - Huffman encoding
|
25
|
Greedy algorithms - Huffman encoding
|
26
|
Greedy algorithms - Activity scheduling
|
27
|
Greedy algorithms - fractional knapsack, Graphs - definitions
|
28
|
Graphs - representations, traversal
|
29
|
Graphs - breadth-first search, generic traversal algorithms
|
30
|
Graphs - generic traversal algorithms
|
Quiz No. 3
31
|
Graphs - depth-first search, timestamp structure
|
32
|
Graphs - cycles, topological sorting
|
33
|
Graphs - strong components
|
Graded Discussion Board
34
|
Graphs - strong components, minimum spanning tree (MST)
|
35
|
Graphs - MST: generic approach
|
36
|
Graphs - MST: Kruskal's algorithm
|
Quiz No. 4
37
|
Graphs - MST: Prim's algorithm
|
38
|
Graphs - shortest paths
|
39
|
Graphs - Dijkstra's algorithm
|
40
|
Graphs - Dijkstra's algorithm, Bellman-Ford algorithm
|
41
|
Graphs - all-pairs shortest path, Floyd-Warshall's algorithm
|
42
|
Graphs - Floyd-Warshall algorithm
|
43
|
Complexity theory -classes P, NP
|
44
|
Complexity theory - Reductions, graph coloring
|
45
|
Complexity theory - boolean satisfiability, independent sets
|
Final Term Examination
46
|
UVAS Spring 2010 (Lecture 1-27)
|
|
|
|