When you are developping software every day, knowing about existing algorithms as well as discovering new ways to solve problems can greatly enhance your productivity. Though I already had some knowledge - from what I learnt at school as well as my experience - I decided to follow this free coursera course about algorithms.
This is a 6 weeks course. As most coursera classes, it is composed of videos, quizzes and programming assignments (automatically checked online). Completing all this took me around 4 hours a week ; about 1 hour and a half watching videos, and 2 hours and half answering quizzes and programming assignments.
- Merge Sort
- Asymptotic Notation
- Guiding Principles of Algorithm Analysis
- Divide & Conquer Algorithms
- Master Method
- Final Thoughts on Sorting & Searching
- Introduction to Graph Algorithms: Graph Representation & Minimum Cuts in Fraphs
- Graph Search: Breadth-First Search, Depth-First Search
- Applications: Topological Sort, Connected Components
- Dijkstra's Shortest-Path Algorithm
- Data structures and how to use them
- Binary Search Trees
- Balanced BSTs
- Hash Tables: Applications and Implementation
- Bloom Filters
Though I already had a background in this area, I don't regret taking this course. I discovered some concepts that I put into practice on programming exercices. This training was interesting both for real life programming and TopCoder competitions.