Codechef – India's biggest Online Programming Battle

CodeChef is India’s biggest and aggressive online programming battlefield. I came to know about CodeChef, a couple of days back only, and no doubt, i am impressed.
Designed in a very elegant manner, using jQuery to the max and with cool color blends, the site offers a nice look and feel. Definitely better than other sites in similar area.

My first Impression with CodeChef.

As i created my account, and logged into the site. There were a couple of things that attracted my attention. The thing that i really liked was live stats. The site gives you live stats of the coders trying to get into problem solving and their result. This creates an adrenaline rush, and you are tempted to do something.

Most of the top coders on this site are from premier Indian Institutes like IIT, IISc and others. You can see the real names of people instead of their hax0r names. This is somewhat non-traditional. Traditionally, programmers all over the world have been known by their IRC nicks only. So, if you see someone over coding arena with the nick ‘pranny’, you can very well assume that his IRC nick is ‘pranny’.

The site offers a wide range of programming languages, from LISP to Java. However, if you watch closely the maximum number of entries come from C++, then comes Java. As per my observation, i have not seen a single entry in Python (my favorite). So, if you are a python enthusiastic, there is lot scope for you.

The April challenge

The April challenge is about to come. For more details log onto CodeChef and see for yourself.


Practise for TopCoder and Google Code Jam

In my opinion, the best place to practise for TopCoder and Google Code Jam is to start off with CodeChef. The easy level practise problems, should be completed accurately and well within time. The medium difficulty ones are good and the difficult ones do require brain.

If you are needing any help with Codechef, you can contact their help section at http://www.codechef.com/help/

What skills an undergraduate should have

I am a student in my 4th and final year of Computer Science and Engineering, at a university in Pune, India. Way back in 2004, when i joined this university, i had some programming skills in C++ and C. Needless to say, FoxPro and SQLs were also taught to me, which i never tried to remember. As i am about to complete my bachelors in June this year, i have thought a lot over the education policy and what we are taught. Here i present a brief analysis of what i feel.

During my First Year of engineering we were supposed to be jack of all trades. And the university made this sure, by imposing us to study elementary Mechanical Engineering, Civil Engineering, Chemical Engineering, Electrical and Electronics Engineering and Engineering Graphics. As far as my core subjects were concerned, i was taught C (no C++) and basics of Computers like binary addition and subtraction, the world wide web, OSI layers and all.

In my second year of engineering, electrical and electronics was also present along with few management subjects and but of course my core subjects like Data Structures and Digital Logic design. But it was not before my third year that i started to get the feel of a CS grad. We were taught COBOL, Intel 8085/86 ASM, Operating Systems, Theory of Computation and others. Finally in my final year, we had advanced subjects like Computer Architectures and Networks with AI, Distributed Operating systems and others.

The course had been designed very well, perfect for any IT/ CS industry. However, i feel there should be some additions and deletions. Like for an instance, i don’t think there is a need to teach the basics of all branches of engineering, in my first year. We can start off with DSF and others right from the beginning.

As far as hands on Programming Languages and other technology is concerned, an average student possesses following skills.

Programming Languages :: C, C++, ASM, COBOL, VB, HTML, SQL
Operating Systems :: and product of Microsoft from Windows 95 to Windows 2000

However, as per the needs to today’s technology and industry, i think an average undergrad student should possess following skills.

Programming Languages :: C, C++, HTML, Java, JavaScript, Perl/ Python, VB/VC.NET
Operating System :: Linux/UNIX, Windows XP, Vista

In above, i have never mentioned any DBMS skills like SQL, Oracle and other concepts of data warehousing or data mining and others, possibly because i personally am not much interested in those.

My skills include C, C++, Python, JS, Oracle SQL but i am still trying to think what is the technology of future and the greatest question “As an undergrad, what skills should I be trying to attain now to further my employability in the future?”