Hi,
The motivation for this post are many . I will mention a few.
- Startups have got smart and they need smart people. They have developed “ShowMeYourCode” attitude. And this is an awesome approach.
- Coding regularly helps build confidence. Which normal people lack.
- And finally, it’s AWESOME!
Coming to point!
I will provide few curated list of links which will help you to atleast get your hands dirty.
NOTE: Not a accurate list so suggestions welcome!
Problem Statement:
I want to learn algorithms and DataStructures so that it helps me build some confidence.
Step 1. Start with basic algorithms. (I have listed the links priority wise)
- http://www.geeksforgeeks.org/fundamentals-of-algorithms/
- http://www.codechef.com/wiki/tutorials
- http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=alg_index
- http://en.wikipedia.org/wiki/Introduction_to_Algorithms
Step 2: When you have build a tad amount confidence then start with
- http://www.hackerearth.com ( Start with college problems , solve around 50 problems and then jump to standard problems )
- http://www.codechef.com/
- http://www.spoj.pl/
Step 3: Advance to some more tough algorithms from geeksforgeeks.org (Step 1) according to your convenience and comfortability. IMPLEMENT THOSE!!!!
Step 4: Solve more tough problems on Online Judge from STEP 2.
Step 5: Compete in competitions on judges from STEP 2.
Step 6: Iterate! Iterate! Iterate
Step 7: Iterate more more and more!
So this will be my approach.
Few tips:
- Please take a pen and paper and sit. Don’t rely on doing calculations like a Sherlock
- Persist to get AC. A problem is not tough till it doesn’t depresses you!
- Read Code and read more of smart coders for all problems
- And finally, this is a process of not 1 day or 2 day but till the time you can solve a tough problem in one go.
Few Important links:
Programming languages:
- Python ( My personal fav! Don’t know which language to choose. Blindly go for this . See below for tutorials related to this)
- C++ ( Smart people’s award goes to this)
- JavaScript (Web learning a bonus with this)
My Favourite Python helpful tutorials
- The hard way: http://learnpythonthehardway.org/index
- Tutorial: http://docs.python.org/tutorial/
- Standard Library: http://docs.python.org/library/
- Cheat Sheet: http://www.addedbytes.com/cheat-sheets/python-cheat-sheet/
- Google’s Python Class:http://code.google.com/edu/languages/google-python-class/index.html
Advance Preparations:
Blog:
Few Other links:
- http://discuss.codechef.com/questions/48877/data-structures-and-algorithms
- http://discuss.codechef.com/questions/68830/some-algorithms
- http://discuss.codechef.com/questions/18752/what-are-the-must-known-algorithms-for-online-programming-contests
- http://theshayna.com/data-structures-and-algorithms-tutorials/
See this for more details
So, Here is an exhaustive list of a lifetime preparation. Do this and I will register your name as “Iron-man” officially in algos and ds ( I am serious)!
Happy Coding!