Professional Documents
Culture Documents
7. COURSE OBJECTIVES
8. Analyze the asymptotic performance of algorithms.
9. Write rigorous correctness proofs for algorithms.
10. Demonstrate a familiarity with major algorithms and data structures.
11. Apply important algorithmic design paradigms and methods of analysis.
12. Synthesize efficient algorithms in common engineering design situations.
COURSE OUTCOMES
At the end of the course the students should be able to:
6. Argue the correctness of algorithms using inductive proofs and invariant
7. Explain the major graph algorithms and their analyses. Employ graphs to model engineering
problems, when appropriate. Synthesize new graph algorithms and algorithms that employ graph
computations as key components, and analyze them.
8. Describe the divide-and-conquer paradigm and explain when an algorithmic design situation calls
for it. Recite algorithms that employ this paradigm. Synthesize divide-and-conquer algorithms.
Derive and solve recurrences describing the performance of divide-and-conquer algorithms.
9. Describe the dynamic-programming paradigm and explain when an algorithmic design situation
calls for it. Recite algorithms that employ this paradigm. Synthesize dynamic-programming
algorithms, and analyze them.
10. Analyze worst-case running times of algorithms using asymptotic analysis.
Sorting Algorithms and Analysis: Bubble sort, Selection sort, Insertion sort,Shell sort Heap sort,
Sorting in linear time: Bucket sort, Radix sort and Counting sort. sequential search and brute-force
string matching, divide and conquer, merge sort, binary search, binary tree, traversal and related
properties, depth first search and breadth forst search.
Backtracking, n-Queen's problem, Hamiltonian circuit problem, subset-sum problem, branch and
bound, assignment problem, knapsack problem, traveling salesman problem.
Text Books:
4. A. V. Aho, J.E. Hopcroft and J.D. Ullman, "the Design and Analysis of Computer
Algorithms", Pearson Education Asia, 2003.