GithubHelp home page GithubHelp logo

courseplannerbackend's People

Contributors

kevinatorchen avatar myothiha09 avatar

Watchers

 avatar  avatar

courseplannerbackend's Issues

Advanced Sort Advanced Version

  1. Allow users to switch to the advanced version of advanced sort.
  2. Label the endpoints and middle point of each Spinner. For example, for the morning classes spinner, add "despise morning classes", "love morning classes", and "neutral".

Add Firebase Crash Reporting

Firebase Crash Reporting submit bug reports to the firebase console. We can use this in several ways. First, we can report a "bug" even if it is not based on user actions. For example. we can use it if the user did an action he was not supposed to do such as input letters in a number field. This will allow us to know if our instructions and UI/UX is misleading.

Furthermore, Android has weird cases where your app will crash on certain devices. This will allow us to iron those out.

Code Refactoring.

The methods' name and classes' name are misleading right now. We will need to rename them to make it easier to understand. Let's make this our first priority.

Schedule "Blocks" Aren't Correct Size

The "blocks" inside the schedules aren't always the correct size. They are always 1 hour. In the example below, APPH 1040 on Friday should be from 8:05 - 9:55.

image

Allow Users to Input Custom Activities

Allow users to add their own custom activities.

And I think we should get rid of the list of predefined activities, as I don't think that seems meaningful.

Add Activities

Allow the user to add activities during which they can't take classes.

Front end: have another button next to "Add class" called "Add Activity" that adds a new activity.

Back end: Create a "course" with one section to represent this activity. Call planCourses() with this course inside the list of courses. The class "Course" may be renamed to "Commitment" or something less misleading for this purpose.

Allow Users to Search for Classes

Provide a more convenient way for users to add classes by including a search bar, and then filtering out courses and the user types more characters. The user still has to select the course in the end, of course.

image

Schedule (Visual)

The current way of showing schedule has become inadequate. The UI needs to be better and it needs to work for every minute.

Sort Schedules

Provide a way for users to sort the schedules based on certain criteria, including but not limited to:

  1. Number of minutes between classes.
  2. Number of minutes of classes in the morning.
  3. Has time for lunch and dinner? (This is defined as having an hour each weekday for lunch between 11 am - 2 pm and dinner between 5 pm - 8 pm.)

Back end: Generate a Comparator for ordering schedules.

Front end: At the top of the list of schedules, create a drop down menu that has the options to sort schedules by a certain criteria.

To do later: Add an advanced way to factor in each criteria by a certain amount (don't do now...this will be handled in another issue.)

App Long Term Ideas

Completed:

  • Select professors you want to take the course with.
  • Add other activities (e.g. clubs) to your course schedule.
  • Sort schedules by a certain criteria.

Future ideas:

  • Have an option to filter out schedules that have sections which are waitlisted/full. Have an option to get notified when all the sections of a particular schedule are available. (Basically a Coursicle for schedules instead of sections)
  • Display RateMyProfessor score next to each professor.
  • Provide a one-click option to sign up for all the classes of a particular schedule the user has selected.
  • Use machine learning to determine what schedules the user would prefer.
  • Save and share schedules with other friends.
  • Sync with DegreeWorks to recommend what classes to take. (Also have users enter their major?)
  • Course Smasher: take revenge against your classes by smashing your course! Convert a selected schedule into a Pong game where each block is a block that the player must hit with the ball.

Spinner bug

Spinner is having unintended actions. It is being called when the fragment first appear. Selecting the same item again don't trigger any action.

Select Professors

Allow users to select which professors they would like to have the class with.

Front end: When selecting a class, choose from a list of professors. By default, have all of them selected to indicate that the student is fine with taking the course from any professor.

Back end: planCourses() should now take in a list of CourseRequest objects containing both the Course and the professor, instead of just a list of courses. More filtering needs to be done when dynamically creating all possible schedules.

Course Long Name

The courses should also hold long name.
For example. CS 1331 - Intro to Object Oriented Programming.
Currently, we are not holding Intro to Object Oriented Programming.

Change All Instances of ArrayList<Section> to Schedule

Change all instances of ArrayList<Section> to the class "Schedule". The reason for doing so is that I can create Comparators for an array of schedules. This is needed for ordering the search results when we want to allow the user to list the schedules in a particular order (e.g. list schedules that have fewest breaks in between first)

This has already been done back-end. This still needs to be done front end.

See the TODO item in CoursePlanner.java.

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.