Open Davidster opened 7 years ago
I'll assume silence means that we are not adding this to MVP but may still consider adding it in the future. Marking it was wontfix
for the time being.
I like this proposal. Once we gather the set of requirements, we can generate recommended sequences using topological sort as per our previous conversations.
By "the requirements" I mean the set of required courses and number of electives and such (for a given program)
Can we find other programs with recommended sequences?
I did a bunch of looking around the Concordia website, trying to find recommended sequences similar to the ones provided for engineering programs. After about 90 minutes of search, I checked at least 20 different programs from various departments/faculties and only found three pages that offer a similar resource:
Chemistry and Biochemistry are of the same format, but Physics is completely different and all three of them are different from the engineering format. Because of this disparity, I don't think it is or will ever be worth our time to write scrapers for these.
Many other programs provide PDF forms for their students to help define program requirements, such as the History program.
Recommended sequences seem like they are only standardized for the Engineering and Computer Science department and therefore we should only webscrape for recommended sequences in said department.
How do we provide support for other programs?
Instead of looking at the year-by-year sequence for other programs, we should instead come up with an additional system which makes it easier for the user to fill up the table on our site.
It seems that many programs (not engineering doe LOL) follow a standardized format for defining their requirements in terms of which courses must be taken and the minimum number of credits to graduate. This includes lists of electives where the student chooses a certain number of credits from multiple separate lists. These lists are defined in the undergraduate calender, the same place we're scraping course info from.
Here's what it looks like:
Supporting such program requirements would open the door to many new programs on top of Engineering & CS. But before deciding if we should do this we must consider how it may be done...
In the backend
From the webscraping end, we can define a pretty simple spec which I think would be fairly robust and do a good job of defining the type of program requirements mentioned above:
e.g. Requirements for Major in Philosophy from above photo
Where
minTotalCredits
would be put in this spec instead of the recommended sequencesrequiredList
denotes courses that must be takencreditRequirements
denotes the minimum number of credits that must be selected from theelectiveGroup
anyOfPattern
allows us the let the user select any course whose code matches the pattern instead of an actual list.In terms of backend validation, it would be easy to add a clause which checks that the above requirements are satisfied by the user's proposed sequence.
According to @stumash, it seems that it would be easy to take the
requiredList
and transform it into a recommended sequence via topological sort. We can discuss later whether we want this to be performed at scrape-time or run-time (I vote scrape-time).Please let me know what you guys think of all this.
In the frontend
Let's assume we agree that the above program requirements spec is sufficient for what we want to accomplish.
In order to make the
electiveGroups
array useful, it seems to me that we would need to add a new UI element which presents these groups in a visually pleasing way. Some sort of nicely formatted list of courses which can be dragged into the table.Do you guys think this UI addition is feasible? Can we come up with a design whereby there is still enough space on the page for the table?
Is it even worth adding this type of support at all? I assume we won't do this for MVP.