Skip to main content

[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 --date flag.
  • (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_students and time_per_student to 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

Metadata

Release files for scheduler-ta 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scheduler-ta 0.1.1
File Size Uploaded Provenance
scheduler_ta-0.1.1.tar.gz 24.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for scheduler-ta 0.1.1
File Interpreter ABI Platform
scheduler_ta-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 41.1 kB

Release files / scheduler_ta-0.1.1.tar.gz

Download URL scheduler_ta-0.1.1.tar.gz
Size 24.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3ff57a69661f9f5cebed71cea56d5a0fb2defb8af7370ace628edb48ed9e5e4b
BLAKE2b-256 checksum
How to use checksums
0f42ac8950fdd0b41dc04b4a14e0c99488354efda19137229972afedcca23a81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.14.3

Release files / scheduler_ta-0.1.1-py3-none-any.whl

Download URL scheduler_ta-0.1.1-py3-none-any.whl
Size 16.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9c3fb0c9c49d094d10ee88500635d40a944cfba5ecaec5aaea1ecc42012e022b
BLAKE2b-256 checksum
How to use checksums
c7078a1195e261ba871f3deaa9bf546ac1f2cd28946d643c2d8b81e27f1c8098
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.14.3

Security for scheduler-ta 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page