What one could do in 4 years of undergraduate computer science education
I see many people doing awesome stuff every year but none inspiring juniors to follow their footsteps. This is my small attempt to get juniors to do something useful. Hope it has some impact!
I started off by wanting to chronicle what I have done in my four years so that it’ll be of use to people but decided against it-in today’s world people want information in an instant and sometimes people might take away the wrong message. So here’s what one could do-the essence of what I wanted to convey.
Another post will come sometime later-what not to do during computer science education. Mostly based on the exploits of the author and what he’s observed people around him do.
The single greatest question that is asked by everyone is “What can I do to become better?” So many people have asked me this over 3 years(and still continue to). I guess it is because lack of knowledge on what they could do(no imagination or simply short sighted perhaps). But of course, I’ve seen people repeating this question many times though they got good answers. Please pay attention to the answer you just got! It might be useful!
Anyway, I’m going to try and lay out a good plan for comp sci students in general(for the four years) but it’s very generic. This is just a base for you to build upon. Don’t take this verbatim-adapt it to suit yourself. And you’re free to choose something else that is not at all based on this plan-it’s just one pathway after all.
This also happens to be the guidance I wish I had received sometime early on in life and makes me want to go back to first year and redo stuff. Anyway-hope this helps someone!
Common to all semesters: don’t go home during vacations and weekends. Stay back at college! It’s a lot of fun! Don’t forget to study and get a good GPA. You have only one shot at it after all. Blog about whatever you learn-helps out a lot later on!
The short version
Learn Linux CLI and python(or any language).
Pick an open source organization(one that has participated in previous GSoC) and start contributing to them.
Become confident in say writing web apps, GUI apps and network apps and test cases for the same.
Apply for GSoC with the above organzation. Accepted-yaay! Rejected-still implement your idea or make some other contribution to the organization
Finish your summer project-GSoC or otherwise! Decide your pathway-research or industry. Work towards it. By now you should have an idea what to do. Start helping other juniors get started-1st and 2nd years students.
Do a GSoC project that is aligned to your plans after graduation. Implement a research idea or do some feature development stuff for an organization.
You’re probably well off and on the right track by now. Get more people onto the right track now. And keep working towards your future plan.
The long version:
You’re new so take a semester to understand the system and how it works. Convince yourself that you must beat the system but that isn’t an achievement. It’s not hard to do but not doing it means that you just suck. Keep a good GPA: above 8.5. Trust me-it’s really important. Learn the tricks of the trade and how to score marks and beat the system.
Join campus clubs for computer science-one that is active and of use to you. Talk to seniors, faculty etc-they can help you(but not always will be they be useful). It could be a FOSS club, programming club, python club, hacker club-any club where you learn stuff spending time there.
Or get a gang of friends and take Linux for a test driver. Stop using windows and use Linux. Learn a bit of python programming(or any langage you like)-it’ll help you in your C/C++ too! Don’t forget to study :D!
Note: Most of my advice is on python because I love python and primarily use it. It’s simple to learn too. I’m discovering that Java is good too. C++ would be great too I guess. It’s about choosing what is best for you I’d say.
Contact an open source organization(preferably one that has participated in GSoC previously) and tell them you would like to contribute to them. Tell them you’re a newbie-they’ll help out(don’t expect them to do magic when you’re not working at all-they will stop helping then.) You’ll probably have a mentor assigned-keep in touch with that person! Send weekly reports or something to show you’re working and interested in what you’re doing.
You’ll take a month or two to fix your first bug but keep at it. It’ll pay off surely! Or you could learn what more you can do with python such as writing desktop applications, network applications, web applications etc.
GSoC time! Keep contributing to your organization and after some 10-12 good bug fixes, ask your mentor for a GSoC idea. Start writing your application early(like around February or so) so you’ll get time to scrub it and polish it. Don’t forget to study :P!
Of course-you maybe accepted or rejected! If accepted, well awesome! Keep at it and finish the project-it’ll take you places. Don’t drop GSoC in the middle cos you’re lazy-talk to people about your choice before making decisions
If rejected, you’ve two options-implement your GSoC idea(unless someone else chose it) or do something else like learn how to write a web application using Django, GUI application using Qt/Gtk, network applications using something like twisted-just write some code that isn’t trivial. It’ll take you a long way. Preferably write code and contribute to an organization. Make sure you write test cases no matter what.
Your summer work(GSoC or otherwise) will last till mid of the semester probably. If you’re fed up with programming and want to do research, do so. It’s your choice really. But, if you’ve not made it to GSoC, do so-it’s better than interning at any company IMO during the summer unless it’s some place like Google of course :D. If you want to work, start preparing for interviews and more. Remember to do something too-study :P!
Start working on your final year project and do a good job in it! Keep preparing for the job interviews if you plan to work or start thinking about higher studies and start studying for the exams like GATE, GRE etc. Ah well you’re already studying so :). By now, you know what you want and what you don’t(another way of saying you don’t need me now :D).
Leave a comment if you have anything to say or ask or improve in this. Would appreciate it a lot! Thanks!