Skip to content

Courseography Projects

david-yz-liu edited this page Nov 14, 2014 · 3 revisions

Courseography Projects

This page describes some of the directions for growth we're exploring for Courseography. Of course, this document is a work in progress, so if you think of something that's not listed on this page, let us know!

New Departments, Faculties, and Campuses

Right now, the prerequisite graph is only useful for Computer Science students at the St. George campus, and the timetable grid only displays courses for the Faculty of Arts & Science (St. George). Because both of these tools draw data from different sources, we have two different paths for growth.

New Graphs

The initial CSC prerequisite graph was generated in yEd and tweaked in Inkscape, and exported as an SVG file. Generating prerequisite graphs is certainly non-trivial, and will probably always involve some human involvement to fit aesthetic sensibilities and include additional semantic information (like grouping courses by sub-discipline within a department).

In the short-term, it would be nice to generate by hand a prerequisite graph for the Math Department, so that we can work with the interplay between two prerequisite graphs (some CSC courses have MAT courses as prerequisites). Even just including one more graph prompts development of the additional graph feature of switching between graphs.

In the long-term, we can support non-technical users to create graphs on their own in a variety of ways:

  • Exploring graph generating tools like Graphviz to automatically generate a starting point for each department, which can then be manually tweaked. Depending on the sophistication of the tool used, this alone stands to save a great deal of time.
  • Building our own graph generation tool with a much more limited toolset than either yEd or Inkscape (or other, more powerful software). This would allow us to standardize the styling of each graph, and hopefully be easier for users to get started with. (Note: a good starting point would be to research existing open-source, probably web-based tools, and customizing it to fit our needs.)

Improved and Expanded Parsing

All of the information found on the timetable grid tool is automatically parsed from the official Arts & Science website. Because each faculty (across all three campuses) records its course calendar and timetable information differently, variations on the current parser must be developed to handle the different web formats. (Currently, we have no "inside information" to directly get information from any department outside of Computer Science, and until this changes, we are stuck with parsing information from public webpages.)

Currently, the parsing tool that we use is written in Python, making use of the beautiful soup module. Depending on the tastes of whoever works on this, this may either stay in Python or be ported over to Haskell; our personal preference lies with the latter.

Along the way, much refactoring should occur to unify the different parsers in a common framework. It is also very likely that our back-end data storage will be soon moving to a real database rather than a collection of JSON files, so this change would need to be integrated with the current parsing system.

Grad courses

Even just within CS, it would be pretty neat to display CS grad courses, as many of the introductory ones are accessible to many motivated undergrads. This may clutter up the graph, so it's worth discussing how these courses should be integrated.

Check My POSt!

This is a feature which allows students to see how their selections on the prerequisite graph contribute to satisfying their POSt requirements. Currently, the interface is rather mediocre, and the code supporting it suffers from massive redundancy. This feature requires a massive overhaul in both the front and back ends. The Undergraduate Office has created a nicely laid out paper checklist for both the specialist and major programs; this should form the basis of the interface.

In the longer term, it would be nice both to support the recently added specialist Focuses, as well as the programs of other departments. This leads to some interesting discussions about how we should be entering data for program requirements, and whether a separate interface for undergrad program assistants is a good idea.

Exporting Data

There are two kinds of data export we would like to support: exporting a list of all courses selected in the graph (ideally with an image of the graph), and exporting the schedule created by the grid to a variety of formats, including spreadsheets and calendar apps like Google Calendar and iCal.

It would be pretty cool to export to PDF as well!

Timetable

Right now we display all of the CSC timetable information in a big table as one of the tabs of the graph. We need to move this to another location, but it remains unclear what to do with it. Perhaps it needs to be integrated more closely with the Grid, but in what fashion?

Course Information Modal

Right now we have a modal appearing for each course on the graph, populated with information from the course calendar and timetable. It would be great to think about whether there is other information that we should display (probably), and whether the overall look of this modal can be improved (certainly).