 |
Course Description
Algorithms for solving problems that occur frequently in computer applications.
Basic principles and techniques for designing and analyzing algorithms. Prerequisites:
CS 2010 and MATH 2220 or equivalent.
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.
|