This is a graduate-level course in the design and analysis of algorithms. We study techniques for the design of algorithms (such as dynamic programming) and algorithms for fundamental problems (such as fast Fourier transform or FFT).
In addition, we study computational intractability, specifically, the theory of NP-completeness. The main topics covered in the course include: dynamic programming; divide and conquer, including FFT; randomized algorithms, including RSA cryptosystem and hashing using Bloom filters; graph algorithms; max-flow algorithms; linear programming; and NP-completeness.
Affiliate disclosure: Course Kingdom participates in affiliate programmes (including Udemy via the Cuelinks network). Some links on this page are affiliate links — if you click and enroll, we may earn a small commission at no extra cost to you. Learn more.