Design and Analysis of Algorithms (COMP3005)
Design and Analysis of Algorithms (COMP3005)
Course Aims: The primary objective of this course is to introduce the topics of algorithms as a
precise mathematical concept, and study how to design algorithms and analyze
their efficiency and memory needs. Also, the issue of problem complexity will be
addressed. The course consists of a strong mathematical analysis component in
addition to the design of various algorithms. By the end of the course, the
successful student will be able to:
1. Understand, explain, model, and analyze a given problem as an algorithm.
2. Investigate whether the algorithm found is the most efficient.
3. Formulate the time order analysis for an algorithm.
4. Formulate the space needs for the implementation of an algorithm.
5. Identify the complexity of problems
Calendar Description: This course is to introduce the techniques of designing efficient algorithms
including divide-and-conquer strategy, dynamic programming, greedy and
approximate algorithms, and so forth, and the applications of these techniques to
design non-trivial algorithms, e.g. advanced data structures, graph algorithms,
sorting algorithms and computational geometry. The time and space complexity
of algorithms will be analyzed from a theoretical point of view. Also, the issue of
problem complexity will be addressed.
Assessment:
1
intended learning outcomes. Questions will
primarily be analysis and skills based to assess the
student’s ability in the analysis, design and
realization of algorithms.
Assessment Rubrics:
Excellent (A) Achieve all CILOs, demonstrating a good mastery of both the theoretical and
practical aspects of the knowledge and skills associated with algorithm design and
analysis
Able to develop correct and efficient solutions to problems with the algorithm
complexity analysis
Demonstrate a thorough understanding and solid knowledge of algorithm design and
analysis concepts, and algorithm techniques
Able to apply a variety of algorithm techniques and relevant knowledge for solving
new problems
Good (B) Achieve most of the six CILOs, demonstrating a good understanding of the
knowledge and skills associated with algorithm design and analysis
Able to develop correct solutions to problems with the basic algorithm analysis
Demonstrate a competent level of knowledge of algorithm design and analysis
Ability to make use of appropriate techniques and knowledge and apply them to
familiar problems
Satisfactory (C) Achieve some of the six CILOs, demonstrating a basic level of understanding of the
knowledge and skills associated with algorithm design and analysis
Able to provide acceptable solutions to problems with the basic knowledge of
algorithm complexity analysis
Demonstrate an adequate level of knowledge of algorithm design and analysis
Ability to make use of some techniques and knowledge and apply them to familiar
situations
Marginal Pass (D) Achieve few of the six CILOs, with minimal understanding of the associated
concepts and underlying methodologies
Able to provide solutions to simple problems
Demonstrate a basic level of knowledge of algorithm design and analysis
Ability to apply some techniques and knowledge to a limited number of typical
situations
Fail (F) Achieve none of the six CILOs, with little understanding of the associated concepts
and underlying methodologies
Unable to provide solutions to simple problems
Knowledge of algorithm design and analysis falling below the basic minimum level
Unable to apply techniques and knowledge to situations or problems
References:
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein, Introduction to Algorithms,
3rd Edition, The MIT Press, 2009.
2
Mark Allen Weiss, Data Structures and Algorithm Analysis in C++, 4th Edition, Addison Wesley, 2013.
Anany Levitin, Introduction to the Design and Analysis of Algorithms, 3rd Edition, Addison Wesley, 2011.
R.C.T. Lee, S.S. Tseng, R.C. Chang and Y.T. Tsai, Introduction to the Design and Analysis of Algorithms -
-- A Strategic Approach, McGraw-Hill, 2012.
Jon Kleinberg and Eva Tardos, Algorithm Design, Pearson, 2006.
Course Content:
Topic
V. NP-Completeness
A. Polynomial time
B. Polynomial-time verification
C. NP-completeness and reducibility
D. NP-completeness proofs
E. NP-complete problems