Skip to main content

Assign TAs to Classes using a global optimization algorithm

Project description

TA ASSIGNMENT - AUTOMATION PROJECT

How to run the project

INPUT FILES:

  • You need three files to run this software: TA_schedule.csv, class_schedule.csv and Instr_Pref.csv.
  • These input files should be stored in the folder: input_files
  • Run the main.ipynb file in jupyter notebook or any IDE (VS CODE) and then open the index.html file in any browser to view the assignments
  • If you want to run it in a terminal by converting to python, use the following command:
jupyter nbconvert --to python nb.ipynb

You may have to install the python mistune package:

sudo pip install -U mistune

Folder Details:

  • algorithms: Contains the code for hungarian algorith - hungarian.py

  • assignment_output_files: Contains the final assignments, unassigned courses and the cost breakdown

  • data- This folder contains the code to change edgeweights, capacity limit, LAB - TA requirement limit, etc.

    • capacity_cap.py: To change the capacity limit for TAs
    • edgeWeights.py: To change edgeWeights
    • getPseudoLabs: To fetch the labs that are not marked as lab but have lab like TA requirement
    • db_config.py: To change the DB URL
    • lab_ta_requirements.py: This function returns a dictionary which maps labs to the number of sections 1 TA can handle
    • timeSlotMapping: Map Time slots (period: 11:10 to 12:25) to Letters
  • input_files - This folder contains all the input files that we need to provide to the program

  • input_json - Input files converted to JSON files

  • output_files - All the files that are generated as the program runs: The final section data is in the sub-folder: section_data

  • scripts - ALL the scripts can be found in this folder

    • parse_ta_data.py: CREATE TA_schedule.json from the input file TA_Schedule.csv
    • parse_courses.py: CREATE courses.json from the input file course Schdule
    • parse_sections.py: CREATE INITIAL SECTION DATA - This will again be parsed in various scripts to form the final section data
    • parse_schedule.py: CREATE schedules
    • combined_view.py: Combines the schedule information by merging all slots for the CRN
    • parse_instructor_pref.py: Creates the instructor preference data from the input CSV file
    • create_final_sections.py: This file creates the final data that we need for the hungarian algorithm and calls lab processing scripts to process lab data and then processes non-lab data and creates a final section.json file which is stored in section_data folder in output_files folder.
    • process_labs.py: Processes lab data which handles pseudo labs and TA requirements, capacity cap mapping and filtering the labs we don't need
    • compute_conflict_matrix.py: This file creates the conflict matrix between TA and final sections. IT also calls the conflict break down skeleton to create and store the breakdown
    • create_conflict_breakdown_skeleton.py: This script creates the conflict breakdown skeleton
    • duplicateTAs.py: This script will create another entry for all TAs that have been assigned to classes with 0.5 TA requirement to be assigned to another class
    • incremental_TA_duplication.py: After we allocated all TAs if there are any unassigned courses left then we run this script to fetch the next best TA to duplicate - TA with least enrollment in section they are TAing for (if they are only TAing for one class)
  • utils: Contains all the utility files

    • show_hungarian_assignments - This file produces the assignment output and stores it in the assignment_output folder

FOLDER STURCTURE:

.
├── algorithms
│ ├── hungarian.py
├── assignment_output_files
├── data
│ ├── capacity_cap.py
│ ├── daysMapping.py
│ ├── db_config.py
│ ├── edgeWeights.py
│ ├── getPseudoLabs.py
│ ├── lab_ta_requirements.py
│ └── timeSlotMapping.py
├── db
│ ├── connect.py
│ ├── create_tables.py
│ ├── insert_data.py
│ └── models.py
├── input_files
├── input_json
├── output_files
│ └── section_data
├── scripts
│ ├── combined_view.py
│ ├── compute_conflict_matrix.py
│ ├── create_conflict_breakdown_skeleton.py
│ ├── create_final_sections.py
│ ├── duplicateTAs.py
│ ├── incremental_TA_duplication.py
│ ├── parse_courses.py
│ ├── parse_instructor_pref.py
│ ├── parse_schedule.py
│ ├── parse_sections.py
│ ├── parse_ta_data.py
│ └── process_labs.py
├── temp # ignore
├── utils
│ ├── convertCSVtoJSON.py
│ ├── csvToDict.py
│ ├── create_conflict_breakdown_skeleton.py
│ ├── dictionaryToJsonFile.py
│ ├── getCoursesTakenFromCrn.py
│ ├── getTimeSlotsFromCRN.py
│ ├── load_conflict_matrix.py
│ └── show_hungarian_assignments.py
├── conflicts_view.html # Shows the conflict breakdown in browser (TA vs Sections)
├── index.html
├── main.ipynb # This file should be used to run all the scripts in one go
└── README.md

Project details


Release history Release notifications | RSS feed

This version

0.1

Download files

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

Source Distribution

ta_assignment_automation-0.1.tar.gz (24.7 kB view details)

Uploaded Source

Built Distribution

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

ta_assignment_automation-0.1-py3-none-any.whl (39.3 kB view details)

Uploaded Python 3

File details

Details for the file ta_assignment_automation-0.1.tar.gz.

File metadata

  • Download URL: ta_assignment_automation-0.1.tar.gz
  • Upload date:
  • Size: 24.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.6

File hashes

Hashes for ta_assignment_automation-0.1.tar.gz
Algorithm Hash digest
SHA256 6171d82bce518e515587e660d6f1ae55deeeb002b89c57f0c74d1067703cc98b
MD5 ae2e435e28eb9f19b8ddba0908bbcb87
BLAKE2b-256 3963ac788766c78ff56b07c8b8e703bce6c9b90440d83e77da52811064825a40

See more details on using hashes here.

File details

Details for the file ta_assignment_automation-0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for ta_assignment_automation-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1408147bba7fa226e06f091c54e49e0c50563ac5f69301c6c9cc4a500b435d61
MD5 9e6ef0040f1750815faa09e33c33f571
BLAKE2b-256 0a6489535b28f8c3c84fc0e8f544f3b9ddc1e9ea3458df44666c33481cfd6ccd

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