Skip to main content

An exam scheduler application built with Python, designed to optimize exam schedules at university level.

Project description

Review Assignment Due Date

Unisched - Extensible University Exam Scheduler

GUI Image


This is my (Adheesh Trivedi's) submission for the course "Advanced Programming".

Unisched is a basic, modular exam scheduling project that currently supports:

  • Registration data loading from CSV, Excel and ODS
  • Exam hall data loading from CSV, Excel and ODS
  • Core scheduling using a graph coloring optimizer (DSatur-based)
  • Conflict-aware schedule generation with simple penalty calculation
  • A native-desktop GUI built with PySide6

The project is intentionally minimal and designed to be extended over time.

Installation

From PyPI

pip install unisched

# Then run the app
python -m unisched

It's recommended to use pipx for better dependency resolution:

pipx install unisched

# Then run the app
unisched

Running from source

Dependencies used by the project:

  • pandas
  • PySide6
  • openpyxl
  • odfpy

Install dependencies:

uv sync

Run the GUI app:

uv run unisched

Running Tests

Run all tests:

uv sync --extra dev
uv run pytest

Example Script

Run the sample scheduling script:

uv sync --extra example
uv run python examples/schedule.py

TODOs

  • Current optimizer implementation: GraphColoringOptimizer only
  • Future optimizers (for later): Simulated Annealing, ILP
  • Needs a cute logo for the GUI :)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unisched-0.1.1.tar.gz (54.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

unisched-0.1.1-py3-none-any.whl (29.4 kB view details)

Uploaded Python 3

File details

Details for the file unisched-0.1.1.tar.gz.

File metadata

  • Download URL: unisched-0.1.1.tar.gz
  • Upload date:
  • Size: 54.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for unisched-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ea6e4f01fd3a4c7ce4dceec8ae7e91b3b5398cc7ca7e415c27a72ae8472c8930
MD5 139dd8f052a5c545a2aa775d77cd4957
BLAKE2b-256 6ea2d65098851349eb7494499255d331edf656b03e1fdd1923654d0f14b1b249

See more details on using hashes here.

File details

Details for the file unisched-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: unisched-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 29.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for unisched-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 25b062b08688ad661516f5fb3ac39cfc2bd1cf8424fc45bc1a66db2d95ee7fd3
MD5 b1684442abacd6c0696bc99e707cb769
BLAKE2b-256 0004e3de14d883f24086537fd0de6831cd50bbf6c635a36dd10bfe53330680aa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page