Closed naixian closed 7 years ago
This plan seems to be quite well planned out, good job!
Understanding the API is quite simple and essential here. What you need to understand is the genReqTree folder. This is where we parse the pre-requisites and post-requisites (which is called LockedModules
in the API).
I'm guesstimating that we manage to parse 90% of the prereqs accurately. 10% may be incomplete or wrong. This will put certain limitations on your design if you want module planning to be restrictive.
You have two choices, either
I think the plan is well thought out, and it is pretty intuitive. Do design and consider for mobile, then move your way up the screen sizes. Industry term is: "mobile first design".
I think the plan is not bad. You should make a small todolist out of the standard React-Redux framework, as implementing it would make you learn much more and deeper than just reading what others have implemented. Don't be afraid to ask questions if you hit roadblocks on this.
Otherwise the rest of the plan looks reasonable enough to be followed through.
Also: see Zhi An's comment for the other team. They're quite relevant.
Problem Statement
Having completed our first year of study in NUS, we felt that it would be important for everyone to plan ahead his or her four years of study so that he will be making full use of the period of study in school fulfilling graduation requirement and as much as possible, plan for exchange period or NOC if desired.
However, this process is currently troublesome without the help of widely recognised tools. Many of us end up searching repeatedly for prerequisite relationships in NUSMods and referring back to course requirement pages over and over again. The hassle might cause inefficiency and mistakes in the planning process and this has implication on the subsequent semesters of study in NUS.
Although we understand that NUS Oracle attempts to solve this problem, it still relies on manually looking for pre-requisite relationships from NUSMods and it does not prevent you from setting up illegal study plans (e.g. taking CS2020 before CS1010). Hence, we aim to facilitate the planning process by designing a four-year study plan builder that takes into consideration prerequisite-postrequisite relations and graduation requirement of courses in NUS.
User Story
We aim to make our project an extension of NUSMods. The interface would be quite similar to the normal timetable in NUSMods except that columns are replaced by the 8 semesters, as illustrated in the figure below: (we have done some photoshopping to demonstrate what we aim to achieve)
Figure 1
Figure 2
Explanation of Figure 2: The user has indicated a major in Computer Science (matriculated in AY2016/17). He has already added 5 modules across 3 different semesters. Each of the 8 semesters has one unique colour code. Figure 2 shows what happens just after he clicks on the existing module, CS1231: a total of 3 fictitious post-requisite modules appear, namely CS1232, CS1233 and CS1234. Among them, CS1233 cannot be added because its pre-requisite CS1020 has not been added to the table. On the other hand, CS1232 and CS1234 can (only) be added to different semesters because CS1232 has no pre-prequisite other than CS1231, while CS1234 has an additional pre-requisite, MA1101R, other than CS1231. For simplicity, the system does not explicitly notify the user that CS1234 has another pre-requisite and it is hoped that the user will check out the module information page for CS1234 so as to understand why CS1234 cannot be added in Y1S2.
Notes:
Weekly Timeline
May(W0-W3)
Finalise project specification details; Understand implementation of Nusmods v3; Learn relevant languages and tools; Finalise implementation plan;
June(W4-W7)
Making a prototype with basic features (i.e. MVP) for a few majors. The design and the algorithms must allow the logic of module addition in the way described in Figure 2, which include loading all pre-requisite and post-requisite data given a selected major, keeping track of current modules and their semesters, properly handling preclusion modules, keeping track of remaining required major modules, and so on.
July(W8-W11)
Incorporating other considerations that are mentioned or not mentioned above. such as non-major modules, non-manual retrieval of course requirement, adding more semesters and special term options, and so on. Making the product aesthetically presentable and reasonably usable; Asking people to try out the platform and modifying it based on their feedback
Implementation Plan
We will be at least working with Github, HTML/CSS, JavaScript, Redux and React; a lot of ideas and features will come from NUSMods v3 as well and it is very important that we understand how it works. It will be good to use topological sorting to load the module plan based on given prerequisite relations.
This proposal is prepared by Yiwen and Naixian from Team 1332. Thank you for reading and we look forward to your valuable inputs!