diff --git a/generated/README b/generated/README index 5829e8ff..f6bee811 100644 --- a/generated/README +++ b/generated/README @@ -1 +1,2 @@ -Generated solutions should go here \ No newline at end of file +Generated solutions should be place here and the file dump with the json representation of when instructors were +scheduled this quarter \ No newline at end of file diff --git a/generated/scheduled_times_dump.example.json b/generated/scheduled_times_dump.example.json new file mode 100644 index 00000000..c8a6180d --- /dev/null +++ b/generated/scheduled_times_dump.example.json @@ -0,0 +1,71 @@ +{ + "LastName, FirstName": [ + { + "start": "10:00AM", + "day": "MONDAY", + "end": "12:00PM" + }, + { + "start": "10:00AM", + "day": "WEDNESDAY", + "end": "12:00PM" + }, + { + "start": "10:00AM", + "day": "FRIDAY", + "end": "12:00PM" + }, + { + "start": "4:00PM", + "day": "MONDAY", + "end": "6:00PM" + }, + { + "start": "4:00PM", + "day": "WEDNESDAY", + "end": "6:00PM" + }, + { + "start": "4:00PM", + "day": "FRIDAY", + "end": "6:00PM" + }, + { + "start": "12:00PM", + "day": "MONDAY", + "end": "2:00PM" + }, + { + "start": "12:00PM", + "day": "WEDNESDAY", + "end": "2:00PM" + }, + { + "start": "12:00PM", + "day": "FRIDAY", + "end": "2:00PM" + } + ], + "LastName2, FirstName2": [ + { + "start": "9:00AM", + "day": "MONDAY", + "end": "10:30AM" + }, + { + "start": "9:00AM", + "day": "WEDNESDAY", + "end": "10:30AM" + }, + { + "start": "11:00AM", + "day": "MONDAY", + "end": "1:00PM" + }, + { + "start": "11:00AM", + "day": "WEDNESDAY", + "end": "1:00PM" + } + ] +} \ No newline at end of file diff --git a/generated/term_department_solution.xlsx b/generated/term_department_solution.xlsx new file mode 100644 index 00000000..ef631ee6 Binary files /dev/null and b/generated/term_department_solution.xlsx differ diff --git a/java/hello-world/src/main/java/org/acme/schooltimetabling/TimetableApp.java b/java/hello-world/src/main/java/org/acme/schooltimetabling/TimetableApp.java index d62164ef..f1c69e31 100644 --- a/java/hello-world/src/main/java/org/acme/schooltimetabling/TimetableApp.java +++ b/java/hello-world/src/main/java/org/acme/schooltimetabling/TimetableApp.java @@ -22,7 +22,6 @@ import java.util.*; public class TimetableApp { -//TODO andrea schuman name udpate in excel file, update in the db as well or at least check over this private static final Logger LOGGER = LoggerFactory.getLogger(TimetableApp.class); private static final String YAML_FILE_PATH = "constants/config.yaml"; private static final boolean PRINT_DETAILED_SUMMARY = true; diff --git a/java/hello-world/src/main/java/org/acme/schooltimetabling/apiCalls/ApiConstants.java b/java/hello-world/src/main/java/org/acme/schooltimetabling/apiCalls/ApiConstants.java index e1d8e049..6fbf5b0e 100644 --- a/java/hello-world/src/main/java/org/acme/schooltimetabling/apiCalls/ApiConstants.java +++ b/java/hello-world/src/main/java/org/acme/schooltimetabling/apiCalls/ApiConstants.java @@ -7,7 +7,7 @@ import retrofit2.converter.gson.GsonConverterFactory; public class ApiConstants { - public final static String baseUrl = "http://localhost:8000/api/"; + public final static String baseUrl = "http://localhost:8002/api/"; public final static Retrofit retrofit = new Retrofit.Builder() .baseUrl(ApiConstants.baseUrl) .client(new OkHttpClient.Builder().build()) diff --git a/java/hello-world/src/main/java/org/acme/schooltimetabling/constants/Constants.java b/java/hello-world/src/main/java/org/acme/schooltimetabling/constants/Constants.java index 8cfde997..40529b95 100644 --- a/java/hello-world/src/main/java/org/acme/schooltimetabling/constants/Constants.java +++ b/java/hello-world/src/main/java/org/acme/schooltimetabling/constants/Constants.java @@ -138,7 +138,6 @@ public class Constants { List introCourses = List.of("csc1001", "csc2002", "csc2050"); Set introRooms = Set.of("Room 301", "Room 302", "Room 232A"); - //TODO non_sec_courses List non_sec_courses = List.of("csc2050", "csc3300"); Set non_sec_rooms = Set.of("Room 301", "Room 302", "Room 232A", "Room 255", "Room 256", "Room 257", "Room 20-127"); @@ -247,7 +246,7 @@ public class Constants { FACULTY_LAST_NAMES = ParseInput.getFaculty("constants/faculty_website_list.tsv"); - TEACHER_NAME_TO_CANON = getInstructorNameMapping("constants/faculty_names_new.xlsx"); + TEACHER_NAME_TO_CANON = getInstructorNameMapping("constants/name_mappings.xlsx"); } private Constants(){ diff --git a/java/hello-world/src/main/java/org/acme/schooltimetabling/helperClasses/BitSetHelper.java b/java/hello-world/src/main/java/org/acme/schooltimetabling/helperClasses/BitSetHelper.java index 38e001cd..8fb87738 100644 --- a/java/hello-world/src/main/java/org/acme/schooltimetabling/helperClasses/BitSetHelper.java +++ b/java/hello-world/src/main/java/org/acme/schooltimetabling/helperClasses/BitSetHelper.java @@ -66,7 +66,6 @@ public static BitSet timeSlotBitSet(LocalTime startTime, int numberOfBlocks, Enu /* Each hour has two 30-minute blocks*/ final int HOUR_OFFSET = 2; BitSet bitSet = new BitSet(); - //TODO so it's not so wierd of mapping values. Do math such as hour-7 and multiply by 2 to get offset int startHour = startTime.getHour(); if(startHour < FIRST_POSSIBLE_HR || startHour > LST_POSSIBLE_HR) throw new RuntimeException(String.format( "There was an error reading the time '%s'", startTime)); diff --git a/java/hello-world/src/main/java/org/acme/schooltimetabling/helperClasses/Generators/TeacherGenerator.java b/java/hello-world/src/main/java/org/acme/schooltimetabling/helperClasses/Generators/TeacherGenerator.java index 33ab5daf..bf7d3a50 100644 --- a/java/hello-world/src/main/java/org/acme/schooltimetabling/helperClasses/Generators/TeacherGenerator.java +++ b/java/hello-world/src/main/java/org/acme/schooltimetabling/helperClasses/Generators/TeacherGenerator.java @@ -260,14 +260,22 @@ private static Teacher generateTeacher(HashMap surveyEntry){ return new Teacher(getNextTeacherID(), canonName, preferred, acceptable, conflicts, pref); } - //TODO note to update the teachers that get made on the fly if their teacher object is not found + private static void prescheduleUpdate(Map teacherMap, Map>> presched){ Iterator>>> iterator = presched.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry>> entry = iterator.next(); String name = entry.getKey(); Teacher teacher = teacherMap.get(name); - if (teacher == null) continue; + if (teacher == null){ + teacher = new Teacher(getNextTeacherID(), name, new BitSet(), new BitSet(), new BitSet()); + LOGGER.warn("Couldn't find a teacher object for {} during prescheduling setup; creating one...", name); + if(Constants.FACULTY_LAST_NAMES.contains(name.split(",")[0].strip())){ + LOGGER.info("promoting {} to faculty", name); + teacher = new Faculty(teacher); + } + teacherMap.put(name, teacher); + } try { BitSet addConflict = createPreschedBs(entry.getValue()); diff --git a/java/hello-world/src/main/java/org/acme/schooltimetabling/helperClasses/Generators/TimeslotGenerator.java b/java/hello-world/src/main/java/org/acme/schooltimetabling/helperClasses/Generators/TimeslotGenerator.java index cc2b2636..149deb8c 100644 --- a/java/hello-world/src/main/java/org/acme/schooltimetabling/helperClasses/Generators/TimeslotGenerator.java +++ b/java/hello-world/src/main/java/org/acme/schooltimetabling/helperClasses/Generators/TimeslotGenerator.java @@ -9,7 +9,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Optional; -//TODO MAKE SURE THE THAT TIMESLOTS BEING GENERATED DON'T TAKE INTO ACCOUNT THE ENDING LIKE IF IT ENDS AT 11:00AM THAT THE 11AM ISN'T MARKED FOR THE LEC OR LAB/ACT BIT + public class TimeslotGenerator extends Generator{ private final static Logger LOGGER = LoggerFactory.getLogger(TimeslotGenerator.class); diff --git a/java/hello-world/src/main/resources/.example.env b/java/hello-world/src/main/resources/.example.env new file mode 100644 index 00000000..7982cdc4 --- /dev/null +++ b/java/hello-world/src/main/resources/.example.env @@ -0,0 +1,2 @@ +API_PASSWORD="userPassword" +API_USER="userName" \ No newline at end of file diff --git a/java/hello-world/src/main/resources/constants/config.example.yaml b/java/hello-world/src/main/resources/constants/config.example.yaml new file mode 100644 index 00000000..562a9580 --- /dev/null +++ b/java/hello-world/src/main/resources/constants/config.example.yaml @@ -0,0 +1,12 @@ +department: "csc" +curTerm: "2268" +prevTerm: "2264" +seasonTerm: "fall" +testing: false +useApi: true +# ------- Optional ------- +# this setting changes how we model the PrimeTime constraint +aggressiveChoice: "AGGRESSIVE_PENALTY" +compressStart: "7:00AM" +compressEnd: "6:00PM" +prescheduledFileName: "PrescheduledTimes_ExampleFile.example.json" \ No newline at end of file diff --git a/java/hello-world/src/main/resources/constants/possibleTimes.csv b/java/hello-world/src/main/resources/constants/possibleTimes.csv new file mode 100644 index 00000000..861de1c1 --- /dev/null +++ b/java/hello-world/src/main/resources/constants/possibleTimes.csv @@ -0,0 +1,171 @@ +days, time_start, time_end, lecture_hours, total_hours, lab_days, lab_start, lab_end, lab_hours +MWF, 7:00AM, 9:00AM, 1, 2,,,, +MWF, 8:00AM, 10:00AM, 1, 2,,,, +MWF, 9:00AM, 11:00AM, 1, 2,,,, +MWF, 10:00AM, 12:00PM, 1, 2,,,, +MWF, 11:00AM, 1:00PM, 1, 2,,,, +MWF, 12:00PM, 2:00PM, 1, 2,,,, +MWF, 1:00PM, 3:00PM, 1, 2,,,, +MWF, 2:00PM, 4:00PM, 1, 2,,,, +MWF, 3:00PM, 5:00PM, 1, 2,,,, +MWF, 4:00PM, 6:00PM, 1, 2,,,, +MWF, 5:00PM, 7:00PM, 1, 2,,,, +MWF, 6:00PM, 8:00PM, 1, 2,,,, +MWF, 7:00AM, 8:00AM, 1, 1,,,, +MWF, 8:00AM, 9:00AM, 1, 1,,,, +MWF, 9:00AM, 10:00AM, 1, 1,,,, +MWF, 10:00AM, 11:00AM, 1, 1,,,, +MWF, 12:00PM, 1:00PM, 1, 1,,,, +MWF, 1:00PM, 2:00PM, 1, 1,,,, +MWF, 2:00PM, 3:00PM, 1, 1,,,, +MWF, 3:00PM, 4:00PM, 1, 1,,,, +MWF, 4:00PM, 5:00PM, 1, 1,,,, +MWF, 5:00PM, 6:00PM, 1, 1,,,, +MWF, 6:00PM, 7:00PM, 1, 1,,,, +MWF, 7:00PM, 8:00PM, 1, 1,,,, +MWF, 8:00PM, 9:00PM, 1, 1,,,, +MTWR, 7:00AM, 8:00AM, 1, 1,,,, +MTWR, 8:00AM, 9:00AM, 1, 1,,,, +MTWR, 9:00AM, 10:00AM, 1, 1,,,, +MTWR, 10:00AM, 11:00AM, 1, 1,,,, +MTWR, 11:00AM, 12:00PM, 1, 1,,,, +MTWR, 12:00PM, 1:00PM, 1, 1,,,, +MTWR, 1:00PM, 2:00PM, 1, 1,,,, +MTWR, 2:00PM, 3:00PM, 1, 1,,,, +MTWR, 3:00PM, 4:00PM, 1, 1,,,, +MTWR, 4:00PM, 5:00PM, 1, 1,,,, +MTWR, 5:00PM, 6:00PM, 1, 1,,,, +MTWR, 6:00PM, 7:00PM, 1, 1,,,, +MTWR, 7:00PM, 8:00PM, 1, 1,,,, +MTWR, 8:00PM, 9:00PM, 1, 1,,,, +MW, 7:00AM, 8:00AM, 1, 1, MW, 8:00AM, 9:00AM, 1 +MW, 8:00AM, 9:00AM, 1, 1, MW, 9:00AM, 10:00AM, 1 +MW, 9:00AM, 10:00AM, 1, 1, MW, 10:00AM, 11:00AM, 1 +MW, 10:00AM, 11:00AM, 1, 1, MW, 11:00AM, 12:00PM, 1 +MW, 11:00AM, 12:00PM, 1, 1, MW, 12:00PM, 1:00PM, 1 +MW, 12:00PM, 1:00PM, 1, 1, MW, 1:00PM, 2:00PM, 1 +MW, 1:00PM, 2:00PM, 1, 1, MW, 2:00PM, 3:00PM, 1 +MW, 2:00PM, 3:00PM, 1, 1, MW, 3:00PM, 4:00PM, 1 +MW, 3:00PM, 4:00PM, 1, 1, MW, 4:00PM, 5:00PM, 1 +MW, 4:00PM, 5:00PM, 1, 1, MW, 5:00PM, 6:00PM, 1 +MW, 5:00PM, 6:00PM, 1, 1, MW, 6:00PM, 7:00PM, 1 +MW, 6:00PM, 7:00PM, 1, 1, MW, 7:00PM, 8:00PM, 1 +MW, 7:00PM, 8:00PM, 1, 1, MW, 8:00PM, 9:00PM, 1 +TR, 7:00AM, 8:00AM, 1, 1, TR, 8:00AM, 9:00AM, 1 +TR, 8:00AM, 9:00AM, 1, 1, TR, 9:00AM, 10:00AM, 1 +TR, 9:00AM, 10:00AM, 1, 1, TR, 10:00AM, 11:00AM, 1 +TR, 10:00AM, 11:00AM, 1, 1, TR, 11:00AM, 12:00PM, 1 +TR, 11:00AM, 12:00PM, 1, 1, TR, 12:00PM, 1:00PM, 1 +TR, 12:00PM, 1:00PM, 1, 1, TR, 1:00PM, 2:00PM, 1 +TR, 1:00PM, 2:00PM, 1, 1, TR, 2:00PM, 3:00PM, 1 +TR, 2:00PM, 3:00PM, 1, 1, TR, 3:00PM, 4:00PM, 1 +TR, 3:00PM, 4:00PM, 1, 1, TR, 4:00PM, 5:00PM, 1 +TR, 4:00PM, 5:00PM, 1, 1, TR, 5:00PM, 6:00PM, 1 +TR, 5:00PM, 6:00PM, 1, 1, TR, 6:00PM, 7:00PM, 1 +TR, 6:00PM, 7:00PM, 1, 1, TR, 7:00PM, 8:00PM, 1 +TR, 7:00PM, 8:00PM, 1, 1, TR, 8:00PM, 9:00PM, 1 +WF, 7:00AM, 8:00AM, 1, 1, WF, 8:00AM, 9:00AM, 1 +WF, 8:00AM, 9:00AM, 1, 1, WF, 9:00AM, 10:00AM, 1 +WF, 9:00AM, 10:00AM, 1, 1, WF, 10:00AM, 11:00AM, 1 +WF, 10:00AM, 11:00AM, 1, 1, WF, 11:00AM, 12:00PM, 1 +WF, 12:00PM, 1:00PM, 1, 1, WF, 1:00PM, 2:00PM, 1 +WF, 1:00PM, 2:00PM, 1, 1, WF, 2:00PM, 3:00PM, 1 +WF, 2:00PM, 3:00PM, 1, 1, WF, 3:00PM, 4:00PM, 1 +WF, 3:00PM, 4:00PM, 1, 1, WF, 4:00PM, 5:00PM, 1 +WF, 4:00PM, 5:00PM, 1, 1, WF, 5:00PM, 6:00PM, 1 +WF, 5:00PM, 6:00PM, 1, 1, WF, 6:00PM, 7:00PM, 1 +WF, 6:00PM, 7:00PM, 1, 1, WF, 7:00PM, 8:00PM, 1 +WF, 7:00PM, 8:00PM, 1, 1, WF, 8:00PM, 9:00PM, 1 +MW, 7:30AM, 9:00AM, 1.5, 1.5, MW, 9:00AM, 10:30AM, 1.5 +MW, 9:00AM, 10:30AM, 1.5, 1.5, MW, 10:30AM, 12:00PM, 1.5 +MW, 10:30AM, 12:00PM, 1.5, 1.5, MW, 12:00PM, 1:30PM, 1.5 +MW, 12:00PM, 1:30PM, 1.5, 1.5, MW, 1:30PM, 3:00PM, 1.5 +MW, 1:30PM, 3:00PM, 1.5, 1.5, MW, 3:00PM, 4:30PM, 1.5 +MW, 3:00PM, 4:30PM, 1.5, 1.5, MW, 4:30PM, 6:00PM, 1.5 +MW, 4:30PM, 6:00PM, 1.5, 1.5, MW, 6:00PM, 7:30PM, 1.5 +MW, 6:00PM, 7:30PM, 1.5, 1.5, MW, 7:30PM, 9:00PM, 1.5 +TR, 7:30AM, 9:00AM, 1.5, 1.5, TR, 9:00AM, 10:30AM, 1.5 +TR, 9:00AM, 10:30AM, 1.5, 1.5, TR, 10:30AM, 12:00PM, 1.5 +TR, 10:30AM, 12:00PM, 1.5, 1.5, TR, 12:00PM, 1:30PM, 1.5 +TR, 12:00PM, 1:30PM, 1.5, 1.5, TR, 1:30PM, 3:00PM, 1.5 +TR, 1:30PM, 3:00PM, 1.5, 1.5, TR, 3:00PM, 4:30PM, 1.5 +TR, 3:00PM, 4:30PM, 1.5, 1.5, TR, 4:30PM, 6:00PM, 1.5 +TR, 4:30PM, 6:00PM, 1.5, 1.5, TR, 6:00PM, 7:30PM, 1.5 +TR, 6:00PM, 7:30PM, 1.5, 1.5, TR, 7:30PM, 9:00PM, 1.5 +WF, 7:30AM, 9:00AM, 1.5, 1.5, WF, 9:00AM, 10:30AM, 1.5 +WF, 9:00AM, 10:30AM, 1.5, 1.5, WF, 10:30AM, 12:00PM, 1.5 +WF, 12:00PM, 1:30PM, 1.5, 1.5, WF, 1:30PM, 3:00PM, 1.5 +WF, 1:30PM, 3:00PM, 1.5, 1.5, WF, 3:00PM, 4:30PM, 1.5 +WF, 3:00PM, 4:30PM, 1.5, 1.5, WF, 4:30PM, 6:00PM, 1.5 +WF, 4:30PM, 6:00PM, 1.5, 1.5, WF, 6:00PM, 7:30PM, 1.5 +WF, 6:00PM, 7:30PM, 1.5, 1.5, WF, 7:30PM, 9:00PM, 1.5 +F, 7:00AM, 8:00AM, 1, 1,,,, +F, 8:00AM, 9:00AM, 1, 1,,,, +F, 9:00AM, 10:00AM, 1, 1,,,, +F, 10:00AM, 11:00AM, 1, 1,,,, +F, 12:00PM, 1:00PM, 1, 1,,,, +F, 1:00PM, 2:00PM, 1, 1,,,, +F, 2:00PM, 3:00PM, 1, 1,,,, +F, 3:00PM, 4:00PM, 1, 1,,,, +F, 4:00PM, 5:00PM, 1, 1,,,, +F, 5:00PM, 6:00PM, 1, 1,,,, +F, 6:00PM, 7:00PM, 1, 1,,,, +F, 7:00PM, 8:00PM, 1, 1,,,, +F, 8:00PM, 9:00PM, 1, 1,,,, +R, 7:00AM, 8:00AM, 1, 1,,,, +R, 8:00AM, 9:00AM, 1, 1,,,, +R, 9:00AM, 10:00AM, 1, 1,,,, +R, 10:00AM, 11:00AM, 1, 1,,,, +R, 11:00AM, 12:00PM, 1, 1,,,, +R, 12:00PM, 1:00PM, 1, 1,,,, +R, 1:00PM, 2:00PM, 1, 1,,,, +R, 2:00PM, 3:00PM, 1, 1,,,, +R, 3:00PM, 4:00PM, 1, 1,,,, +R, 4:00PM, 5:00PM, 1, 1,,,, +R, 5:00PM, 6:00PM, 1, 1,,,, +R, 6:00PM, 7:00PM, 1, 1,,,, +R, 7:00PM, 8:00PM, 1, 1,,,, +R, 8:00PM, 9:00PM, 1, 1,,,, +MW, 8:00AM, 10:00AM, 2, 2,,,, +MW, 10:00AM, 12:00PM, 2, 2,,,, +MW, 12:00PM, 2:00PM, 2, 2,,,, +MW, 2:00PM, 4:00PM, 2, 2,,,, +MW, 4:00PM, 6:00PM, 2, 2,,,, +MW, 6:00PM, 8:00PM, 2, 2,,,, +WF, 8:00AM, 10:00AM, 2, 2,,,, +WF, 12:00PM, 2:00PM, 2, 2,,,, +WF, 2:00PM, 4:00PM, 2, 2,,,, +WF, 4:00PM, 6:00PM, 2, 2,,,, +WF, 6:00PM, 8:00PM, 2, 2,,,, +TR, 8:00AM, 10:00AM, 2, 2,,,, +TR, 10:00AM, 12:00PM, 2, 2,,,, +TR, 12:00PM, 2:00PM, 2, 2,,,, +TR, 2:00PM, 4:00PM, 2, 2,,,, +TR, 4:00PM, 6:00PM, 2, 2,,,, +TR, 6:00PM, 8:00PM, 2, 2,,,, +MW, 7:30AM, 9:00AM, 1.5, 1.5,,,, +MW, 9:00AM, 10:30AM, 1.5, 1.5,,,, +MW, 10:30AM, 12:00PM, 1.5, 1.5,,,, +MW, 12:00PM, 1:30PM, 1.5, 1.5,,,, +MW, 1:30PM, 3:00PM, 1.5, 1.5,,,, +MW, 3:00PM, 4:30PM, 1.5, 1.5,,,, +MW, 4:30PM, 6:00PM, 1.5, 1.5,,,, +MW, 6:00PM, 7:30PM, 1.5, 1.5,,,, +MW, 7:30PM, 9:00PM, 1.5, 1.5,,,, +WF, 7:30AM, 9:00AM, 1.5, 1.5,,,, +WF, 9:00AM, 10:30AM, 1.5, 1.5,,,, +WF, 12:00PM, 1:30PM, 1.5, 1.5,,,, +WF, 1:30PM, 3:00PM, 1.5, 1.5,,,, +WF, 3:00PM, 4:30PM, 1.5, 1.5,,,, +WF, 4:30PM, 6:00PM, 1.5, 1.5,,,, +WF, 6:00PM, 7:30PM, 1.5, 1.5,,,, +WF, 7:30PM, 9:00PM, 1.5, 1.5,,,, +TR, 7:30AM, 9:00AM, 1.5, 1.5,,,, +TR, 9:00AM, 10:30AM, 1.5, 1.5,,,, +TR, 10:30AM, 12:00PM, 1.5, 1.5,,,, +TR, 12:00PM, 1:30PM, 1.5, 1.5,,,, +TR, 1:30PM, 3:00PM, 1.5, 1.5,,,, +TR, 3:00PM, 4:30PM, 1.5, 1.5,,,, +TR, 4:30PM, 6:00PM, 1.5, 1.5,,,, +TR, 6:00PM, 7:30PM, 1.5, 1.5,,,, +TR, 7:30PM, 9:00PM, 1.5, 1.5,,,, diff --git a/java/hello-world/src/main/resources/constants/semester-configurations.tsv b/java/hello-world/src/main/resources/constants/semester-configurations.tsv new file mode 100644 index 00000000..15974048 --- /dev/null +++ b/java/hello-world/src/main/resources/constants/semester-configurations.tsv @@ -0,0 +1,184 @@ +csc1000 1-0-0 +csc1001 3-1-0 +csc1001L 0-1-0 +csc1024 1-0-1 +csc1031 0-0-2 +csc1032 2-0-1 +csc2001 3-1-0 +csc2001L 0-1-0 +csc2050 2-0-1 +csc2092 4-0-0 +csc2200 3-0-0 +csc2270 various +csc2292 various +cpe2300 3-0-0 +csc2600 2-0-1 +csc3000 3-0-0 +csc3001 3-1-0 +csc3044 Lecture_with_Lab +csc3100 3-1-0 +csc3104 2-0-1 +csc3111 2-0-1 +csc3112 2-0-1 +csc3113 2-0-1 +csc3200 2-0-1 +csc3201 3-0-0 +csc3203 1-0-1 +csc3250 1-0-1 +csc3300 2-0-1 +csc3445 3-0-0 +csc3449 4-0-0 +csc3660 1-0-1 +csc3662 1-0-1 +csc3665 3-1-0 +csc3710 1-0-0 +csc3760 2-0-1 +csc3780 3-1-0 +csc4036 2-0-1 +csc4037 2-0-1 +csc4091 1-0-0 +csc4092 various +csc4093 various +csc4100 3-1-0 +csc4160 3-1-0 +csc4161 3-1-0 +csc4170 various +csc4184 2-0-1 +csc4186 2-0-1 +csc4191 1-0-0 +csc4192 various +csc4193 various +csc4210 2-1-0 +csc4212 2-0-1 +csc4214 1-0-0 +cpe4220 2-0-1 +cpe4225 2-0-1 +csc4230 2-0-1 +csc4260 2-1-0 +csc4261 2-1-0 +csc4270 various +csc4291 1-0-0 +csc4292 various +csc4293 various +csc4310 2-0-1 +csc4400 Independent_Study +csc4431 1-0-2 +csc4432 1-0-2 +csc4448 4-0-0 +csc4460 Independent_Study +csc4461 Independent_Study +csc4470 various +csc4471 Lab_only +csc4472 Activity_only +csc4495 Independent_Study +csc4553 2-0-1 +csc4554 4-0-0 +cpe4669 3-1-0 +csc4570 various +csc4610 3-1-0 +csc4620 3-1-0 +csc4665 3-1-0 +csc4667 3-1-0 +csc4691 Seminar_only +csc4692 Lecture_only +csc4693 Lecture_only +csc4710 2-1-0 +csc4730 2-0-1 +csc4740 2-1-0 +csc4760 2-1-0 +csc4770 various +csc4791 1-0-0 +csc4792 various +csc4793 various +csc4820 3-1-0 +csc4821 Lecture_with_Lab +csc4880 3-1-0 +csc4881 3-1-0 +csc4888 3-1-0 +csc4891 1-0-0 +csc4892 Lecture_only +csc4893 Lecture_only +csc4991 1-0-0 +csc4992 Lecture_only +csc4993 Lecture_only +csc5092 Lecture_only +csc5100 3-0-0 +csc5113 3-0-0 +csc5170 Lecture_only +csc5201 3-0-0 +csc5210 3-0-0 +csc5220 3-0-0 +csc5270 various +csc5281 2-0-1 +csc5292 Lecture_only +cpe5300 2-0-1 +csc5300 Lecture_only +csc5370 various +csc5445 2-0-0 +csc5447 2-0-0 +csc5449 4-0-0 +csc5500 Independent_Study +csc5550 3-0-0 +csc5570 various +csc5571 Lab_only +csc5572 Activity_only +csc5590 3-0-0 +csc5591 Independent_Study +csc5595 Independent_Study +csc5599 Independent_Study +cpe5640 Lecture_only +csc5660 4-0-0 +csc5666 4-0-0 +csc5669 3-1-0 +csc5670 various +csc5710 2-1-0 +csc5740 2-1-0 +csc5770 various +csc5810 Lecture_with_Lab +csc5820 3-1-0 +csc5870 various +csc5880 3-1-0 +csc5887 4-0-0 +cpe1000 1-0-0 +cpe2300 3-0-0 +cpe2301 0-1-0 +cpe3160 2-0-1 +cpe3201 3-0-0 +cpe3300 3-1-0 +cpe3345 2-0-1 +cpe4140 2-0-1 +cpe4160 3-1-0 +cpe4180 2-0-1 +cpe4190 3-1-0 +cpe4220 2-0-1 +cpe4250 2-0-1 +cpe4260 2-1-0 +cpe4261 2-1-0 +cpe4280 2-0-1 +cpe4300 3-1-0 +cpe4310 2-0-1 +cpe4390 2-0-1 +cpe4400 nonstandard +cpe4420 2-0-1 +cpe4455 3-1-0 +cpe4460 1-2-0 +cpe4461 1-2-0 +cpe4464 2-1-0 +cpe4465 2-0-1 +cpe4470 various +cpe4471 various +cpe4472 nonstandard +cpe4491 1-0-0 +cpe4492 various +cpe4493 various +cpe4495 nonstandard +cpe4553 2-0-1 +cpe4570 various +cpe4650 2-1-0 +cpe4669 3-1-0 +cpe4995 various +cpe5300 3-0-0 +cpe5350 2-0-1 +cpe5420 3-1-0 +cpe5564 3-0-0 +cpe5660 2-0-1 diff --git a/java/hello-world/src/main/resources/input/PrescheduledTimes_ExampleFile.example.json b/java/hello-world/src/main/resources/input/PrescheduledTimes_ExampleFile.example.json new file mode 100644 index 00000000..c8a6180d --- /dev/null +++ b/java/hello-world/src/main/resources/input/PrescheduledTimes_ExampleFile.example.json @@ -0,0 +1,71 @@ +{ + "LastName, FirstName": [ + { + "start": "10:00AM", + "day": "MONDAY", + "end": "12:00PM" + }, + { + "start": "10:00AM", + "day": "WEDNESDAY", + "end": "12:00PM" + }, + { + "start": "10:00AM", + "day": "FRIDAY", + "end": "12:00PM" + }, + { + "start": "4:00PM", + "day": "MONDAY", + "end": "6:00PM" + }, + { + "start": "4:00PM", + "day": "WEDNESDAY", + "end": "6:00PM" + }, + { + "start": "4:00PM", + "day": "FRIDAY", + "end": "6:00PM" + }, + { + "start": "12:00PM", + "day": "MONDAY", + "end": "2:00PM" + }, + { + "start": "12:00PM", + "day": "WEDNESDAY", + "end": "2:00PM" + }, + { + "start": "12:00PM", + "day": "FRIDAY", + "end": "2:00PM" + } + ], + "LastName2, FirstName2": [ + { + "start": "9:00AM", + "day": "MONDAY", + "end": "10:30AM" + }, + { + "start": "9:00AM", + "day": "WEDNESDAY", + "end": "10:30AM" + }, + { + "start": "11:00AM", + "day": "MONDAY", + "end": "1:00PM" + }, + { + "start": "11:00AM", + "day": "WEDNESDAY", + "end": "1:00PM" + } + ] +} \ No newline at end of file diff --git a/java/hello-world/src/main/resources/input/schedule-term-cpe.example.json b/java/hello-world/src/main/resources/input/schedule-term-cpe.example.json new file mode 100644 index 00000000..02b9d7e3 --- /dev/null +++ b/java/hello-world/src/main/resources/input/schedule-term-cpe.example.json @@ -0,0 +1,18 @@ +[ + { + "name": "LastName, FirstName", + "fall": [], + "spring": [ + "cpe470" + ] + }, + { + "name": "LastName2, FirstName2", + "fall": [ + "cpe426" + ], + "spring": [ + "cpe333" + ] + } +] \ No newline at end of file diff --git a/java/hello-world/src/main/resources/input/term_survey.example.csv b/java/hello-world/src/main/resources/input/term_survey.example.csv new file mode 100644 index 00000000..e39f97ca --- /dev/null +++ b/java/hello-world/src/main/resources/input/term_survey.example.csv @@ -0,0 +1,44 @@ +Id,Start time,Completion time,Email,Name,"This is all new, no rolling forward","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.7-8 am","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.8-9 am","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.9-10 am","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.10-11 am","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.11-12 pm","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.12-1 pm","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.1-2 pm","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.2-3 pm","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.3-4 pm","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.4-5 pm","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.5-6 pm","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.6-7 pm","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.7-8 pm","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.8-9 pm","M Teaching Times, if you are tenure track, select conflict 11-12 pm for committee meetings +.9-10 pm","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.7-8 am","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.8-9 am","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.9-10 am","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.10-11 am","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.11-12 pm","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.12-1 pm","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.1-2 pm","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.2-3 pm","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.3-4 pm","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.4-5 pm","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.5-6 pm","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.6-7 pm","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.7-8 pm","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.8-9 pm","T Teaching Times, CSSE folks conflict 11 am for the faculty meeting.9-10 pm","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.7-8 am","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.8-9 am","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.9-10 am","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.10-11 am","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.11-12 pm","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.12-1 pm","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.1-2 pm","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.2-3 pm","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.3-4 pm","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.4-5 pm","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.5-6 pm","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.6-7 pm","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.7-8 pm","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.8-9 pm","W Teaching Times, CPE folks conflict 11 am for the faculty meeting +.9-10 pm",R (Thursday) Teaching Times.7-8 am,R (Thursday) Teaching Times.8-9 am,R (Thursday) Teaching Times.9-10 am,R (Thursday) Teaching Times.10-11 am,R (Thursday) Teaching Times.11-12 pm,R (Thursday) Teaching Times.12-1 pm,R (Thursday) Teaching Times.1-2 pm,R (Thursday) Teaching Times.2-3 pm,R (Thursday) Teaching Times.3-4 pm,R (Thursday) Teaching Times.4-5 pm,R (Thursday) Teaching Times.5-6 pm,R (Thursday) Teaching Times.6-7 pm,R (Thursday) Teaching Times.7-8 pm,R (Thursday) Teaching Times.8-9 pm,R (Thursday) Teaching Times.9-10 pm,"F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.7-8 am","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.8-9 am","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.9-10 am","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.10-11 am","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.11-12 am","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.12-1 pm","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.1-2 pm","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.2-3 pm","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.3-4 pm","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.4-5 pm","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.5-6 pm","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.6-7 pm","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.7-8 pm","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.8-9 pm","F Teaching Times, 11AM -12 PM is UU hour, everyone should select conflict.9-10 pm","My preference is to...  +Note: this is informational only, I don't understand the semester schedules enough to automate this yet.Minimize teaching days","My preference is to...  +Note: this is informational only, I don't understand the semester schedules enough to automate this yet.Teach all 5 days","My preference is to...  +Note: this is informational only, I don't understand the semester schedules enough to automate this yet.Minimize teaching time per day (i.e. spread classes out)","Given the choice, I would prefer +.Courses back-to-back, e.g. 8-10 and 10-12","Given the choice, I would prefer +.At least some gap between courses, e.g. at least 1 hour between courses","Teaching a 2 lecture 1 activity course, I'd... +Note: this is informational only, activities in the first year will be scheduled in some pattern according to lab room availability.Prefer 1 hour of lect","Teaching a 2 lecture 1 activity course, I'd... +Note: this is informational only, activities in the first year will be scheduled in some pattern according to lab room availability.Prefer a 2 hour activ","Teaching a 2 lecture 1 activity course, I'd... +Note: this is informational only, activities in the first year will be scheduled in some pattern according to lab room availability.Do not care","Teaching a 2 lecture 1 activity course, I'd... +Note: this is informational only, activities in the first year will be scheduled in some pattern according to lab room availability.Am not sure which I'd","Are there constraints you have that don't fit this format? +","For each of the courses you are teaching in the specified semester, do you have a room requirement? I.e. the course must be taught in the room due to equipment concerns? (Note that we do not have much","For the courses you are teaching in the specified semester, do you have a room preference? (Note that we do not have much control over lecture rooms and scheduling lectures in lab rooms from 8am to 3p","Any other thoughts/questions/comments/concerns? +","This survey is +" +7,1/9/2026 11:59,1/9/2026 12:01,polyEmail@calpoly.edu,FirstName LastName,Place holder for the future,,,,,,,,,,,,,,,,Acceptable,Preferred,Preferred,Preferred,Preferred,Preferred,Preferred,Preferred,Preferred,Preferred,,,,,,,,,,,,,,,,,,,,,Acceptable,Preferred,Preferred,Preferred,Preferred,Preferred,Preferred,Preferred,Preferred,Preferred,Conflict,,,,,,,,,,,,,,,,,,,,Agree,Disagree,Disagree,Agree,Neutral,Agree,Neutral,Neutral,,,"CPE 4250, I prefer 192-332",,,5 diff --git a/java/hello-world/src/main/resources/solverConfig.xml b/java/hello-world/src/main/resources/solverConfig.xml index f69b9a83..e6292076 100644 --- a/java/hello-world/src/main/resources/solverConfig.xml +++ b/java/hello-world/src/main/resources/solverConfig.xml @@ -44,7 +44,7 @@ - 3hard/10medium/30soft + 2hard/10medium/20soft