Class Schedule Optimizer
Pick courses with section options; the tool returns every valid conflict-free schedule.
Written by Golam Rabbani, Founder & Lead Engineer
How to use this class schedule optimizer
- Click "+ Add course" and type the course name (e.g. "CS 101").
- For each course, set Section 1's meeting days by ticking Mon–Fri checkboxes, then enter a Start time and End time.
- Click "+ Add section" inside a course to add an alternative time slot for that same course.
- Repeat for every course you need to schedule, then click "Find schedules".
- Browse conflict-free results with the Previous / Next buttons, or click "Copy first schedule" to copy the top result to your clipboard.
About this class schedule optimizer
The class schedule optimizer takes a list of courses — each with one or more possible sections — and finds every combination of sections that has no time conflicts. You get a complete list of valid schedules so you can pick the one that fits your life best.
Internally the tool builds the Cartesian product of all section lists: if Course A has 2 sections and Course B has 3 sections, there are 6 combinations to check. For each combination it compares every pair of selected sections. Two sections conflict if they share at least one day (Mon–Fri) and their time ranges overlap — formally, section A overlaps section B when A's start time is before B's end time and B's start time is before A's end time. Combinations that pass every pairwise check are valid schedules. To keep the browser responsive the tool caps evaluation at 5,000 combinations; if the product of section counts exceeds that limit it asks you to reduce the number of sections instead of freezing.
Worked example: CS101 has Section A (Mon/Wed/Fri 09:00–10:00) and Section B (Tue/Thu 11:00–12:30); MATH201 has Section A (Mon/Wed/Fri 09:30–10:30) and Section B (Tue/Thu 13:00–14:30); ENG110 has one section (Wed 14:00–16:00). The tool checks all four combinations. CS101-A and MATH201-A both meet on Mon/Wed/Fri and their windows overlap (09:00–10:00 and 09:30–10:30), so those two combinations are discarded. The two valid schedules are {CS101-A, MATH201-B, ENG110-A} and {CS101-B, MATH201-A, ENG110-A}.
This tool is useful for any student who receives a list of available section times and wants to see all conflict-free arrangements before registering.
FAQ
- What does the class schedule optimizer check for conflicts?
- It checks time overlap only. Two sections conflict if they share at least one weekday and their clock windows overlap — for example, 09:00–10:00 and 09:30–10:30 on Monday both conflict. It has no knowledge of room locations, registration restrictions, or course prerequisites.
- What if no valid schedules exist?
- The result panel displays "No conflict-free schedules found" and lists the conflicting course pairs. To resolve this, add more sections for the courses shown as conflicting or remove a course you can take in a different term.
- Why is there a 5,000-combination cap?
- The number of combinations grows as the product of each course's section count — 5 courses with 4 sections each yields 1,024 combinations, but 10 courses with 4 sections each yields over a million. The 5,000 cap keeps the browser from freezing on large inputs. If you hit it, remove a course or reduce the number of sections per course.
- Does the tool distinguish lecture sections from lab sections?
- No. Every section is treated identically — just a set of days and a start/end time. You can enter lab and lecture sections for the same course as separate courses if you need them treated as independent required blocks.
- Does the tool store or transmit my course data?
- Your courses are saved in your browser's localStorage so the tool remembers them on your next visit, but nothing is sent to a server. Clicking Reset clears localStorage completely.
- Is the class schedule optimizer free to use?
- Yes, it is completely free with no account or signup required.