Department of Computer Science
CSU Stanislaus
California State University

CS4440-001: Theory of Algorithms

Fall 2023


 

Instructor: Dr. Xuejun Liang

My Office: DBH 282

 Office Hours: MW 1:00 p.m.-2:00 p.m. & Th 11:00 a.m.-12:00 a.m.

 ZOOM Meeting ID: 4438930033, Phone: (209) 667-3169, Email: xliang@csustan.edu

 

Class Information

Classroom: Bizzini 203

Class Date & Time: TTh 2:30PM-3:45PM

Class Website: https://www.cs.csustan.edu/~xliang/Courses2/CS4440-23F

 

Course Materials

Textbook

·         Introduction to the Design & Analysis of Algorithms, 3rd Edition, by A. Levitin, Addison-Wesley, 2012, ISBN: 0132316811

 

Reference Book

·         Algorithm Design, by Jon Kleinberg and Eva Tardos, Addison Wesley, 2006, ISBN: 9780321295354

 

Lecture Slides

·         Chapter 1 Introduction

·         Chapter 2 Fundamentals of the Analysis of Algorithm Efficiency

·         Chapter 3 Brute Force and Exhaustive Search

·         Chapter 4 Decrease-and-Conquer

·         Chapter 5 Divide-and-Conquer

·         Chapter 6 Transform-and-Conquer

·         Chapter 7 Space and Time Trade-Offs

·         Chapter 8 Dynamic Programming

·         Chapter 9 Greedy Technique

·         Chapter 10 Iterative Improvement

·         Chapter 11 Limitations of Algorithm Power

·         Chapter 12 Coping with the Limitations of Algorithm Power

 

Course Syllabus and Major Topics

 

Course Description

CS4440 Theory of Algorithms. (3 Hours) Pre-requisites: CS 3100 and MATH 2300. Students will learn fundamentals and various techniques of designing and analyzing computer algorithms. Topics include examples of computational problems, efficiency and correctness of algorithms, limitations of algorithm power, and fundamental techniques of algorithm designs such as brute force divide-and-conquer, decrease-and-conquer, transform-and-conquer, dynamic programming, greedy, iterative improvement, and approximation algorithm design strategies.

 

Course Outcomes:

Students who successfully complete the course should be able to

1.      Analyze the time complexity of recursive and non-recursive algorithms with respect to the asymptotic order of growth.

2.      Design and analyze algorithms to solve problems using brute-force and decrease-and-conquer techniques.

3.      Design and analyze algorithms to solve problems using divide-and-conquer and  transform-and-conquer techniques.

4.      Understand space and time trade-offs of algorithm efficiency as well as design and analyze algorithms to solve problems using hashing and dynamic programming techniques.

5.      Understand concept of suboptimal and satisfactory algorithms as well as design and analyze algorithms to solve problems using greedy and iterative improvement techniques.

6.      Discuss lower bound arguments, decision tree, and NP-complete problem as well as design and analyze polynomial-time heuristics to approximate solutions for NP-complete problems.

 

Homework Assignments

Homework assignments will be announced in class and available on Canvas.

You will submit your assignments on Canvas.