CS4310 --- Design and Analysis of Algorithms

(Spring 2019, Section 13328)

Instructor: Li Yang
Lecture Time: TR 11:30am-12:45pm
Classroom: CEAS D206
Office: CEAS B248
Office Hour: TR 1-2pm

TA: Lin Cheng
Office Hour: Thuesday 1-2pm, Office: B252


Important announcements will come here.


There will be 5-6 assignments. Assignments will be posted on e-learning portal with due dates. They must be submitted to the e-learning portal exactly when they are due. No late submission will be accepted.

Catalog Data:

Name: CS4310 - Design and Analysis of Algorithms
Credit Hours: 3
Prerequisite: (MATH 1450 or CS1310) and CS3310 or equivalent with a grade of C or better.

Course Description:

A continuation of study of data structures and algorithms. It provides a theoretical foundation in designing algorithms. The focus is on the advanced analysis of algorithms and on how the selections of different data structures affect the performance of algorithms. Algorithmic paradigms such as divide and conquer, greedy method, dynamic programming, backtracking, and branch and bound are covered. B-tree, 2-3 tree and a variety of graph structures are discussed along with their applications to algorithm implementation. Algorithms will be analyzed for their complexity. NP-completeness will be introduced.


The general objective of this course is to develop algorithmic thinking to solve real world problems. Specific objectives include:

  1. reinforce analytic skills and problem-solving abilities;
  2. analyze and understand the complexity of algorithms, and how theory connects with performance in real-world applications;
  3. apply alagorithm analysis to solve practical problems and optimize solutions.

Learning Outcomes:

Upon completion of this course, students should:

  1. have an ability to apply knowledge of computing and mathematics appropriate to the discipline.
  2. have an ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
  3. have an ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs.
  4. have an ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the trade-offs involved in design choices.
  5. exhibit knowledge of algorithms pertaining to the greedy, divide-and-conquer, dynamic programming, backtracking and branch-and-bound paradigms.
  6. gain an introductory knowledge of the complexity of algorithms and of the classes P, NP, and NP-complete.
  7. have an ability to evaluate a problem with respect to ethical responsibilities and security concerns.



There will be assignments, a midterm exam and a final exam. Your final grade is determined based on a weighted sum of your scores. Weights of the scores are:

Academic Integrity

The following code is required to be included in this syllabus:

You are responsible for making yourself aware of and understanding the policies and procedures in the Undergraduate (pp. 271-272) [Graduate (pp. 24-26)] Catalog that pertain to Academic Integrity. These policies include cheating, fabrication, falsification and forgery, multiple submission, plagiarism, complicity and computer misuse. If there is reason to believe you have been involved in academic dishonesty, you will be referred to the Office of Student Judicial Affairs. You will be given the opportunity to review the charge(s). If you believe you are not responsible, you will have the opportunity for a hearing. You should consult with me if you are uncertain about an issue of academic honesty prior to the submission of an assignment or test.