# DEPARTMENT OF COMPUTER SCIENCE

## CS 6120: ANALYSIS OF ALGORITHMS

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

1. 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.
2. Programming Assignment:
One or two programming projects will be assigned during the semester.