Department of Computer Science
CSU Stanislaus
California State University

CS4440-001: Theory of Algorithms

Spring 2025


 

Instructor: Dr. Xuejun Liang

My Office: DBH 282

Office Hours: TuTh 2:00 p.m.-3:00 p.m. & W 10:00 a.m. - 11:00 a.m.

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

 

Class Information

Classroom: DBH 165 / Online

Class Date & Time: MWF 11:00 a.m. - 11:50 a.m.

Class Website: https://www.cs.csustan.edu/~xliang/Courses2/CS4440-25S-S1

Class Canvas: Use your class Canvas account to submit homework assignments

Class Modality: Hybrid Online - Synchronous. In-person class meetings will be on campus at the room, day, and time listed. Online class meetings will be at the day and time listed. Students must be available at the class times listed in the Class Schedule and must attend in person on days indicated as such by the instructor. Students do not have the option to choose in-person or virtual, nor opt for asynchronous participation.

 

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.