IIIT- Allahabad is my alma mater. This was how programming was thought during the years I was there.

We have two programming courses in the first semester. Introduction to programming which covers C and Introduction to computers which covers the basic technologies. Each student is assigned a computer in the first week at IIIT-A. The students have to install a Linux OS of Instructors choice to the computer. When I was in first semester we used to have Mageia(Kudos if you have heard that OS before) but it’s Linux Mint now.

Course

The Introduction to programming course is very challenging to students who are new to programming. Students were instructed to use The C Programming Language by Brian Kernighan and Dennis Ritchie as the course book.

The introduction to computers course on the other hand was fun. We were taught how to use SSH, Unix, Command Line ,HTML, PHP etc. In one of the assignments students were given access to profile server in which they were asked to upload their personal website. This course was so much fun. We used to SSH (passwords were same initially for all students) into each other computers and try to shutdown and open random websites.

Assignments

The assignments were more like Codechef `long long` challenge. The instructor used to upload a new question in the portal every few days. The students have to submit the solution in the online Judge. There was also a rank list maintained throughout the entire semester which increased the fun / pressure even more. I still remember my friends (who don’t have laptops) rushing to the CC-3 labs in early mornings to submit solution to the new question which was added by the instructor late night.

Labs

We were allowed to code only in VIM and use gcc for compiling. Along with that the students were asked to follow the Linux Kernel coding style. Each line of code with a violation of the rules had 4% penalty in marks. We used to re check the code for indentation errors multiple times before submitting for evaluation. Some of the students even implemented libraries that lints automatically to the style guide of the professor. We used to have a lab exam every 2 week in my first year. 3 questions would be given in which the students can attempt any two. After the lab exam is over the students are requested to handle the code after taking the MD5 hash.

The introduction to computers course on the other hand was liberal. We were asked to make something like a calculator using PHP in the final lab exam with extra marks if the page did’t reload(Yeah JavaScript).

TAs

Apart from the Grad students, good programmers among B-Tech students are also selected as TAs to professors. They teach the younger students mostly programming and Data Structure and Algorithms.

Tri-Hacker Tournament

To make things more interesting there is a competition called Tri-Hacker tournament organized by Technical society for first years. The competition is inspired by Tri Wizard tournament in Harry Potter series. It’s an year long competition consisting of various rounds focusing on Competitive programming and Development. The marks are added up and the winners are given the Tri Hacker Cup. Winning the cup is prestigious so the students work a lot to win this cup.

After First Semester

By the end of the first semester all the students would be good to program in C. In the 2nd semester we are taught Data Structures and algorithms with similar lab structure as explained above. Students are asked to program in C++ instead of C for this course. By the end of first year students would be comfortable implementing all the basic data structures and algorithms like Dijkstra, BST, AVL Tree, Priority Queue etc . We have one more algorithm course in the 4th semester covering more advanced topics like DP, Backtracking and NP problems.

We even had several courses in which the lab exams and assignments were conducted as contests in HackerEarth.

Summing Up

The course structure of IIIT-A plays an important role in turning the student into a good programmer. We never had to study courses like Chemistry, Engineering Graphics/ Drawing etc. We were taken directly into core programming courses right from first semester. The courses which are taught in late semesters in IITs and NITs like Computer Organization and Architecture, OS, OOM, Theory of Computation etc are taught to us in the second and third semesters.

As a result of all these our students top the major programming competitions. We had one of the first red coders in the country. We send teams to ACM ICPC world finals multiple times (Finished first among Indian teams this time). We also have many GSOC selection every year :)