Thought i'd get down some thoughts and elementary structure (largely based on Jacob's ideas). Please comment :)
We will need:
Ideally we'll keep these very modular, in which case we'll practically need an API between each. That way we can potentially develop multiple enumerator algorithms for example (better optimised ones later on) and easily swap them in. Also leaves the possibility to add scrapers for other unis (one of my Software Engineering mates at UniSA would be keen), and different interfaces (as above).
Using objects, just one possibility:
Realm = Vector<Realm_Semester>Courses = Vector<Course> (the 4 or so selected by the user)TitleClasses = Vector<Class>Times = Vector<Time> (timeslot options for each class)Timetables_Generated = Vector<Timetable> (possible timetables available)Rank (index)Class_List = Vector<*Time> (class times that make up the timetable)Timetable = *Timetable (pointer to selected timetable)I'm thinking C++ is a good idea, since it'll be most versatile. Once we have the binary we can compile it as a library for practically anything else. Also probably the most portable between architectures, without assuming a particular interpreter. And just generally most solid and stable and what we're all familiar with.