Design and Analysis of Algorithms
- Free
- No certificate
6.046J is MIT's intermediate algorithms course, and the spring 2015 edition taught by Erik Demaine, Srini Devadas and Nancy Lynch is fully recorded on OpenCourseWare. It assumes you can already analyse simple algorithms and data structures at the level of 6.006, and concentrates on techniques for designing efficient algorithms and analysing sophisticated ones. Listed topics are divide-and-conquer, randomisation, dynamic programming, greedy algorithms, incremental improvement, complexity and cryptography. The twenty-three lectures move from interval scheduling and divide-and-conquer examples such as convex hull, median finding, the FFT and van Emde Boas trees, through amortised analysis, randomised algorithms including skip lists and universal hashing, range trees, advanced dynamic programming, minimum spanning trees, max-flow and matching, linear programming, P versus NP and reductions, approximation and fixed-parameter algorithms, synchronous and asynchronous distributed algorithms, hash functions and encryption, and cache-oblivious algorithms.
Recitation videos and notes accompany the lectures, and the site includes lecture notes, problem sets with solutions, and exams with solutions, plus instructor insights. The course objectives state that students should be able to write rigorous correctness proofs and synthesise efficient algorithms for engineering situations. Everything is free under a Creative Commons licence; no account or certificate.
What you’ll learn
- Argue the correctness of algorithms with inductive proofs and invariants
- Analyse worst-case running times with asymptotic analysis
- Design divide-and-conquer, dynamic programming and greedy algorithms and solve their recurrences
- Use randomisation, amortised analysis and data structure augmentation
- Apply network flow, linear programming and reductions
- Recognise NP-completeness and use approximation and fixed-parameter algorithms
Who it’s for
Students who have completed an introductory algorithms course and want the design-paradigm and complexity material that follows; too advanced as a first algorithms course.
Source: MIT Open Learning (opens in a new tab) · Verified · Report a change
More free MIT courses
Every MIT course we have verified, with cost and certificate terms compared.
Computer ScienceAll free computer science courses
Free and free-to-audit computer science courses from every provider, ranked.