Course Description

This course describes the techniques for the design and analysis of efficient algorithms, giving emphasis on methods useful in practice. Topics include graph algorithms; divide-and-conquer algorithms and recurrences; dynamic programming; greedy algorithms; amortized analysis; network flow; randomized and approximation algorithms. 

Course Objectives

To know problem solving techniques
To understand techniques for the design and analysis of efficient algorithms
To be able to design algorithms for new problems with volume of data