Software Engineering Roadmap
By the end of the first phase, you would have certainly completed a basic programming course. For your second phase, you should aim for a course in Probability and Statistics. Almost all colleges offer such courses and you should enrol in the course offered by your institute. You can choose to sit through the course. But definitely take a probability class early in your curriculum. The course offered by MIT OCW is quite good.
Taking probability class will also help you reinforce some of your linear algebra concepts which are important for many CS courses. Some may argue about the need for a probability class. However, you should note that every good student takes at least 1 course in Probability and Statistics. The concepts taught in Probability and Statistics are extremely useful from both learning and application point of view. The concepts are widely applicable in Machine Learning - in case you want to build your career in the same.
Once you’ve completed the course on Probability and Statistics, you should aim to take the following 2 courses:
Data structures and algorithms is a course without which you cannot proceed ahead in computer science. It is a fundamental course and every student must take one such course.
This course will be slightly difficult. It is highly technical and even the best students get bowled when challenging data structures and algorithms problems are thrown. This course will literally be a test of your patience and so, be patient. If you are able to complete this course, you will be 50% closer to your goal.
The crux of Computer Science lies in the ability to see problems from a technical angle and come up with solutions. This is exactly what you’d get to learn as a part of Data Structures and Algorithms course and therefore, it is extremely important that you take this course seriously in order to develop a successful career as a Software Engineer.
Maths lies at the heart of Computer Science and Discrete mathematics is a course that teaches you mathematics for computer science. You will be studying mathematical induction, combinatorics and other stuff. The course is one of the most fundamental and most important courses that you’d take.
Here are the resources we would strongly recommend:
Throughout your 2nd Phase of learning, keep in mind - write as much code as you can. Unless you write code, you won’t learn. Try to implement everything you learn in Data structures class. Knowing the concepts if good. Also knowing how to implement them is great.
For college students, the 2nd phase would usually last during the 2nd year of college. For working professionals, this phase should take a couple of months, typically 2 - 4 months, depending on your current level and the amount of time you can commit to learning new things.