The algorithm creates a Science Olympiad roster for 15 students, enforcing a maximum of 7 seniors, 3–4 events per student, and event slot limits. Events are grouped into blocks to prevent scheduling conflicts. Students are scored for each event based on preferences, past placements, and experience, and the top students are selected while respecting senior limits. Prefilled events count toward assignments. Students are then assigned to events in score order without exceeding event or block limits, and under-assigned students are randomly placed in available events to meet minimum requirements. The output includes the roster, selected students, and each student’s event count.
Uploaded spreadsheet must have the following columns: Name, Grade, Events, Placements, Years. These indicate Name, Grade Level, Events Selected or Participated, Competition Placement in Event, and Years Competed, respectively. For example, Name: Jane Doe | Grade: 12 | Events: Chemistry Lab, Forensics, Experimental Design | Placements: Chemistry Lab:1, Forensics:10, Experimental Design:24 | Years: 3
Students can be entered by hand as a way to manually set a 'seed' for the roster.