Skip to content
Rayyan Ahemad
← All projects
OptimizationShipped

EPITA Class Scheduler

A timetable engine that turns room, teacher and slot rules into a conflict-free schedule with the Z3 solver.

Architecture

How it works

  1. Courses · teachers · rooms · timeslots
  2. Constraints encoded for Z3
  3. SMT solve
  4. Conflict-free weekly timetable
  5. React calendar UI
Versioned REST API over a repository/service layer, Alembic migrations, and tests on both backend and frontend.

Information

Building a university timetable by hand means juggling room capacity, teacher availability and course clashes. Encoding those rules as constraints lets a solver find a valid week automatically.

  • Z3 SMT solver
  • FastAPI
  • SQLAlchemy
  • PostgreSQL
  • React + TypeScript
  • pytest

Code on GitHub ↗