Maiden Speech
For me software craftsmanship includes the notion of  mastering algorithms. I want to get better at mastering algorithms_. What does the community think will help me improve the time or space efficiency of my program.

Learning Plan

I am going to focus on different topics in different weeks. For each topics, I plan:

  1. Identify different algorithm related to this topics. 
  2. Write a basic version of related algorithms. 
  3. Complete at least 10 online testing problems related to this algorithms. 
  4. //Think of at least 1 application of this topics, and finish the applications. The application can be a extension of the previous application. 
Here are the topics I am going to focus: 

  1. DFS
  2. BFS
  3. topological sort
  4. strongly connected components
  5. minimum spanning trees
  6. single source shortest path
  7. all pair shortest path
  8. maximus flow
  1. Binary search Tree
  2. R-B tree
  3. B-trees
Data Structure
  1. Stack
  2. Queue
  3. Heap
  4. Linked List

For different topics, I have different level: 

  1. Array sorting and String Manipulation: 3
  2. Stacks and Queues: 2
  3. Graph: 2
  4. Tree: 2
  5. Dynamic Programming: 1
1) beginning, 2) developing, 3) competent, 4) advanced.