TA Scheduling & Quiz Pickup Optimizer
Project description
[SCHEDULER-TA] - Project Optimization suite
Advanced Academic Grading & Pairing Optimizer.
(OVERVIEW)
The system transforms raw campus schedules into an economic convenience model. It uses a weighted penalty system to rank potential scheduling options:
- Each Day of Turnaround: 1 Point
- Each "Special" Campus Trip: 10 Points
- Wait Time (Same-Day): 0.1 Points per Hour
- External Workload: Dynamic (User-Defined)
By minimizing the total penalty score, the system identifies the most "human- friendly" schedules for Graders and Professors.
(COMMANDS)
db: Manage the persistent staff database (init, reset, export, add-person, list).quiz: Generate ranked collection/pickup windows for a specific pair.heatmap: Generate a convenience score for every assignment day (Pop quiz mode).pair: Calculate department-wide best matches (Global Matchmaking).timeline: Generate chronological turnaround guidance for onboarding.cadence: Evaluate weekly collection schedules over a semester for syllabus design.
CLI Usage Examples
Database Management (Adding Staff)
./scheduler-ta db init
./scheduler-ta db add-person --name "Euler" --role "Teacher" --sched "MWF 10am-11am"
# Note: Re-running add-person on an existing name gracefully updates their schedule!
./scheduler-ta db list
# To back up the database into a raw SQL dump:
./scheduler-ta db export
# To wipe the database clean and start over:
./scheduler-ta db reset
Individual Turnaround Mode (Shane Catch-up Scenario)
./scheduler-ta quiz --prof "MWF 10am-11am" --grader "TTh 1pm-2pm" --load 50
Global Matchmaking Mode (Department-Wide Optimization)
./scheduler-ta pair --prof "MW 1pm-2pm" --prof "TTh 9am-10am" \
--grader "MWF 10am-11am" --grader "TTh 2pm-3pm" \
--global-opt --date "04/06"
Heatmap Mode (Prof. Euler's Dashboard)
./scheduler-ta heatmap --prof "MWF 10am-12pm" --grader "TTh 1pm-2pm"
Syllabus Cadence Advisor Mode (Designing the Semester)
Helps a Professor decide which day of the week to place weekly assignments on.
# Using the staff added to the database during setup
./scheduler-ta cadence --prof-name "Euler" --grader-name "Shane" --weeks 16
# Or using on-the-fly schedules without the database
./scheduler-ta cadence --prof "MWF 10am-12pm" --grader "TTh 1pm-2pm"
(MODELING CAPABILITIES)
What it CAN model
- (PERSISTENCE) Uses a local SQLite database (
~/.scheduler_ta/data.db) via SQLAlchemy for centralized staff management. - (TIME-AWARE) Calculates the hour-gap between class ends and grader arrival.
- (WEEKLY) Supports complex, multi-block weekly schedules (e.g. MWF + TTh).
- (CONVENIENCE) Automatically identifies when a Grader is already on campus.
- (OPTIMAL) Solves for the best pairings across a department using the Hungarian Algorithm (Scipy Backend).
- (DYNAMIC) Supports short-term, date-aware matchmaking with the
--dateflag. - (WORKLOAD) Penalizes specific dates where a Grader has external commitments (like Shane's catch-up period).
What it CANNOT model
- (REAL-TIME) Does not yet integrate directly with live University registrar data.
(FUTURE ROADMAP)
- (IMPORT) Bulk CSV/JSON import for department-wide scheduling.
- (DB-SYNC) Integration with university enrollment & registrar databases.
- (WEB-PORTAL) Front-end (HTML/JS) for slot viewing and student requests.
- (PERSIST) SQL-based backend for persistent staff and section data.
- (UI) Visual heatmap dashboard (Streamlit/FastAPI).
- (QUANTITY) Support for
n_studentsandtime_per_studentto scale grading load penalty.
(DEVELOPMENT)
License
This project is licensed under the MIT License.
Packaging & Releasing
To package this application and deploy to PyPI via twine (if configured):
# Compile source and wheel distribution
python3 -m build
# Check bundle health
twine check dist/*
# Upload to TestPyPI
twine upload --repository testpypi dist/*
This project maintains strict quality standards:
- [Pylint] 10.00/10 Score
- [Pytest] 97.5% Project Minimum Test Coverage
- [Flake8] Standardized Compliance
make test # Run full test suite with coverage reports
make test-v # Run verbose tests (visualize matchmaking solutions)
make lint # Run all quality checks
make format # Auto-format source and documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scheduler_ta-0.1.0.tar.gz.
File metadata
- Download URL: scheduler_ta-0.1.0.tar.gz
- Upload date:
- Size: 24.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fe3bb14c887067001e4867989f2597710408e8d7e53c20d45e3bda334630db5
|
|
| MD5 |
926cfa9c7051a31f7ff54d0de743f1ed
|
|
| BLAKE2b-256 |
ece2bb24c462e3a53017c2228b4390932f6bbff396866a56d320228e5099dbca
|
File details
Details for the file scheduler_ta-0.1.0-py3-none-any.whl.
File metadata
- Download URL: scheduler_ta-0.1.0-py3-none-any.whl
- Upload date:
- Size: 15.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f213c484e08e6ae42e946e8c54961c9ae07bc78221396c2b4d25a218c972727
|
|
| MD5 |
d21ac1962c5a11873fbc33003ccfe06d
|
|
| BLAKE2b-256 |
27311cfb7d980d457d8ae9a4c57bf3acbe0823b4d2ec0444ddb9b0e14fd31620
|