In this era of internet there is continuous connectivity between people and constant exchange of knowledge and wisdom all around. I just want to be a tiny part of it to be able to make a big change in the society someday.
On multiple ocassions I searched the internet to find roadmap for learning different skills in multiple disciplines of computer science. This kind of exposure is really important for a freshman in college who are often confused by the overwhelmingly large number of disciplines in Computer Science. There is really big confusion in deciding what they should do in their college and on what topics should they invest most of their time. In this post I'll discuss what's the best way to spend your time according to me so that at the end of the freshmen year you are not left with any "I should have..."
1. Switch to Linux
This is the first thing you should do after joining college, if you really want to learn and explore the stuff then make some sacrifice of windows interface and shift to a less attractive but powerful Linux. You can get started with it by dual booting your machine in Ubuntu.
2. Learn a Programming language
Start with a basic programming language, it can be either C or C++(suggested). No matter how outdated you think these languages are but once you have gained a good fundamental knowledge of these languages you can easily shift to high level languages like Python or Java. Don't wait for your profs. to start teaching (bcoz they never gonna do), there are already tons of resources available online which you can use to learn any programming language.
3. Start solving problems
Now when you have understood the basic fundamentals of language, it's time to start solving problems in it. Get yourself registered on an online judge preferably Hackerrank and start solving basic implementation problems.
By this time you'll notice that why native CPP is not sufficient to solve problems on OJs so it's time to master STL through Topcoder tutorials. Once you have gained enough confidence in solving problems shift to Hackerearth or Codechef and start participating in online constests to master your skills.
4. Build some Projects
The best way to master any programming language is by doing some real life projects in it. If you are from CPP/Python background then you have plenty of options available, like try learning OpenCV library for image processing or QT/Tkinter for making GUI applications and make some cool projects with it. Here's a list of some interesting projects which you should give a try.
5. Learn about GIT
Learning git is the next most important thing. GIT is a version control system that helps you maintain your codebase properly. As for now you can consider GIT as your google drive where you can place your code but it also helps to keep track of the commits which you made to your codebase from time to time. Till now you have developed a project and have solved decent number problems, so it's time to start pushing (uploading) your code to Github so that other people can also see and contribute to your projects. A really simple tutorial can be found here You don't need to learn them all just couple of commands are enough to get your work done.

6. Explore different disciplines
It is time to explore all the different ideas and topics that make up computer science so interesting. If you have followed all the steps till here properly then you must have gained enough skills to implement any idea in code without much efforts. You can have a look at some of the most popular domains–
Learn about them and build at least 2-3 projects around the domain you find interesting which you can showcase in your portfolio.
- Web Development
- Mobile application development
- Image Processing
- Scripting and Automation
- Data Science (not suggested)
7. Contribute to Open Source projects
By this time you have gained enough skills to start contributing to open source projects. Explore github and find project which matches your interest, read their documentation and look if you can fix some issues or add a new feature to it. Always remember no contribution is small, even if you just fix some typo or added a brand new feature to it.
Each contribution matters!If you enjoy contributing in open source projects, then don't miss the opportunity to try for GSOC. You have plenty of time in your freshman year so even if you don't make it through, then also you'll get to learn alot about how actual software development process works.
8. Maintain a decent GPA
This is the first thing which your potential recruiter sees when you apply for an internship or even for a full time role, if a student has a good GPA then it shows that how consistent he was throughout his academics and he'll put equal efforts during his time at job also.
CGPA is not just a number it’s a cash. The more you have, the more are the opportunities
9. Explore as much as you can
The best thing about Computer Science is the variety of disciplines it has. Nobody can master all in just four yrs of undergrad but you should never stop exploring. Don't limit yourself to just your college, meet and connect with students from other universities around the globe, learn from them and make the world's knowledge grow.
Not all classrooms have four walls and computer science is one such class with no limitations, so never stop exploring.
10. Decide what you find interesting
Once you have followed all of the above steps, you are self sustainable. Now you know that what excites you the most and what you love doing. So what next, just resarch and explore more about that domain and start hustling.
You don't need to be jack of all, just master of one is enough!