nusmods
nusmods copied to clipboard
RFC Undergraduate Degree Planner
NUSMods Undergraduate Degree Planner
Existing solutions are spreadsheet solutions (see: NUS Module Planner) that are created over and over again by NUS students, each done accordingly to fulfill their own faculty's and their major's requirements.
@jin and myself have been thinking about this problem recently because we're about to file for graduation (FFG). Seems redundant for every new batch to rebuild a new spreadsheet to attempt to plan their modules.
This is an attempt to tackle the planning problem by deconstructing the CORS degree verifier, so as to help students FFG, and plan for programmes such as exchange, NUS Overseas Colleges (NOC) etc, so that students need not unnecessarily overload or extend their candidature.
Some Requirements
- As a user, I want to know what modules I have taken
- As a user, I want to plan my modules according to my degree requirements
- As a user, I want to find out what modules to take to fulfill my degree requirements
- As a user, I want to share my study plan with others
Input related questions
- Which modules have I taken?
- (leads to asking) How many MCs have I cleared?
- What is my:
- Faculty
- Major
- Programme
- How will the above information help me in creating a:
- Roadmap
- Semester Plan
Considerations (Request for Comments)
There're too many moving parts, things such as module mapping varies a lot for different students.
We were thinking of working from the highest level NUS Undergraduate Degree Requirements in order to develop the various 'requirements to graduate' templates that can be built by the community to use:
- University Level Requirements (20 MCs)
- Programme Requirements, Unrestricted Electives (120-140 MCs)
For the CS students: You can think of this as Java abstract classes / interfaces.
Open to any comments or suggestions on a first pass at a possible solution!
Timeline
Ambitiously, we would like to have a solution that works across the entire university.
However we are still assessing the feasibility of the solution, and may have to settle on solving first for our home faculty, the School of Computing, which we know best.
References
👍, looking forward to any feedback.
Some quick notes:
Personally have thought of building something like this, I think this will be immensely helpful.
I have my own spreadsheet as well, maybe we can use these spreadsheets as a starting point to consider what sort of UI / logic we need to implement.
I also have a feeling orbital projects tried to do this but due to reasons none of them took off.
I like that this is scoped out, because it's not easy, and if there are bugs it will cause frustration for students who rely on this (like how they rely on nusmods) (can solve this with an experimental tag).
Also need to consider different cohorts, e.g. for CS, the reqs changed in 2014.
I suggest if we would like to move forward with this, to get prototype up before we grad, because I feel like after we grad, there is very little incentive to do so. There's only so much charity in us :P
I think quite ironically, the way to do as little is to make this as flexible as possible. If we allow users to add arbitrary constraints, then we don't have to track each and every combination of course x major x cohort. They can start from a boilerplate and customize to their needs. Or thinking even further, crowdsource this boilerplate creation and sharing system (docker hub for module requirements).
Just wondering what is the progress of this issue so far?
Also, instead of a fix template, maybe allowing users to tag and set different faculty requirements can also be an option? What do you think? @li-kai
Discussion around this has been sparse because priority has been on other things and NUS has since introduced the "What If" calculator that fulfill most of NUS students' need.
However, we do have some progress. I'll roughly break down the feature into two separate parts:
-
Tracking and organization of all future and past modules This has actually been implemented in #1383, but can only be accessed if you opt in to beta in the settings page. @ZhangYiJiang Would you be kind enough to provide details on the progress of this feature?
-
Checking of graduation requirements
- Strict enforcement This is the biggest blocker because NUSMods must guarantee data accuracy (Imagine that someone can't graduate in time because of this). As such, until the school can give us accurate module prerequisite and requirements, this is unfortunately not possible at the moment.
- Flexible / loose checking This is an option but we do not have a good UX in mind. We'd be grateful if someone is willing to take a crack at this.
Planner is somewhat functional, but probably not good enough for a general release. I'll want to see at least these features implemented before it is released
- Onboarding that allows users to enter add a default set of prereqs into the table taken from faculty study plans
- Allow users to sync their timetables from the planner (manual sync is probably better since it might be too easy to mess up the timetable from the planner)
- Add exam clash timetable from the timetable to the planner for the current year
- Timetable clash (ie. unmovable modules in the same timeslot) would be a stretch goal. This would also be useful in the timetable and module info pages
Me and @wei2912 were discussing on working on this for an Orbital project this year. Our general idea was to implement a simple DSL format for users to specify the requirements for the degree, based off of the requirements published by each faculty. This can be done for each degree (we'd probably define some common "modules" which are common between degrees, eg. the University Level Requirements). The challenge would be to come up with a user-friendly but semantically accurate DSL which can convey all the various requirements that each degree could possibly have (eg. having to take 2 modules in the same semester, at least 1 module in a group being level 4000, etc.). We'd then parse this DSL, and use its results to populate the planner page with more specific feedback/error messages. Ideally, getting accurate data from NUS would be the best case scenario for something like this, but based on my understanding that doesn't seem likely, so a crowdsourced solution like this which is easily accessible is probably the next-best alternative.
This is still very much in the ideation phase, and we understand that NUS has its own What-If solution for something like this, though we've heard that it isn't very flexible, and access is also disallowed for Y1 students. We'd appreciate any feedback on this, including details on NUS's What-If solution.
Interesting. NUS's what-if thing is confusing af. I don't actually know anyone who knows how to use it (and most haven't even heard of it), so any solution here will be great!
Haven't thought much about this, but my concern with a DSL approach is that it may be too intimidating for non-technical users. A fancy graphical UI may also be hard since there are so many rules and exceptions involved and a GUI will probably get clunky very quickly. I guess this may have been what happened with the what-if tool.
I suspect specifying degree requirements will likely be way too much work for users, no matter how much effort we put into making it nice and easy to do. It may be more worth it to build out a better planner experience and let the user decide whether they've met the degree reqs by themselves.
Wild idea: if we allow users to specify that their degree plan is complete and meets all degree requirements, we may be able to recommend missing mods to other degree plans that are still being built based on popularity. E.g. we can be like "100% of all completed computer science degree plans also included CS1231 but is not in yours – you may want to check if it's a required module"
Hi, was not sure if to add to this thread, or create my own, since effectively this seemed to be a general catch-all thread with regards to the planner, so I decided to add to this first!
I suspect specifying degree requirements will likely be way too much work for users, no matter how much effort we put into making it nice and easy to do. It may be more worth it to build out a better planner experience and let the user decide whether they've met the degree reqs by themselves.
I agree with this. My opinion is that we can rely on users to come up with study plans and save them into a database, (for example, CS students can create a base template with the CS foundational mods, or even ones with specific focus areas). Sample study plans for other degrees can also be used for this. Other users can then rely on this, if not, they can make one on their own. To specify that their degree plan is complete, there can be some form of rating system to promote the correct plans over those that are incorrect. So instead of using error messages, we populate it with the mods they are expected to take (in the Plan to Take column, for example).
I think it will also be good to be able to categorise mods. For example, double-counting is a genuine concern that I have had, and I think it would be good to be able to label mods belonging to Major reqts or minors/second majors. Then there can be a simple check to see if the double-counting rules are followed.
I'm aware that the What-If reports do help with this, however as someone who's planning to complete their candidature early, the reports only unlock in Year 2 and I had to make a separate module planner on my own to ensure that I would be able to finish my reqts in the time that I wanted to.
@mzprg Just FYI (not adding anything to your points), you might want to take a look at https://github.com/nus-planner/ and https://nusplanner.com/ - so far it's the closest project to developing a complete planner afaik. Feel free to PM me for the Telegram link.
Hi @zaidansani , I have the same idea with you on a forum/reddit-like feature whereby students could create, edit, comment and share their module plan with others in an integrated interface with nusmods such that other freshman could refer to it as compared to a circulated excel sheet.
This approach solves the veracity concern since it is community driven and students could remind others if a certain module plan is deprecated.
Also, this enables students to have easier and more integrated access to the most updated module plans and if this feature is successful enough, we can even expect faculty admins to create those "recommended" module plans for different courses (optimistically speaking).
One thing about NUSPlanner as compared to nusmods will be the traffic and number of active user to actually make the crowdsource element come true so a PR combining both of the projects would be optimal for NUS students.
Glad to find developers with similar interests and happy to contribute where possible!