I have recently completed Coursera online course “Algorithms: Design and Analysis” (Part I) offered by Stanford University. Instructed by Tim Roughgarden, the course was well-structured and explained. Similar courses are offered to Stanford sophomore, junior, and senior-level computer science majors.
The main topics covered:
- asymptotic analysis
- divide and conquer algorithms
- sorting and searching
- basic randomized algorithms
- graph search
- shortest paths
- heaps
- search trees
- hash tables
Though it’s not mandatory to know or use a specific programming language (like C, Java, or Python) to complete the course, some familiarity with proofs, including proofs by induction and by contradiction, is required. For programming assignments I used Clojure, which is my favorite programming language at the moment. You can find the code for completed assignments in my repository on GitHub.
In general I enjoyed the course very much and highly recommend it to all practicing developers. Though for experienced developers some topics might not be new, but it’s a good refreshment of theoretical basics.