Coder Social home page Coder Social logo

graduatenu's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

graduatenu's Issues

'SF' semester designation should be 'SM'

In Northeastern's documentation and in the degree audit, the two-letter semester designation for a class that branches both Summer 1 and Summer 2 ('S1' and 'S2') is 'SM'. Currently, the data definition uses 'SF'. This can and will inhibit compatibility with Northeastern services that make use of the two-letter semester designation system so it should be changed.

Testing - required

Needs:

Sample .html file to test parsing on.

  • double major, major-minor, combined major, single major.

JSON verifier to ensure JSONObject is properly formatted.

  • ensures object has necessary attributes and types before parsing data.

Add Co-op Support For Schedules

Support co-ops in a schedule. Probably just want to display a draggable "co-op" block in the sidebar that users can drag into the semester.

Fix class list representation

Currently, the parser is not able to handle a list of requirements associated with multiple courses of different genres. For example, if a course is required from an enumeration of courses, and that course can be part of multiple subjects (a CS capstone can be a DS course) the parser is not able to recognize that the DS course is part of this enumeration as well and there is not a current data representation for one.

For this:

  • suggest a data representation for requiring courses for different subjects for an enumeration of courses
  • implement such a data representation
  • validate the data representation with testing, updating expected aspects of a degree audit to conform to this new course representation

Add ability to skip uploading degree audit.

For third-year students who've taken 16+ courses, it may be a lot easier to upload their degree audit, than manually enter in all the courses they've taken. However for a first-year, it would be super convenient to just select a major and enter the four or so courses they've taken. Additionally, this would provide an alternative to those with qualms against uploading their degree audit.

This would entail retrieving degree requirements from elsewhere, aka scraping the Northeastern catalog. For example, here are the chemical engineering degree requirements.

Once implemented, this could also serve to help SearchNEU. See the issue here.

Credit to Da-Jin:
"I'm starting to wonder if it would be easier for some students to just select their major and then enter which classes they've taken, rather than do the entire degree audit process. Someone in their third year would enjoy the convenience of extracting all 16+ classes they taken out of the degree audit, but for someone in their first/second semester, wouldn't that be more work than it's worth?"

Add/Remove Year

Once designs are ready, implement functionality to add and remove a year from a schedule.

Fix Deleting Duplicate Courses In Plan

All duplicate courses get deleted if one course is delete. Fix this to only delete the one being deleted.

Edit: We should simply prevent duplicate courses in 1 semester lmao.

Revise "requirement" objects - HTML parser

This issue is for changing the "requirement" objects produced by the HTML parser to provide more information about their specifics.

See issue #18 "Fix class list representation" for details about requirement enumerations with multiple subjects.

See issue #21 "add "type" property to requirements while parsing html" for details about adding a new property "type" to further specify what KIND of requirement the object represents.

This issue also covers additional requirement specifications that may be decided in the future, at the will of the authors.

use a GraphQL client for requesting Majors/Plans in frontend

Currently, we're using fetch to grab the plans and majors from the SearchNEU endpoint, where we really should be using a client like Relay or Apollo to do so. The GraphQL website describes why a client is good, here.

Here's a good article contrasting the two.

This concerns the part of the frontend that makes requests to the majors/plans, in frontend/src/utils/fetchMajorsAndPlans.ts.

This could be also added to the plan parser in backend/src/prereq_loader.ts.

speed up prerequisite marking and parsing

Currently, the function that simplifies prerequisites based on courses already taken, takes a really long time to run. This is because every single time we call the function, we take time to parse all the completed courses, build up a hashmap containing all of them, and then parse the prerequisite object.

This would be a lot faster if the hashmap object only had to be build once for all of the prereqs, rather than built once for every function call.

The function is called filterAndSimplifyPrereqs in json_parser.js

Fix the parser

Currently:

Was: functional, but not well organized.
Now: non-functional, but well organized.

Deliverable:

Make both functional and well organized.

add "type" property to requirements while parsing HTML

For different majors, there are different patterns of requirements.

This issue proposes adding a "type" property to requirement objects, that would help specify the way that the requirement is meant to be completed.

For example a requirement with the "take one of the following" patterns could have the type "one-of", or "or", or ...

Another pattern is the "range except". This requirement specifies classes in a range from some number to another number, except some other union of courses. This can be seen in the new CS major requirements (with concentrations):

Complete 8 credits of CS, CY, DS, or IS classes that are not already required. Choose courses within the following ranges: 8
CS 2500 or higher, except CS 5010  
CY 2000 or higher, except CY 4930  
DS 2000 or higher, except DS 4900  
IS 2000 or higher, except IS 4900

Adding this property to requirements is needed to suggest courses that could then fill those requirements, for the user to pick.

Design: Alpha UX

Any UX changes so that the app looks like it has just released and is being continuously worked on. Potentially some tooltips/popups to guide users through the app.

  • Alpha UX cleanup
    • Displaying full course name in draggable courses
    • Hover on year to expand instead of show hide button
    • Feedback mechanism
      • Link to a google form

Error Boundary

  • Error boundary is remove in the migrating to react 18 PR since our current error boundary isn't compatible w react 18. Get it back up - easiest thing to do is just use the default react error boundary(we don't need another dependency).
  • Style the error page with this design
  • Liaise with Angela/Elaine to ensure that once implemented, technical implementation is up to design standards

Checklist for completion:

  • Error boundary should display on any route that doesn't exist
  • Error boundary should also be appropriately styled for mobile use

Finish basic schedule production

Things left to do:

  • implement topological sort on created graph
  • add functionality to deal with nested prerequisites when parsing the graph

Staging Infra

  • Dockerize the frontend and backend by adding 2 docker files
  • Enable CD so that pushing to main gets auto deployed
    • For testing purpose try changing it to deploying when you push to your branch. If it works change it to "on push to main".

Sidebar, Fix: Loading state

  • Currently, we display "course not found" when a course is being fetched. We should display a loading state instead, "loading..." works.

Improve DND Performance

Context

  • We're having performance issues with dnd when we render the sidebar.
  • Specifically, dragging is slow.
  • We found out that this is because of the amount of html content within a component.

Possible solutions

  • Hide trash button + content that can be hidden in a draggable course. Only show it when necessary: on hover, like the previous app. THIS IS PROVEN TO HELP A LOT.

Other solutions if we still need improvement

  • Virtualized lists to prevent all draggable courses to be a part of the dom
  • Only allow one requirement section to be expanded at a time so that a massive requirement section doesn't bottleneck the performance

Adding SearchNEU api query functionality

Needs to query the following from SearchNEU:

  • courses with # within a certain range. Ex. CS 2500-9999
  • prerequisites of a given course.
  • all courses with a given NUPath

Potentially need to find:

  • when courses are offered (perhaps inference based on past semesters?)

Deliverables:

  • functions that will make the queries necessary
  • functions that will parse resulting information to usable information.

Fix Safari Plan Styling

image

The plan styling is broken right now in Safari (only one year displays, and takes up the entire screen vertically, show buttons are in the wrong place).

Site appears to be down

I'm greeted with a blank screen on both mobile and desktop (Firefox) when visiting the site.

Getting a 404 when trying to GET graduatenu.com.

Class Sameness Representation

It is possible for courses to have the same course number, subject, and term (the current definition of course sameness) but to be distinct courses - honors courses, for example. As such, a definition of sameness must also rely on the distinct name of the course during the term.

Deliverables:

  • each in-progress or completed course requires a course name to be associated with it
  • enforce constraint that course name alongside number, subject or term
  • revise tests to reflect this constraint

How to make this a full-stack application?

Structuring the code is dependent on the application framework. Research needed for choosing a fitting framework.

Should have a meeting to discuss (a) what framework to use and (b) working on the frontend.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.