Answer by Apurv Nagar:
Congratulations that you have finally found out that you like coding and that you want to learn programming 🙂
In this answer I will only focus on, “How can you make the best use of 6-8 months to learn coding”? I will not give you silly advices on whether you should quit your job or not as that advice has not been asked for in the question.
Here it goes:-
A. What you need to learn:
The first thing that you would want to do is learn some programming languages. Now in 2015 there are many programming languages. I would recommend you to learn the fundamentals of these languages –
1) C – Will give you a deep understanding of what is actually going on in your system.
2) Java – OOP.
3) Python scripting – An easy language to learn but packs a lot of power. It has an active community is being used by major corporations.
Also I encourage you to learn command line interface and Linux; they will definitely help you (no harm).
You have stated that you want to learn algorithms. Now algorithms itself is a huge and pretty vast topic. To get started you should learn some basic algorithms and concepts which will broaden your mental horizon:
1) Gauss-Legendre algorithm.
2) Sieve of Eratosthenes.
7) Searching and Sorting – Binary Search, Linear Search, quick sort, merge sort, heap sort.
8) Hashing – Learn hash functions.
10) Hungrian algorithm.
11) Bellman-Ford algorithm.
12) Convex hull
13) Graph problems
14) String problems
when you’re learning an algorithm make sure that you understand well and are able to implement the algorithm.
Also I would recommend you to learn and understand some basic methods that are used over and over with algorithms (they will make your understanding of algorithms stronger):-
1) Dynamic programming
2) Brute Force
3) Greedy programming
B. Where to learn:-
So there are lots of resources on the web to learn programming and algorithms. I would recommend you:-
1) Codecademy – Good for learning command line and python basics.
2) Udacity – Java basics and Python basics.
3) Learn C – C programming basics.
1) The C Programming Language – C
2) Introducing Python by Bill Lubanovic – Python
3) Head First Java – Java.
1) Try the algorithms course on KhanAcademy.
2) Introduction to Algorithms Course on Udacity.
The best way to learn how to program is by doing, and it is highly recommended to try stuff out. My high school computer teacher always used to say that many naughty children are good at programming, as they always make the changes in the code that the teacher has asked them not to make – they learn the real functioning – they learn by doing and so should you.
For learning algorithms try practicing on online judges:-
1) Timus Online Judge – try around 100 problems.
2) SPOJ – Try around 100 problems.
3) Codeforces – take part in teh competitions.
So, first learn a programming language, learn the concepts, dive into algorithms, understand algorithms and implement them, practice – Congo!
You should probably spend 2 months in learning programming languages, 4 months for learning new programming concepts, techniques, algorithms (and implementing them in a programming language), etc. and finally solving some problems in around 2 months.
Hope this helps,