/CSE-tute-scheduler

A solver for CSE tutorial schedules

Primary LanguagePythonMIT LicenseMIT

Problem Description

Allocates tutors to tutorials based on Talloc availability. Handles:

  • tute/lab format (1h Tutorial immediately followed by a 2h lab with a tutor/lab assist)
  • Online and in-person availability py

Installation

  • pip install -r requirements.txt

Usage

  • run the program: python app/cli.py comp1531 <preferences_path.csv>, <timetable_path.csv>

These should be absolute file paths.

The solver may take up to a minute to find the best fit.

Sample timetable and preferences can be found in data_sample/

Clingo can be manually run on the solve files generated by the python code (if you need to modify the lps):

  • brew install clingo
  • clingo solve.lp facts/*.lp

Scope

CSE-tute-solver currently takes into account:

  • Tutor Availability (hard limit)
  • Tutor Clashes (hard limit)
  • Tutor/Lab assist experience (Only those with teaching experience in a given course can Tutor that course)
  • Online/In-person preference
  • Tutor Capacity (Max number of tutorials and lab assists a tutor can take)
  • Lab Assist Capacity (Max number of lab assists a lab assist can take)

Does not take into account:

  • Tutor experience pairings: e.g. a first-timetutor (a previous lab assist) should ideally not be paired with a first time lab assist (this data is not available on Talloc)

Definitions

  • Tute/lab - a 1 hour tutorial followed by a 2 hour lab, these are contiguous (scheduled as 3 hour blocks)
    • Can be online or in person.
  • Tutor - the primary tute/lab teacher, will be present for the entire 3 hours of a tute/lab. Usually more experienced than the lab assistant, as they must have previous experience lab assisting or tutoring in the course.
  • Lab Assistant - only present for the 2 hour lab (the last two hours of the tute/lab). Usually less experienced than the tutor. Can be a first time teacher.
  • Availability Key (for a particular time):
    • impossible 0
    • dislike 1.1
    • dislike-online-only 1
    • possible 2.1
    • possible-online-only 2
    • preferred 3.1
    • preferred-online-only 3
  • Capacity (number of type they can take
    • Max Tutorial (integer)
    • Max Assistant (integer)

TODOs

[] Fix the column headings for the timetable and preferences file to better match TALLOC