Monday, July 29, 2013

I have a dream

I am no Martin Luther King, but I am going to borrow his line because I have a dream too.
 
One of my dream is to see my younger brothers and sisters studying in colleges go and win prestigious programming competitions and make a name for their Alma Maters and themselves. A decade and a half ago when I was studying, computers were very costly, there was no Google and certainly nobody in India at least regarded programming capabilities as a serious skill. Today things have changed.
 
Today, having good programming skills can open up a lot of doors for you. From simply earning a source of livelihood to catapulting you to fame, the possibilities are endless. This aligns very well with TCS' vision of promoting Programming-As-A-Sport. Am personally very grateful to TCS for allowing me to work on conducting CodeVita and taking the vision forward. And now that I have the opportunity, I want to create opportunities for all you youngsters that I never got when I was your age.
 
Conducting programming contests, that too on a national scale for a country like India (today its only-India but tomorrow the whole world might be our stage, who knows) is no mean task. Approximately 100K students are expected to appear for the contest in a span of 24 hrs. Supporting such large concurrency requires a lot of software engineering. Have you ever tried measure how much system resources are consumed when you compile your program, when you link and load the program and finally when you execute it? I bet, you will agree that the values are non-trivial. Now imagine thousands of programs from various participants being submitted to the system. Every second, hundreds of compilers need to be spawned to cater to these compilation and execution requests. Remember we are talking about 7 languages - C / C++ / Java / C# /Perl / Python / Ruby. Managing these requests within the constraints of available computing power requires lot of performance engineering of the whole software stack used to build the system.
 
TCS management has shown the good will to conduct this initiative and TCS engineers have created the platform. All that is now awaited is students such as yourselves to participate honourably in the contest. The contest is open book and internet-enabled. You are allowed to refer any electronic and paper resources, but we expect the participants to follow the Honour Code i.e. Participants MUST submit only their original work. Participants MUST also NOT discuss or expose the contest problems with anyone except their team mate.
 
Personally, I feel its a confluence of many factors that is making conducting such large scale talent identification possible. First and foremost is the initiative of the world-wide IT industry to tap and nurture talent right from the very beginning. Companies recognizes the importance of attracting talent into the industry and is collectively making efforts to improve industry-academia interfaces. Second is the technology maturity such as - Cloud Computing for making availability of resource on-demand a reality, Rise of open source and free technologies which can be used for conducting contest such as these; Realization of the fact that sound Programming skills are the basic foundation for a high-growth technology-oriented career path. Third is the fact that User-generated content and data has increased so alarmingly in last few years that even non-IT industries across the world now need Data engineering and Automation skills which are, again so dependent on programming skills.
 
So now that the second Season of CodeVita has gone live, take full advantage of the platform that you are being offered. Login to https://tcscodevita.com . Bring out the passionate programmer in you and may the best of you win. All the Best !!!

Saturday, July 27, 2013

CodeVita Practice Contests to begin on 29th July, 2013

Monday, 29th July TCS CodeVita 2013 website will be launched. Between 29th July to 10th Aug the site will run Practice contests. The following is true for Practice Contests


  1. Practice contests should be used by the participants to familiarize themselves with the UI of the Website.
  2. A list of compilers / interepreters / language versions supported by CodeVita platform is already made public. Participants should take the opportunity to test their software infrastructure like Compilers, Network Settings, Browser compatibility etc so that you are well-prepared for the day of contest (13th Aug 2013).
  3. The website has some new technology in form of Websockets for pushing notifications to participant browser. It is recommended to use latest versions of browsers like Chrome and FireFox for this functionality to be functional
  4. The Website has functionalities like Reports, Personalization (for configuring notifications to be received) and Feedback. These may or may not be made available in Practice Contests. If these are made available participants should explore these functionalities, especially the  different reports that are available to know how rest of the Competition is doing.
  5. College students, participating from their college premises may face issues in accessing modern functionality like Websocket push. If that is the case, participants should take up the issues with their Network Administrator.
  6. Access over general internet through ISPs like Tata, Reliance etc, from Home network or personal network devices, should not face any issues in accessing full functionality of the website.
  7. The site might be best viewed in a 1024 x 768 pixel resolution.
Best wishes to all the CodeVita participants !!!

Friday, July 26, 2013

The value of rules

Rules are an essential part of any competition. Rules level the field and try to make sure that whoever wins is the best player or the best team; the fastest, the strongest or the best problem solver, depending on your particular sport. Of course, this is only true if everyone plays by the rules. Unfortunately, even a fair team may win by playing with the rules, rather then simply paying by the rules.

The default rules of Mooshak, the programming contest management system I developed, are those of ICPC - the International Collegiate Programming Contests. The basic rule is quite simple. Wins the team that solves more problems. When several teams have an equal number of solved problems the winning team is the one with a lower cumulative time in all accepted problems. 


Since the ranking depends also on time, most teams would just submit their first untested version, hoping that it were correct. We all know this is a bad programming practice and would be an extra burden for contest management systems too. This is why in the ICPC rules a wrong answer has a penalty of 20 minutes.  Knowing this, teams think very carefully before submitting a potentially wrong answer.


Some years ago in an ICPC programming contest there was a team in second place. They needed another problem to win, but by submitting a wrong answer they risked a penalty. If neither them nor the team in third place had another accepted problem in those last few minutes they would be second. But they would not win the contest unless they had  another problem accepted.  

They finally decided to submit and it was a wrong answer. They continued to submit and they lost the second, and then they lost the third place too. Surprisingly, or maybe not, during the final ceremony they were more applauded than the team in the first place. I guess that most people in the audience realized that there are values more important then rules, and the courage to take risks is one of them. And a few people also realized that rules must follow values, and this is why today, in the ICPC rules, a penalty for a wrong answer is only effective when the problem gets an accepted answer. In the end, you cannot lose by trying to do better. 

Have this in mind every time you compete. CodeVita will have its own set of rules, not those of ICPC, to define who wins, but if you do your best you can be sure you will also be a winner.

Thursday, July 25, 2013

Keep it up CodeVita

I am simply amazed to see the expansion of CodeVita all across India. It is truly a talent search platform that is fair, scalable, and very very competitive. In the many years that I spent at TCS, I came to two major conclusions when it came to talent:
  • College marksheets do not necessarily reflect practical aptitude to excel
  • Resumes are often misleading, while searching for relevant talent
Let me delve on these points. I have seen many people with BCom, BSc, BE, and BTech degrees and with very average marksheets excelling in coding, scripting, setup and administration. What would take weeks for many of us with MS and PhD degrees, would be done in a matter of a few hours and days by these experts. While there is no denying that an MS or PhD education sharpens your analytic skills, being an underdog gives you the experience to combat any challenge without fear. On the other hand college toppers carry the burden of expectation that they need to excel wherever they go, which is not really justified.

Coming to the second point about resumes. Even today I see such greatly written resumes that I feel tempted to immediately call the candidate for interview. It beats me how people have mastered the art of creating facades. The reality is that for select positions we land up sifting through hundreds of resumes, calling dozens of people for interview, and land up choosing only one. If I correlate the winners with their resumes, I usually find that their resumes were modest and never made a show of what they did not know.

So what have these two conclusions got to do with CodeVita. The problem that we face in the IT industry is how to select the best person for a given job, given that lakhs of candidates are available through college hiring or lateral hiring. What is really required is a fair, repeatable, scalable, and extremely competitive platform to choose the best candidates. While marksheets and resumes can be used as additional criteria, it doesn't make sense to use them as the only filters during the selection process. 

I would like to encourage more and more college students to participate in CodeVita. It not only depicts your practical talent but also shows you where you really stand, and thereby goads you to work harder on your skills. I am waiting for the day when I see this becoming a platform for all practical IT skills across not only students but also professionals. There is no dearth of talent in India, and we need the right kind of platforms to bring out the talent.

Kudos to the TCS team led by Amol Khanapurkar for conceptualizing and implementing CodeVita. The progression from simple problem solving to gamification is an interesting twist that should surely make this year's CodeVita very very exciting. Amol and team are doing a terrific job and I wish them all the best!

Tuesday, July 23, 2013

CodeVita 2013 Participation Guidelines

Eligibility Criteria 

  • Current Students from Science and Engineering background completing studies in FY 14, 15 or 16.
  • Minimum age for participation is 18 years.

Participation Guidelines 
  • Students will have to Register on TCSL NextStep for taking part in the contest. A CTReference number is mandatory for participating in the contest.
  • Each team can have only two members.
  • Once Registration phase begins, all interested participants will be required to register for the contest on Campus Commune. Each registered participant will be receiving a unique secret code to take part in the contest. This code is of utmost importance to take part in the contest rounds and should not even be shared between teammates. The Secret code will also be a part of login credentials
  • Each team should choose a team name and the team leader. 
  • During registration, a participant may nominate self as the Team Leader and also nominate the team member(s). It is the responsibility of the Team Member(s) to "Accept" the nomination / invitation.
  • In case a Team Member rejects a nomination, the Team Leader will be able to send a new request to another registered participant from same institute to join the team.
  • The team will be formed only after all nominated members accept their nominations.
  • The Team Leader of each legitimate team will be the SPOC between the participating team and TCSL
  • The team can be from the same discipline or may be inter-disciplinary.
  • Team members have to be from same college / institute.
  • Teams have to remain the same throughout the contest. Swapping of member within teams is not allowed and will lead to disqualification of the respective team(s) from the contest.
  • The infrastructure/ software(s) required for compiling code shall be borne by the team or the institution they represent. 
  • Plagiarism is strictly prohibited. Online search engines / books may be used as reference, but copy pasting directly from the internet is highly discouraged.

Contest Structure

The contest will have 3 rounds of Coding with the 3rd and Final Round in a TCSL Office Location in India.

Guidelines to write Code:

  • Each participant (team member) is expected to code at all stages of the contest.
  • Participants can write their codes in any of the following languages Java, C, C++, C#, Perl, Python and Ruby 
  • Participants will have to arrange for compilers to compile their code.

For More Details: Log in to TCSL NextStep Portal --> Campus Commune

A quick look at last year ...

Before getting into talking about this year's Codevita I thought it would be fitting to make a mention of CodeVita 2012. In CodeVita 2012, only batch of FY 13 (last year students) were eligible to participate.
Following picture tells the story :



CodeVita 2012 Stats

Top ~269 teams advanced to Second round and Top 10 from round 2 moved to CodeVita Finals conducted at pristine location of TCS Sahyadri Park in Pune.


Finalists and members of organizing committee with TCS CTO K A Krishnan and Prof. Saharabuddhe

Prof. Sahasrabuddhe made an interesting observation last year. Out of 27k students, there were only 30 finalists. So the odds of making it to the Finals are 1:1000. If that was the case last year, imagine what can happen this year when batches of FY 14, 15 and 16 are eligible.
Approximately 4 Lakh students graduate from Engineering and Science backgrounds every year. Considering batches of 3 years, potentially 12 Lakh students are eligible to participate. Even if CodeVita 2013 manages to attract One-twelvefth of that, there will be a Lakh participants. The odds of making to the Finals then become 1:5000.
Only the best of the best and those with passion for programming will move forward. Darwin's Survival of the Fittest theory will be exemplified and in the whole process India's new star programmers will be born. Are you the one?

Monday, July 22, 2013

Welcome to CodeVita 2013



TCS launches second season of its flagship Programming Competition - CodeVita. There are a couple of notable changes since last year :
 
1) Participation is in teams of 2 unlike teams of 3 last year
2) Addition of new languages Perl, Python and Ruby
3) Broadening of the participation envelope to allow students from batches of FY14, FY15 and FY16

Registrations begin today (22nd July 2013) at 10 AM IST. Visit TCS NextStep portal for more details about the registration process. Registration ends (10th August 2013).

Main theme of CodeVita 2013 is Gamification, which is inline with TCS' desire to promote Programming-As-A-Sport. In due course of time I will write about Gamification in context of CodeVita 2013 means. Keep watching this space.

This unofficial website of CodeVita 2013 is also blessed by interest from stalwarts from TCS and friends of TCS. So this space will also be home to some of the exciting and inspiring articles on programming and related fields. Dont miss the action, be a part of it !!! 

Disclaimer:- The author works at TCS. This blog is NOT an official source of information about TCS CodeVita. Since the author is a passionate programmer and the source of action is so near to him, it is but natural for the author to talk about it. Is that not why people blog?