public static void parseCrsFile(String fileName){
        /* Read a course file to see who is in what class and what rooms can be used, 
         * then create people as dictated. This way, you only need to input class data,
         * not individual students and teachers. It also constructs a list of rooms 
         * dynamically so that if we start to use the basement or something, all we need
         * to change are the html / php files (no need to recompile or anything). */
        String[] rawData  = readFile(fileName, Charset.defaultCharset()).split(";"); // Course name
        
        /* Courses are stored in the form:
         * NAME;FREQ;TEACHER;STUDENT~STUDENT~...~STUDENT;1a~1b~...MR */
        
        /* Frequency, i.e. times per week the class occurs or how many times the for
         * loop is run when scheduling a course. */
        String courseName = rawData[0];
        int freq = Integer.parseInt(rawData[1]);
        Course course = new Course(courseName, freq);
        Scheduler.failPoints.put(courseName,  0);
        Scheduler.courses.put(courseName, course);
        /* Store arts separately because they are scheduled after everything else. */
        //boolean mutable = rawData[5].equals("mutable");
        if (isArt(courseName)){
        	course.isMutable = true;
        	Scheduler.artNamesBak.add(courseName);
		} else {
			Scheduler.courseNamesBak.add(courseName);
		}
        
        /* Make a new teacher / room / student if and only if the program hasn't seen the 
         * name before. Either way, mark the addition in the course object. */
        
        /* Construct room list dynamically.*/
        ArrayList<String> RN = new ArrayList<String>(Arrays.asList(rawData[4].split("~")));
        RN.removeAll(Arrays.asList("", null));
        HashSet<String> roomNames = new HashSet<String>(RN);
        for (String room : roomNames){
            if (!Scheduler.rooms.containsKey(room))
                Scheduler.rooms.put(room, new Room(room));
            course.addRoom(room);
        }
        
        /* Teachers are people too. */
        String teacherName = rawData[2];
        if (!Scheduler.people.containsKey(teacherName))
            Scheduler.people.put(teacherName,  new Teacher(teacherName));
        course.addPerson(teacherName);
        
        /* Students aren't, but we let them think they are. */
        ArrayList<String> SN = new ArrayList<String>(Arrays.asList(rawData[3].split("~")));
        SN.removeAll(Arrays.asList("", null));
        HashSet<String> studentNames = new HashSet<String>(SN);
        for (String student : studentNames){
            if (!Scheduler.people.containsKey(student)){
                Scheduler.people.put(student, new Student(student));
            }
            
            course.addPerson(student);
            Scheduler.people.get(student).addCoursesToSchedule(course.freq);    
        }
    }