Basic concepts: algorithms, computing models, computability, complexity.
Analysis of algorithms: recurrences, asymptotic growth of functions.
Sorting: lower bounds, optimal algorithms, heaps, priority queues.
Algorithms in graphs: breadth-first and depth-first search, connectivity, connected components, generating trees.
Algorithms in mathematics: polynomials, FFT, modular arithmetic, primality tests, RSA encryption.
Geometric algorithms: convex closure, point location, segment intersection, nearest pair, minimum circle, polygon triangulation, point triangulation. NP-complete problems.
Reference:
THOMAS H. CORMEN, CHARLES E. LEISERSON, RONALD L. – Introduction to Algorithms, Third Edition. Rivest and Clifford Stein MIT Press, 2009 ISBN-10: 0-262-03384-4 ISBN-13: 978-0-262-03384-8.
* Basic syllabus. The teacher has the autonomy to make any changes.