UniTime-Solver is a Java-based automatic timetable generator for university students. We help students find the best schedule combinations without the headache of manual arrangement.
Every semester, university students suffer from arranging their timetables. Balancing required major courses with desired electives while avoiding time conflicts is a complex constraint satisfaction problem. UniTime-Solver acts as your smart assistant. It doesn't just give you a fixed result; it collaborates with you.
- Input from User: Allows users to clearly segment and input mandatory and optional courses.
- Backtracking: Algorithm Uses DFS-based recursion to generate all valid timetable combinations.
- User Interface (UI): Provides a highly readable timetable list in the console environment using ANSI codes, including pagination for large result sets.
- Editor Allows the user to edit the result timetables by modifying course lists.
Language: Java (JDK 17+) Build Tool Gradle Testing JUnit 5
- Check Environment Requirements Ensure Java Development Kit (JDK) 17 or higher is installed on your system to build and run the project.
- Clone Repository Use Git to clone the project repository to your local machine
- Build Project
Use the Gradle Wrapper to build the project and create the executable.jarfile.
- Launching the Application
java -jar build/libs/UniTime-Solver.jar- Course Input Format
[Course Name] / [Credit] / [Day] [Start HH:MM] [End HH:MM]
(Example: Data Structure / 3 / Mon 12:30 14:00)- Timetable Generation and Suggestion
The system will process the input and display the first batch of 5 timetables.- User Selection and Commands
Interact with the displayed results using one of the following commands:
next: Views the next batch of 5 recommended timetables.quit: Terminates the program and saves the 5 currently displayed timetables to an output file.edit: Enters Edit Mode to allow detailed modification of course constraints. This provides a menu to add/remove courses, and change the Goal Credit before regenerating new timetables.
Submission Version for the OpenSource SW Final Project. (Initial release)
- TimeTable Generation (Scheduler):
Generates all possible, valid, and non-overlapping course combinations. This uses a Backtracking Algorithm to select optional courses while respecting the maximum credit limit (
goalCredit) and avoiding time conflicts (isTimeOverlap). - Course Input & Management (InputHandler & Editor):
Allows users to input Mandatory and Optional courses, including their name, credit, day, and time (
HH:MM). The system provides robust input validation for credit and time formats. The Editor class enables users to modify or remove courses and change the maximum credit limit after the initial setup. - Paginated Result Viewing (ResultView):
Displays the generated timetables in batches of 5 schedules (
BATCH_SIZE = 5). Users can navigate through the results using the'next'command or exit/modify the input using the'edit'command.
-
Download the
.jarfile from the Assets section below. -
Open your terminal (CMD/PowerShell/Terminal) and navigate to the folder where the file is located.
-
Run the following command to execute the program:
java -jar [filename].jar
https://github.com/Kimhyewon0621/UniTime-Solver/releases/tag/v1.0
Ayeong Kwon ( @AyeongKwon )
Mingyeong Kim ( @mingyeonggg)
Hyewon Kim ( @Kimhyewon0621 )
Jiseop Lee ( @ljseop1030 )
This project is licensed under the MIT License.