Assigns student presentation dates and press pool reviews using the Gale-Shapley stable matching algorithm.
- Matches ~100 students to 25 presentation dates based on preferences
- Assigns each student 2 review dates (not on their own presentation day)
- Supports partner requests
- Ensures balanced distribution (4 students per date)
- Python 3.7+
- pandas
- openpyxl
Install dependencies:
pip install pandas openpyxlmatcher.py- Main matching algorithmcreate_csv.py- Generates sample datastudents_survey.csv- Input file with student preferencesFinal_Presentation_Schedule.xlsx- Output with presentation assignmentsFinal_Press_Pool.xlsx- Output with review assignments
Create students_survey.csv with these columns:
Student Name,Choice 1,Choice 2,Choice 3,Partner Name
Alpha Student,9/8/2025,9/10/2025,9/15/2025,Beta Student
Beta Student,9/8/2025,9/22/2025,10/1/2025,Alpha Student
Gamma Student,9/8/2025,9/10/2025,10/6/2025,N/ANotes:
- Date format: M/D/YYYY
- Partner requests must be mutual
- Use "N/A" for students without partners
Generate sample data (optional):
python create_csv.pyRun the matcher:
python matcher.pyTwo Excel files are created:
Final_Presentation_Schedule.xlsx- Shows assigned presentation datesFinal_Press_Pool.xlsx- Shows assigned review dates
Edit these values in matcher.py:
STUDENTS_PER_GROUP = 2 # Students per presentation group
GROUPS_PER_DATE = 2 # Groups per date
REVIEWS_PER_STUDENT = 2 # Reviews each student doesTo change available dates, edit the available_dates list in matcher.py.