These are the steps you should follow if you are interested in getting into software engineering. If you are only interested in revising the topics for your job search or placement preparation, feel free to skip the things you already know. Any undergrad or grad in their last semester should already have knowledge of all the topics mentioned below. Thus, it should not take more than 3-4 months to revise all these topics.
For individuals just starting out, i want to emphasize that Computer Science is a 4 year degree and it is probably not possible to learn, understand, and develop the logic to actually code in 3-4 months. I am not trying to discourage, instead, I want you to know the truth before you start putting the efforts.
My goal is to share what I have learnt, to help you prepare and transition in the field of Computer Science and start your Software Engineer Journey.
a) Python
b) Java
c) C++
My personal recommendation would be either of Java or C++. Python is an easy language compared to the other two. Also, you will eventually learn Python because of its omnipresence in every field.
C++ and Java have are more closer to actual coding and you will learn a lot of CS knowledge if you learn it properly.
Note: You do not need to completely master the language before you move on to the next steps. What you should target is the ability to convert your logic into a code in your prefered language.
Some Links to learn the languages:
https://www.codecademy.com/catalog/language/python
Pick up any tutorial online.
Or
The below courses have good reviews and have been used by thousands of individuals
https://www.codecademy.com/learn/learn-c-plus-plus
https://www.codecademy.com/learn/learn-java
It includes the below topics:
Algorithms and data structures
Encapsulation and resource management
Security, software engineering, and web development.
Link to the course:
https://pll.harvard.edu/course/cs50-introduction-computer-science
Note, this is a very basic course and you will require way more knowledge that what is covered in this course.
Now you would think that you already covered this in the course. To your surprise, you would realize that what has been taught is just the scratch
Take a good look at the Google Algorithms course mentioned below:
https://techdevguide.withgoogle.com/paths/data-structures-and-algorithms/
Don’t forget to understand Big-O notation for the operations performed on the data structures.
If you just want to revise, i have the perfect thing for you, that provides good insights to algorithms and some common techniques for each data structures usually asked in the interviews
Link to the official website: ( This requires signup to that website).
https://courses.30dayscoding.com/products/653b765e382eb45b17092ffe?dgps_s=ucpd&dgps_t=cp_u
Note i am not affiliated to any person from that website. I just found that revision guide to be good.
There is a great playlist already available on youtube. Mentioning the link below:
https://www.youtube.com/watch?v=_TpOHMCODXo&list=PLDzeHZWIZsTr3nwuTegHLa2qlI81QweYG
This is a very succint guide to provide you decent knowledge to know everything about Operating System and how it works
Why you should learn this?
You can only write efficient code, if you know what really happens when you run your code.
You can create a website following a tutorial and you may even be able successfully complete it. However, the most important requirement for any systems is efficiency and I may be wrong, but inorder to write efficient code, you need to know what is happening inside.
The 3 platforms you should follow are:
LeetCode
NeetCode: Alternative to LeetCode which provides free access to all the premium problems on LeetCode
GeeksForGeeks: This is not a playground, but it also has great blogs about different algorithms and interview experiences
Learn Topicwise:
Don’t just randomly start solving the easy questions that comes up on the list. This will not help you much.
Instead, everyday select a Data Structure and associated algorithm which you found interesting. Do multiple questions of the same types till you are comfortable. ( Everyone has their own learning curve and you should practive problems till you at least have some grip on the algorithm)
Now you have the knowledge about the foundations of Software Development. This is where you need to decide, which area you are interested in.
6**) Select a field you are interested in and create projects**
Now this is very open ended. You may be interested in Web Development, App Development, AI, Database Engineering, Data Analysis. All of these fields require a separate roadmaps of their own.
If you are interested in Backend Development, the please take a look at the roadmap below which I followed in my Software Engineerin Journey