The Time Table Generator

The time-table fiasco is nothing new or particular to us. It is a problem that every student of BITS Pilani has faced at some time or the other, and especially as a fresher when there are just too many options and clashes.

The Time Table Generator


Ideation is the first step towards making anything happen. Better the ideation, easier, and swifter will be its implementation. This goes true with everything, whether it be technical or non-technical. The idea of the Time Table Generator did not come out of the blue.

Nidheesh adds,

The story starts when I was close to getting a DTC in my second semester. I came to Pilani late at night, a day before the registration. Being the lite creatures we BITSians are, I thought that I will wake up early the next day and make my time table. The next day, it was 11:10 AM when a bang at the door reminded me that my slot for registration had started at 11:00 AM. The icing on the cake, I didn't know that I also have to collect my ERP creds from the RA. I managed to quickly get my creds. Thanks to my great friends, my time-table was made while I sat beside them, panicking.

As this whole drama wound down, we were casually discussing how good it would be, had there been an automatic generator for this. That's where the idea originated. That time we also thought upon a simple logic to do this task and planned to keep a free day as well! (and to maintain the lite culture, we made ourselves pseudo promises to start working on it soon XD)

Since the problem has been faced by every BITSian, that is what helped us appeal to the masses to use this tool even with minimal publicity.

Diving in deep

BITS Pilani has a very unique system of how a student's semester is planned. The student is given the right to choose his/her timetable. We get a Time Table booklet at the starting of each semester in which various teachers have predefined time slots, across the whole gigantic list of courses that BITS has to offer.

As a student, we get to chose

  • The courses we want to take up, except the compulsory ones
  • The section(s) of each course that we want to attend

This flexibility is quite promising as we get to choose across various teachers who are teaching the same subject, but each having a different style of teaching.

For example, this lock-down semester we had 414 courses and 783 sections in total (the number is even more in case of a normal semester).

But this comes at the cost of increased confusion and spending hours fitting the courses such that there are no clashes.

Apart from that we usually have to keep in mind that we might not get the desired sections at the time of Final Registration as sections of some popular teachers fill up crazy fast and they might not be available up to our PR number slot. This means that we usually have to keep in mind end moment changes that we might have to do to our draft Time Table (sometimes this means that we need to make a whole new Time Table).

These were the main issues that we tried to resolve in the first version of Time Table Generator. It automatically generates all possible timetables based on the requirements of the user.

Course card to select sections
Option to keep a non-working day

The bread and butter

One of the comments on our LinkedIn post said, “A case where even Brute Force can seem like a boon :)” and we could just wonder how true it was. We tried to implement the code in the same flow as we made our timetables by hand, including desired/undesired sections, electives, etc. This way the UX was familiar to everyone, and also, it helped us code flawlessly.

Our coding flow went something like this :

  • First, we made an excel scraper that would scrape the converted PDF for the input courses and sections.
  • The next thing to be implemented was the actual code that would take input of the scraper and output the generated Time Tables.
  • Once this code was bug-free and was running reliably over the command line, we thought to convert this into a Web App. Web App implementation ensured that everyone could use it easily.
  • Front End stack is HTML, CSS, Vanilla JS, JQuery. Selectize.js plugin was used to make aesthetically pleasing Multiple Select Drop-downs.
    In the internal alpha version, we didn’t make drop-downs for courses and sections. Everything was fed manually by the user. But since this was very time consuming and not user-friendly, we took a leap and implemented dynamic searchable drop-downs. This took quite an effort and still has a few known bugs.
  • Back End is made on Django (a server-side Python framework). Earlier, data was being read directly from the excel file, instead of being stored in a database. When shifting from the command-line interface to the Web App, we used the PostgreSQL database. This made the code robust, less prone to errors, and easy to debug.

The core code is currently written in python. We plan to refactor it to CPython to increase efficiency and speed.

Crunching Numbers

The response received from the students of Pilani was overwhelming. We received hundreds of messages from students, appreciating the utility and exclaiming how it saved them a lot of time and trouble of going through the entire time table booklet. It was really encouraging. That’s when we decided to post about it on LinkedIn. We made 2 posts on LinkedIn (1 | 2), which reached a combined total of 62,000 views, 1,400 reacts, 88 comments and 9 re-shares.

LinkedIn Posts

Alumni shared their stories, reliving memories of making a new time table. We got some valuable feedback and suggestions as well. One alumnus even suggested an interesting abbreviation - TTG (for the Time Table Generator).

That is when we started getting requests to extend it to the Goa, Hyderabad (and even Dubai) campuses. Since it was designed in a way to scale easily, we got to work immediately. We had the scripts ready, we just had to convert the timetable booklet PDF into the desired excel format. Within a day, we expanded to the Goa and Hyderabad campuses too. A professor from the Goa campus helped us in publicizing it on the Goa campus.

We released it on 11th August for the Pilani campus and hit 2,800 visits in the first 24 hours. On 15th August, we released it for Goa and Hyderabad as well and saw a sudden spike in the number of visits. The website reached its peak of 7,000 visits on the night before the registration day.

Google Analytics: Page Views
Google Analytics User Data 

Due to its popularity amongst the alumni network, 10% of the website views came from outside of India.

Google Analytics: Users by Country

The Path Ahead

Open Source is the way to go, and we know that. We plan to open-source the project soon. After all, it’s a project for BITSians, by BITSians. We are excited about all the creative contributions that would bring.

The project serves the basic functionality, but it is not complete yet. As we launched, BITS Pilani’s excellent student community showered us with even more suggestions and problem statements that could be integrated into the next versions of this application, like pre-filling CDCs, Compre Clashes etc. We hope that you will soon see these in upcoming releases!

We have some fun and innovative ideas to give direction to this project. We are currently in talks with AUGSD to integrate it with the ERP Portal to directly import the desired timetable to ERP. That would require data to update the available sections live, as the registration is going on. We believe that it would help to minimize DTCs while making a timetable. Improvements in the efficiency of the algorithm and UI/UX are also in line. We aim to standardize this portal across all the 4 campuses of BITS Pilani.

It’s a long way to go, let’s see what the future holds!

This entry was featured in the August edition of the Tech on Campus newsletter. You can read it here.