This is a extract of a document that our seniors shared with us two years ago.
The topic was What a CS undergrad should do to compete globally?.
What technology / topics you should be aware of at the end of 4 years?
- Web development frameworks
- Python / Django
- Twitter Bootstrap. This is infact a good way to learn how to write clean CSS design :), try it.
- Stanford projects
- Find out other projects as they are more organized and enrich knowledge
- Contribute to Stack Overflow. There are a lot of other website like stack-overflow for algorithms. Join them and contribute. Try to solve the questions people ask there.
- How to get maximum out of various interesting courses and ignoring the bad ones ( you yourself define your good/bad ones. Some of us liked the following courses. ):
- Operating Systems
- Computer Networks
- Advanced courses ( Advanced OS, Topics in Networks )
- Machine Learning
What should CS guys do in first year? –
- Get a good hang of C and C++ first by self learning and attempt problems on SPOJ/Codechef etc.
- Then in the 2nd year, they can start trying various areas (like coding, web/mobile dev, OS, Open source etc.) and find what interests them most.
- GitHub projects. Contribute to at least one open source project. Learn version control.
- Just go through linux kernel design once in your 4 year period. This should be done after/along with studying the operating systems course. You should use a virtual machine for testing the compiled kernel.
Some philosophy: Just remember whatever good work you do, you will find 10 people around you who can do 10 times better than the work you have done in lesser time. So be humble. Learn from your friends. The flow of knowledge should always be reciprocated, otherwise it get’s very boring for the teacher. So discuss with friends openly and try to tell them as much as you can, so that the discussion gets more encouraging. As I said, always take care that it should not become a student teacher discussion, because the guy who plays the role of teacher is not getting paid here :-). Also remember that there is no substitute to self study.
Another Alternative Plan :Build Up a strong programming background
- Learn C/C++
- It’s very rare that when you gonna go into industry you will get to write code in C/C++ but C/C++ makes the backbone of your programming skills. Also they will help you in your placements.
- Learn Python
- This is easy, fast, widely used language. Go for it, use it for solving programming problems there in Codechef, Spoj, Topcoder.
- Java/Csharp [ Optional ]
Getting to know various SDK/Frameworks around [ Only jump into this when u have strong programming background 🙂 ]
- Use projects allotted in the coursework as a place to use different sdk available.
- Some sdk to experiment with:
- Google App Engine
- iOS ( if you are an Apple Fan )
Ability to use SDK/Web services by reading documentation
This is very important, when you are in industry you are expected to learn new sdk and use them in your code. It is a skill how well you can understand the sdk reading the documentation. This comes from practice. Read and fail, read again and succeed.