/csci201finalproject

The main goal of our project is to create an web application which is able to parse the USC Course Catalog and allow the user to select preferred classes for the semester. A user should be able to specify the times within a given day that they would either like to attend class or have a break. Users will be able to register based on a predetermined priority scale, and will be given a schedule based on courses in which there is space available for them at the time of their respective registration. Due to the fact that it is likely that students may not be able to enroll in all of the classes they wish to take, they will have the ability to prioritize particular courses. For instance, an individual may wish to prioritize enrollment in their major courses rather than a GE. Since students will inevitably end up with a class schedule that they do not particularly prefer, we will also include a forum for people to discuss course section trading so that such disputes may be resolved internally. The functionality of this forum would also allow students to swap courses straight from the forum, itself, since it is part of our internal code base. The multi-threading for this project would occur in a constantly updating calendar feature on the bottom of the page which would react the the decisions of the user in fields above. For the networking portion of the assignment, we will be implementing several different SQL tables in order to store both user information and class information to be queried by the user. Our GUI will include a sign in, as well as a form by which the user is able to filter classes. These will feed into a calendar at the bottom of the page which will display the optimal schedule for the user.

Primary LanguageCSS

csci201finalproject

Team Info

Team Name: Brute Force (Group 14)

Members: CP: Aya Shimizu (ashimizu@usc.edu) Yiyang Hou (yiyangh@usc.edu) Sean Syed (seansyed@usc.edu) Eric Duguay (eduguay@usc.edu) Xing Gao (gaoxing@usc.edu) Sangjun Lee (sangjun@usc.edu)

Semester: Fall 2018 (20183)

Environment: Java SE 1.8 (If your JRE library is 10.0, please re-build your path)

Project Description

The main goal of our project is to create an web application which is able to parse the USC Course Catalog and allow the user to select preferred classes for the semester. A user should be able to specify the times within a given day that they would either like to attend class or have a break. Users will be able to register based on a predetermined priority scale, and will be given a schedule based on courses in which there is space available for them at the time of their respective registration.

How to Run the Program

  1. Launch MySQL Workbench and open and run the following script files respectively:
  • databasev3.sql
  • SampleBuilding.sql
  • SampleCourse.sql
  • SampleLecture.sql
  • SampleDiscussion.sql
  • SampleLab.sql
  • SampleQuiz.sql
  1. Ensure all of the scripts were executed without any errors.
  2. Launch Eclipse and open the project “BruteForce” in “csci201finalproject” folder.
  3. Go to WebContent and open “login.jsp”
  4. Run “login.jsp” on server at localhost on port 8080.
  5. Upon successfully opening “login.jsp”, click on “register” button.
  6. Fill out the form and register the account.
  7. Upon successfully logging into the system, “index.jsp” will open.
  8. Search course names on the search box.
  9. Click the course in a suggestion box to autocomplete the search box.
  10. Click on “add” button and the selected course will be added to the course list.
  11. Click on “check” button to check if the schedule is valid.
  12. Click on “submit” button if the schedule is valid. Otherwise, return to step 9.
  13. Upon successfully submitting the schedule, click on “My Schedule” button.
  14. Perform the following tests to ensure that all the functionalities are working:
  15. A schedule will display if the user has the schedule.
  16. Upon successfully having displayed the schedule, click on “Download Schedule” button.
  17. The button will link to a download of an ics file.
  18. The user will receive an email with the ics file attached.

Limitations

Front-End

Connection between the client and the server is not based on sessions and tokens.

About Program Functionalities

The functionalities of our program include login/register users, search courses, arrange schedule based on starting time, end time and weekly walk distance, check whether the desired schedule is valid, submit valid schedule, view valid schedule in a time table, and download the schedule into an ICS format. Our program runs as a web application, where users can enjoy responsive, easy-to-use interfaces to plan their desired schedule for semesters in USC. If their desired schedule is not valid, they will be unregistered from the database and arrange a new schedule. Users can view their schedules on the website or download it to view in exterior applications such as Google Calendar or Apple Calendar.

About Schedule Optimization

Our scheduling algorithm is a derivative of the N-Queens problem and uses it to create a valid schedule without any collisions. Factors taken into account include class sizes, as well as section dependencies that may arise due to the various nuances of courses offered. For instance, lecture sections may have specific discussion, lab, or quiz sections. Constraints unique to our application include a manual time constraint specified by the user, as well as a weekly walking distance constraint. A schedule is not considered valid unless it conforms to both of those constraints.