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:
Learning Plan
I am going to focus on different topics in different weeks. For each topics, I plan:
- Identify different algorithm related to this topics.
 - Write a basic version of related algorithms.
 - Complete at least 10 online testing problems related to this algorithms.
 - //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: 
Graph:
Graph:
- DFS
 - BFS
 - topological sort
 - strongly connected components
 - minimum spanning trees
 - single source shortest path
 - all pair shortest path
 - maximus flow
 
Tree:
- Binary search Tree
 - R-B tree
 - B-trees
 
Data Structure
- Stack
 - Queue
 - Heap
 - Linked List
 
Assessment
For different topics, I have different level: 
- Array sorting and String Manipulation: 3
 - Stacks and Queues: 2
 - Graph: 2
 - Tree: 2
 - Dynamic Programming: 1
 
1) beginning, 2) developing, 3) competent, 4) advanced.