 |
Course Syllabus
- Basic Concepts
- Order of an Algorithm
- Worst Case Analysis
- Average Case Analysis
- Optimality of Algorithms
- Sorting
- Lower Bounds for Sorting
- Sorting Methods and their Analysis
(Bubble sort, Insertion Sort, Quicksort, Mergesort, Heapsort, Shellsort, External Sorting)
- Graphs and Digraphs
- Minimal Spanning Trees
- Shortest Path Algorithms
- Traversing Graphs and Digraphs
- Optimal Binary Search Trees
- String Matching (KMP Algorithm)
- Polynomials and Matrices
- Evaluating Polynomial Functions (Horner's Method)
- Matrix Multiplication (Strassen's Algorithm)
- NP-Complete Problems and Approximation Algorithms
- Definition and Motivation
- Polynomial Reducibility
- Approximation Algorithms
- First Fit Bin Packing
- Knapsack Problem
- Dynamic Programming
- Parallel Algorithms
During the term, the Divide-and-Conquer strategy is introduced by using several examples including quicksort,
mergesort, binary search, finding the maximum and minimum, and Strassen's matrix multiplication.
The Greedy Method is also discussed and used for solving some problems such as optimal storage on tapes, knapsack
problem, job sequencing with deadlines, minimal spanning trees, and single source shortest paths.
Course Requirements
- Homework Assignments:
A number of homework assignments will be given during the semester. Some of the problems may require
programming in a high-level language.
- Programming Assignment:
One or two programming projects will be assigned during the semester.
|