Inclusion of competitive programming at IIIT-Delhi

Thursday, December 31, 2015

About

Indraprastha Institute of Information Technology Delhi, was created as a State University by an act of Delhi Government (The IIIT Delhi Act, 2007) empowering it to do research and development and grant degrees. It was officially established on 10th June, 2008.

 

Inception of academic programs and a change in admission criteria:

The institute began with its first batch of 60 B.Tech students in 2008 and admissions were based on the student’s performance in the JEE (Mains) examination. In 2010, IIIT Delhi started its M.Tech program with an objective to train students to become industry professionals or pursue a career in research. Both of these career paths require a sound knowledge of programming which can be judged through a programming test. In order to take this thought forward, few changes were incorporated in the M.Tech admission procedure where the applicants had to give an offline programming test in addition to GATE.

In 2014, instead of an offline programming test, the score of the applicant in the Long Programming Challenge of CodeChef(a non-profit educational initiative by Directi) was considered for the M.Tech selection procedure. It brought IIIT Delhi close to attaining its goal by encouraging a larger number of students across India to apply for its Master’s degree as the programming test was made online. The process was a success and benefited the students as well as the institute. The former by motivating them to do better quality of programming and the latter by providing them candidates with a proven level of programming skill.

On similar lines, to encourage budding programmers, changes were made to the admission process for B.Techwhere bonus points were given to the candidates who showed their excellence in Olympiads (like INOI) and other school programming contests (like ProCon Junior).

 

Initiatives taken by IIIT Delhi to promote programming

 

Inception of Foobar, a student-run programming club of IIIT Delhi           

In order to further carry out its mission to motivate budding engineers to become outstanding problem solvers, a vibrant student programming club ‘FooBar’ was established in September 2013. The club’s aim is to promote and improve the overall programming skills of students in IIIT Delhi and their performance in prestigious contests like ACM ICPC(the ‘Olympics of Programming’). The club brings interested people together, so that they may hone their programming skills.

FooBar has provided various opportunities for student programmers to grow by organizing programming contests like ProSort, ProSort Junior, and ProCon. It has also started CodeClasses- a series of lectures to help them get started with competitive programming. These lectures focus on useful and important concepts and problem solving strategies, with nifty tricks thrown in here and there. At least one session (contest/CodeClass) is organized every week. In addition, it also conducts some sessions to help students prepare for the placements.

FooBar is also associated with Directi/Codechef, HackerRank and HackerEarth.

External activities

Over the years, in addition to internal activities, IIIT-Delhi has also put increasing efforts into promoting programming among school students. This is to take forward the very important cause of creating interest and awareness among students early on in school. The activities are largely student driven; they also provide IIIT-Delhi students an exposure to teaching, problem setting and organizing events. During Esya, IIIT-Delhi’s technical festival, students of IIIT-Delhi conduct workshops on competitive programming in many schools across Delhi and NCR.

Inception of ProCon Junior for school students

In order to encourage school kids to code, a junior programming challenge - ProCon Junior, was launched in the year 2011 and later associated with the ‘CodeChef for Schools’ in the year 2013. ProCon Junior has undergone major evolution since its launch in 2011. It is now no longer limited to 11th and 12th grade students, but open to all school students to participate, and has now become a nationwide contest with students from all across India participating in the online prelims. It sees a participation from at least 500 school students – perhaps the second-highest in any programming contest held in India for schools.

Indian National Olympiad in Informatics (INOI) Preparatory workshop

In 2014, for the first time, IIIT Delhi in collaboration with IARCS, CodeChef for Schools and IIT Delhiconducted 5-week long workshop for school studentsto help them prepare for the Indian National Olympiad in Informatics, which is the qualification contest for International Informatics Olympiad. Students and faculty members of IIIT Delhi and IIT Delhi trained the students during the workshop and exposed them to the world of competitive programming, algorithms and data structures. Out of the 30 people who cleared INOI and were selected for the IOI Training Camp-2015, 7 had attended the workshop at IIIT Delhi, with one of them making it to the IOI team as well and winning a bronze medal for India at IOI 2015. This is a superlative achievement and a huge contribution to the young student community. This workshop was organized again this year, with students from outside NCR region (like Agra, Dehradun, West Bengal, Nagpur, etc.) also participating.

Inclusion of Competitive Programming course in winter and summer semesters

IIIT Delhi further strengthened the culture of programming among its students by offering a Competitive Programming Coursein its Winter Semester 2014. The objective was to improve students’ ability to solve problems using knowledge of programming, algorithms and data structures as well as their preparedness for participating in programming contests. The 2-credit Competitive Programming Course was offered to its 3rd and 4th year B.Tech students. In this course students had to primarily participate in coding contests, discuss problems and solution approaches in class and read material that helps do better in the contests. With its success, a longer 2 credit Competitive Programming summer semester course was started in May 2015.

The summer semester course was a great success, and saw many students enrolling. The overall increase in participation and improvement in performance of IIIT-Delhi students in Codechef Long Challenges as compared to previous years is an indication of how this course helped promote competitive programming.

For reference, the implementation details of the summer term course along with feedback survey have been added to the end of the document.

Some stats for comparison are given below. They indicate the increase in interest and efforts put in by students compared to last year.

Summer 2014:

May 14 Long Challenge (5009 participants):

0 in top 100

9 in top 500

June 14 Long Challenge (5842 participants):

0 in top 100

1 in top 500

July 14 Long Challenge (5183 participants):

0 in top 100

1 in top 500

 

Summer 2015 (During the course):

May 15 Long Challenge (4783 participants):

3 in top 100

27 in top 500

June 15 Long Challenge (6006 participants):

2 in top 100

18 in top 500

July 15 Long Challenge (4789 participants):

6 in top 100

23 in top 500

Benefits in the larger scheme of things

The level of programming skills at IIIT Delhi has definitely gone up by the inclusion of competitive programming in their B.Tech and M.Tech curriculum. This had led to more students becoming well acquainted with major programming languages as well as language-agnostic skills like data structures and algorithms, problem solving strategies and debugging. By being exposed to so many contests, students have learned to write efficient and correct code in the first attempt.
This prepares them well for a high level job in the industry, as companies look for exactly these type of candidates. Hence unsurprisingly the placements have also improved. Big players like Google, Microsoft, IBM, Amazon, Works Applications, Directi hire students through campus placements. The initiative has been the key in providing a three-way benefit to the students, the Institute, and the recruiters.

Implementation Details: CPP101 - Competitive Programming, Summer Term 2015

The course structure that was floated to students before the course started is attached below for reference:

Pre-requisite:Data Structure and Algorithms.

Post Conditions:After this course: (i) The students’ ability to solve problems using knowledge of programming, algorithms, and data structures will improve, (ii) students’ preparedness for participating in programming contests will improve.

Course Description: In this course, students will primarily participate in coding contests, and read material that will help strengthen their problem solving skills for these contests. This course will be offered during the summer semester, and will be open to all students of 1st and 2nd year, though it is expected that students will take it normally after their 1st year. In the course, students will take part in 3 monthly contests of CodeChef during the summer. After each contest, students are expected to study alternate solutions for the problems they have done, and solutions of problems they did not do. Students will also have to self study specific chapters of the textbook.

Course Organization:

  • The course will start in May, and students will have to participate in the CodeChef’s monthly long contests in May, June, and July (typically starts on 1st Friday of every month).
  • Students will have to do these contests in Python, C/C++ or Java programming languages.
  • Students will have to study themselves specific chapters of the textbook: “The Algorithm Design Manual” by Steve Skiena.
  • An exam will be conducted at the start of the Monsoon semester, in which students will be asked questions from the book or on the advanced problems of the three long contests on CodeChef.
  • Structure of the exam: One hour paper-and-pencil problem solving using programs, and a 2-hour coding contest which will be hosted by Teaching Assistants.

Operational Details:

  • Two senior BTech/MTech/PhD students will be assigned as student-instructors, who will work under the overall supervision of a faculty member. These student-instructors will manage backpack and monitor activity on it, and fetch data (plagiarism report and ranking) from CodeChef for grading.
  • The final exam (programming contest) will be organized by FooBar - problems to be selected by student-instructors in consultation with the faculty advisor.
  • The final exam (paper) will be designed by the student-instructors in consultation with the faculty supervisor.
  • Final grades to be finalized by faculty member.