Skip to content

Initial Release - v1.0

Compare
Choose a tag to compare
@speters9 speters9 released this 02 Sep 04:39
· 13 commits to main since this release

Job Matching Tool - How-To Guide

This release consists of a standalone executable file that implements the code in this repository, allowing users to execute the various matching algorithms without having to set up their own Python environment. It also includes example course and instructor spreadsheets to assist as you build your own inputs. Below is a quick how-to for the program.

Overview

This tool is designed to help academic departments match instructors to courses based on their stated preferences. It offers three different matching strategies to accommodate various departmental needs. The tool simplifies the initial phase of assignment by generating a list of course allocations that prioritize preferences independent of qualifications. Therefore, it's important to view these results as a starting point rather than a final solution.

Please reference the included example CSV files when structuring your inputs.

Matching Strategies

  1. Bipartite Matching
    Maximizes the number of matched pairs between instructors and courses. This method efficiently tries to satisfy as many preferences as possible. The edges between instructor and course nodes are weighted according to the instructor's preference for the course and the priority of the instructor.

  2. Stable Marriage
    Based on the Gale-Shapley algorithm, this strategy creates stable matches where neither instructors nor courses have a preferred alternative that would make them better off. This ensures mutually agreeable matches but may not maximize the number of matches.

  3. Linear Programming
    Uses an optimization approach to maximize overall satisfaction of preferences. This method aims to find an optimal solution where the sum of ranks is minimized, but in so doing might leave some classes unassigned.

  4. Which to Use?
    All strategies work well, but initial experiments suggest that stable marriage and bipartite matching often provide the highest satisfaction levels and course fill rates.

Required Inputs

The tool requires two Excel files (.csv or .xlsx):

  1. Courses Spreadsheet

    • Required Columns:
      • Course Name: The name of the course (e.g., "PS211").
      • Course ID: The numeric identifier of the course (e.g., "211" if course name is "PS211").
      • Sections Available: The number of sections that need to be filled (integer-type).
      • (Optional) Section Description: The long-form name of the course (e.g., "History of the Western World").
  2. Instructors Spreadsheet

    • Required Columns:
      • Instructor Name: The name of the instructor.
      • Degree: Highest degree obtained by the instructor (i.e., 'phd' or 'mas').
      • Max Classes: The maximum number of courses an instructor can teach (integer-type).
      • Preferences: A series of columns representing a ranked list of course names that the instructor prefers to teach. These columns should be named something like Preference_1, Preference_2, etc. The program identifies preference order based on trailing numbers in column names.

Operating Instructions

Note: When activated, JobMatch.exe spins up an instance of Python and some required dependencies under the hood. This may cause a delay of about 15-20 seconds on initialization. Future iterations will try to make this initialization period shorter.

  1. Load Instructor File
    Drag and drop to load the instructor CSV file.

  2. Load Course File
    Drag and drop to load the course CSV file.

  3. Select Matching Algorithm
    Choose one of the three matching algorithms from the dropdown.

  4. Run Matching
    Click the 'Run Matching' button to start the matching process. The results will be computed based on the selected algorithm.

  5. Print Results
    View the results in a new window. You can choose to view matches by instructors or by courses.

  6. Export Results to CSV
    Save the results to a CSV file for further analysis or adjustments.

Important Notes

  1. Instructor Qualifications
    The tool does not account for instructor qualifications. Matches are based solely on preferences, so it is important to manually review the output to ensure that assigned instructors are qualified for the courses.

  2. Preliminary Solution
    The matches generated by the tool are meant to serve as a starting point. They should not be considered final until reviewed and potentially adjusted based on qualifications, availability, and other factors.

  3. Instructor Order Matters
    The order of instructors in the CSV file influences the matching process. Instructors with higher priority (e.g., department heads) should be listed earlier in the file to increase their chances of getting their top preferences.

  4. Required Input Structure

    • Instructor preferences should correspond with the Course Name column in your course spreadsheet.
    • The program requires specific columns in each spreadsheet:
      • Courses: Course Name, Course ID, and Sections Available.
      • Instructors: Instructor Name, Degree, Max Classes, and at least one preference column (identifier ending with _1).
    • Please reference the included example CSV files when structuring your inputs.