# Stanford - coursera: Algorithms Part 1

## Introduction

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.

## Syllabus

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.

### Week 1

- Introduction
- Merge Sort
- Asymptotic Notation
- Guiding Principles of Algorithm Analysis
- Divide & Conquer Algorithms

### Week 2

- Master Method
- QuickSort

### Week 3

- Final Thoughts on Sorting & Searching
- Introduction to Graph Algorithms: Graph Representation & Minimum Cuts in Fraphs

### Week 4

- Graph Search: Breadth-First Search, Depth-First Search
- Applications: Topological Sort, Connected Components

### Week 5

- Dijkstra's Shortest-Path Algorithm
- Data structures and how to use them
- Heaps
- Binary Search Trees
- Balanced BSTs

### Week 6

- Hash Tables: Applications and Implementation
- Bloom Filters

## Feedback

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.