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 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