CCO - 00.2.01 - Design and Analysis of Algorithms

Amount of credits: 8
Total hours of theoretical classes: 60
Total hours of exercise classes, seminars or directed studies: 60

Objective

  • To enable the students to apply advanced algorithmic strategies to their projects
  • To empower students to analyze the correctness and performance of nontrivial algorithms
  • To allow students to consolidate algorithm design paradigms through various examples and demonstrations
  • To familiarize students with notions of computational complexity theory
  • To encourage students to evaluate which design techniques, algorithms, and data structures best suit each situation, problem, or application

Catalog Description

  • Asymptotic notation: O, Omega, and Theta
  • Algorithm design paradigms: principles, algorithms, and applications of divide-and-conquer, greedy algorithms, and dynamic programming
  • Graphs: traversals, shortest paths, flow, and contraction
  • NP-completeness: completeness, definition, and interpretation (P vs NP problem)
  • Approaches to deal with NP-Complete and NP-Hard problems

Main Bibliography

  1. T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduction to Algorithms, 3rd ed., McGraw-Hill, 2009. (T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduction to Algorithms, 3rd ed., McGraw-Hill, 2009.).
  2. R. Sedgewick, K. Wayne. Algorithms, 4th. ed., Addison-Wesley, 2011. (R. Sedgewick, K. Wayne. Algorithms, 4th. ed., Addison-Wesley, 2011.).
  3. Nivio Ziviani. Projeto de algoritmos: com implementações em Java e C++. 2. ed. São Paulo: Cengage Learning, 2011. (Nivio Ziviani. Projeto de algoritmos: com implementações em Java e C++. 2. ed. São Paulo: Cengage Learning, 2011.).