The UofT Timetable Builder designed to simplify and optimize the creation of academic schedules for students. It allows users to build custom timetables based on course selections and personal preferences, enhancing their educational planning experience. This tool is especially useful for students looking to balance their academic workload with personal commitments and preferences for specific times of day.
Students can select courses for the Fall and Winter terms from a comprehensive list. The system supports the inclusion of full-year courses, ensuring consistency across terms.
Users can set their preferences for class start times, intervals between classes, the number of days spent on campus, and reasonable walking times between classes. The system prioritizes these preferences when generating the timetable.
With the selected courses and preferences, the system generates multiple timetable options, allowing users to review and choose the one that best fits their needs.
The application offers two viewing modes for convenience:
Large View: A detailed view of the timetable with course names, times, and locations.
Small View: A simplified overview of the timetables, displaying only the color-coded courses for quick comparison.
The Timetable Builder utilizes a combination of front-end and back-end technologies:
Developed using HTML, CSS, and JavaScript, the front-end is built with an emphasis on usability and aesthetics. The interface includes elements from libraries such as Bootstrap and Selectize.js for enhanced interaction and style.
The server-side logic is implemented in Java, handling data processing, timetable generation algorithms(include Backtracking Algorithm and Genetic Algorithm), and integration with the front-end.
Here's a polished version of your prerequisites section:
Ensure you have the following installed:
-
Java Development Kit (JDK): Version 17 or higher. You can download it from the official Java website.
-
Python: Version 3.10.X. Ensure you have the required dependency packages installed. This can be accomplished using pip:
pip install pymysql requests
-
MySQL: Version 8.X.X.
- Note: The default MySQL username and password for this project are
root
and123456
, respectively. If your credentials differ, please adjust them accordingly in the project configuration.
- Note: The default MySQL username and password for this project are
OS X & Linux:
git clone https://github.com/UofT-Box/UofT-Timetable-Builder.git
cd UofT-Timetable-Builder/script
python3 scrap_main.py
python3 mysql_data_transfer.py
python3 mysql_distance_transfer.py
cd ..
mvn spring-boot:run
In browser tap http://localhost:8080/
Windows:
git clone https://github.com/UofT-Box/UofT-Timetable-Builder.git
cd UofT-Timetable-Builder\script
python scrap_main.py
python mysql_data_transfer.py
python mysql_distance_transfer.py
cd ..
mvnw spring-boot:run
In browser tap http://localhost:8080/
Enter the first three letters of the course code in the search bar to display related available courses. You can arrange your own preference by selecting different options and dragging the slider. Click on "GENERATE SCHEDULE" to generate a schedule. You can switch between semesters by clicking on "Fall" or "Winter". You can click on the section of the class schedule to get the section detail information. Click on "MORE OPTIONS" to enter the thumbnail view. Select the class schedule you want in the thumbnails user lock feature custom course scheduling feature display of travel distance & time feature
- 2.0.0
- Added custom course scheduling feature
- Added user lock feature
- Added timetable export functionality
- Added timetable favorites feature
- Added display of travel distance & time feature
- 1.1.0
- mobile adaptation
- 1.0.0
- Fix all known bugs
- Official release
- 0.6.0
- CHANGE: improve user preferences
- 0.5.0
- CHANGE: change styles
- 0.4.0
- UPDATE: update color on timetable
- 0.3.0
- UPDATE: User select Course feature
- 0.2.0
- CHANGE: Upload Maven Wrapper
- 0.1.0
- CHANGE: initialization version
- Zhengyu-Joey-Wang
- Zheng-August
This project is protected under the GNU license. Please refer to the LICENSE for more information.