Finding the Holy-Grail
Wondering what the title really means? I wouldn’t keep that as a suspense.
I felt that many people are in doubt of what they can do — other than regular course-work, which may improve them. Surely, the majority of the people reading this have done their fare share of competitive programming, and it’s the time to go beyond it, to switch from DFS to BFS!
This answer may not be the perfect destination to all your questions, but it would hopefully increase your search space of options. Also, I myself haven’t explored all of the options listed, so please correct me in the comments in case of any mistakes.
Points to be noted before reading:
- Bear with my bad English.
- Things stated are based on my personal opinion and hence may be biased.
- There are enough guides on the internet you can go through. I won’t be trying to put an old wine in a new bottle.
Why? Why not only competitive programming?
No doubt competitive programming is one of best activities one can do. Having said that, in almost any internship/job process you should have an upper hand in programming.
It is great for building your computer science foundation, improving your thinking process and giving clarity to your thoughts. It is a must but isn’t everything — the earlier you know the better for you. You may get into a company through it, but might not really grow as an engineer. Being CS students, we must be focused on acquiring as many skills as possible before graduation.
But when shall I start by BFS?
In my opinion if you are able to solve 5/10 problems in CodeChef long or 3/5 in CodeForces quickly, you have gained sufficient knowledge set to start other things in parallel to competitive programming.
Finally this is list of things which one may try exploring. The items are in a random order and not based on any priority/preference.
The homepage tells what it is about, doesn’t it? In short, Kaggle is a platform for data science competitions. The simplest of questions start from binary classification, regression, to real life unsolved problems (and competitions to win!).
Getting started link
2. OpenAI Gym
It is an open-source project which provides a simple interface to a growing collection of reinforcement learning tasks. You can develop and compare your reinforcement learning algorithms with everyone around the globe and improve.
Getting started link
3. OpenAI Universe
Universe allows anyone to train and evaluate AI agents on an extremely wide range of real-time, complex environments. They have some great collections in form of flash, world of bits and PC games. While the internet category is new and have one environment ready to play online with other players.
Getting started link
4. Google Summer of Code
You have listened about it earlier haven’t you?
With the GSoC season coming within few days, it might be a good idea to get involved in. I am not really saying GSoC season because it involves — $$$, BUT due to few of many reasons:
- Mentor availability for your project, the interaction with some of best developers out their is invaluable.
- Learning about SDLC, right from understanding requirements and writing proposals.
- and a lot more… :)
5. Source Code Reading
Well, this is what I really want to do for weeks. It isn’t always about coding yourself but to read the code. It’s about standing on the shoulders of the giants. This consists of stalking the trending GitHub repositories & hacker news. Get in touch with what people around the globe are doing and how! Read the source code, learn more on different technologies and expand your knowledge.
6. Mobile Development (Android)
No doubt we are living in a mobile generation, and products are coming up with the motto — “Mobile First”. So why not learn it? Learning Android is not as tough as you think.
7. Startup / Own open source project
Many a times we think about ideas! Ideas if were present would have made our life easier. So why not implement one yourself? Okay, I know starting a startup and open source project are not similar things, but for the moment let them be the same.
Think about developing something maybe as minor as a chrome extension to remove these annoying Trash Doves?
Based on your idea you can figure it out, if it is big enough for creating a startup, or maybe an open source project for other people?
PS: Big things can be open source too. Else, you might have not been using Linux till now :P
In the end I would like to conclude with a message:
Start doing BFS and find your real interest, because if not now, then when?!
Credits: Ishit Mehta for contributing ideas to the list and for amazing title.