Skip to content

mustafaakin/bilkent-scheduler

Repository files navigation

How to use?

Select a department, and a course and hit the add button. The combinations will be generated automatically. You can also filter out certain instructors as they appear in the results. Additionally, clicking on the timetable will filter-out that specific time. Use Next and Prev arrows for navigating through all combinations.

Note!

Important note! Data is scraped from public STARS Offerings pages. There is no guarantee data is up-to date. And not all courses have updated their schedules yet. Read blow for more info.

History

The original Scheduler was created in 2010 by Mustafa Akın and Semih Şahin to aid course selection for the students and teachers, as a Java standalone desktop application.

In 2011, Mustafa created a web version of Scheduler by coming to terms with BCC to provide a real-time API instead of scraping public data, with the help of Abdullah Atalar. Since then, it has been used by 100.000 unique users throughout the years, which of many are graduated from Bilkent. I'm still a PhD Candidate though and working at Atlassian.

Scheduler was donated to Bilkent IEEE in 2014 to continue hosting, bug-fixes and feature development. It continued well until 2020 when BCC closed the APIs. BCC has never been cooperative at the most basic level for over last ~10 years and now the access is completely cut off. Scheduler SHOULD BE inside Stars, but it is unfortunately not. It's a very basic code.

This modern version is created by Mustafa in 2-days and the source code is available on Github. It's hosted via Netlify and works on only static data. If it changes, it is manually updated by Mustafa. The data collection does not cause a load to STARS, since the actions are delayed.

Local Testing

$ yarn 

# Update semester.txt to the latest one
$ cat semester.txt
20232

# Collect the departments first, check the data is correct
$ node collect-departments.js

# For all the departments, collect schedule data. Actions are delayed by default to prevent BCC crying scraping a
# static site and banning our IP, NOTE: Keep an eye on the browser anyways
$ node collect-data-for-dept.js

# Finally, concat data to single json for making code simpler and scheduler more responsive.
$ node concat-data.js

About

New Scheduler from the original creator

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published