courseplannerbackend's People
courseplannerbackend's Issues
Advanced Sort Advanced Version
- Allow users to switch to the advanced version of advanced sort.
- 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".
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.
Firebase: Online Syncing
Needs to add a backend to sync user's schedule across devices.
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
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.
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.
Schedule "Blocks" Aren't Correct Size
Sort Schedules
Provide a way for users to sort the schedules based on certain criteria, including but not limited to:
- Number of minutes between classes.
- Number of minutes of classes in the morning.
- 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.)
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 List design on adding screen is not sufficient.
Users will want to see more information besides just the Course code.
Users should be able to select current Schedule.
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.
Firebase: Save Schedules
Allow users to save their favorite schedules on Firebase.
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.
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.
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.
Refactor MeetingTime Using Intervals
Instead of having a startTime and endTime fields in MeetingTime, create a class Interval that has startTime and endTime.
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.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.