based on ER Diagram: prerequisites should not in courses - violates 1NF and is also duplicative since there is a prerequisites table
based on schema.sql: missing pre-requisite and co-requisite tables, should not be in courses (see 1)
users missing from schema? (also are co-requisites ever accounted for? is there a prerequisites table?)
it might make sense to have "completed" be within the courses table as opposed to it's own table - that way you could also have "in progress" be an option (allowing you to add a message that recommended courses require a passing grade in "in progress" prerequisite courses)
consider creating a new table for cross-listed courses (similar to prerequisites/co-requisites in 1 and 2) - that way it won't violate 1NF if a course is cross-listed more than once
consistency across names (singular vs. plural): GET /subjects/{prefix}/course vs. GET /program/{program_id}/requirements, etc.
consider allowing a list of courses to be inputted into PUT /user/history/{course_id} - would prevent a lot of tedious repetition
maybe allow for more than one plan per person - consider a current 4th year undergraduate student who want to plan out current degree requirements and also master program requirements (2 different "plans" with different years, possibly different departments, etc.)
consider adding a way for users to indicate which term they are interested in at the moment (adding a quarter/term input) to better filter possible course options
all major curriculum requirements include GEs, perhaps find a way to indicate if courses fulfill certain electives - would be helpful in removing or suggesting courses based on completed courses
I know people can double-major or have a double concentration - maybe allow for adding more than one program/concentration for the same plan?
what about transfer credits? users would liekly just input what course requirement(s) those classes fulfilled, but sometimes a transfer course might meet the C2 requirement (for example) but not match any specific course - perhaps allow for adding courses simply by elective requirement (would only work for GEs, and maybe major/support electives)
based on ER Diagram: prerequisites should not in courses - violates 1NF and is also duplicative since there is a prerequisites table
based on schema.sql: missing pre-requisite and co-requisite tables, should not be in courses (see 1)
users missing from schema? (also are co-requisites ever accounted for? is there a prerequisites table?)
it might make sense to have "completed" be within the courses table as opposed to it's own table - that way you could also have "in progress" be an option (allowing you to add a message that recommended courses require a passing grade in "in progress" prerequisite courses)
consider creating a new table for cross-listed courses (similar to prerequisites/co-requisites in 1 and 2) - that way it won't violate 1NF if a course is cross-listed more than once
consistency across names (singular vs. plural): GET /subjects/{prefix}/course vs. GET /program/{program_id}/requirements, etc.
consider allowing a list of courses to be inputted into PUT /user/history/{course_id} - would prevent a lot of tedious repetition
maybe allow for more than one plan per person - consider a current 4th year undergraduate student who want to plan out current degree requirements and also master program requirements (2 different "plans" with different years, possibly different departments, etc.)
consider adding a way for users to indicate which term they are interested in at the moment (adding a quarter/term input) to better filter possible course options
all major curriculum requirements include GEs, perhaps find a way to indicate if courses fulfill certain electives - would be helpful in removing or suggesting courses based on completed courses
I know people can double-major or have a double concentration - maybe allow for adding more than one program/concentration for the same plan?
what about transfer credits? users would liekly just input what course requirement(s) those classes fulfilled, but sometimes a transfer course might meet the C2 requirement (for example) but not match any specific course - perhaps allow for adding courses simply by elective requirement (would only work for GEs, and maybe major/support electives)