Courses Pathway to Your Graduation
Group Project
Link to Repo:
Our group chose to design a web application that solved this problem:
Colleges have a lot of information about majors online, but it is very difficult to centralize that data without doing a lot of research. For Brown students specifically, we want to make a platform that allows students to input past classes they've taken, concentration interests, and workload preferences to help them better navigate concentration requirements and possible degrees.
​
Features:
-
We will also take into account if a student wants a lighter workload, or is taking leave/study abroad for a particular semester and weight that semester with courses that require less time through scraping data from Critical Review.
-
Personal preferences will weight classes by class structure (exams, projects, or essays) as well as the department a class is in. If a student prefers a particular type of class or if they want to take classes outside of their concentration.
-
Teacher and class ratings from Critical Review, and merging a visual GUI with information from CAB including course name, course description, and professor.
-
Returns a set of possible N-Semester concentration plans, based on past courses taken and a set of requirements for a list of possible concentration, including WRIT requirements (& 30 credits).
Challenges:
-
Scraping information from Critical Review and CAB to get data for class weights and display on the user interface
-
Not generic to other universities, only applicable for Brown (If we wanted to include RISD classes, we would also need to get that information as well)
-
Logic on the algorithm: figuring out constraints on their preferences, requirements, workload, etc.
-
Furthermore, there are a lot of constraints because of semesters a class is offered, time a course is offered, etc.
-
Edge cases: e.g. 0.5'ers, independent concentrators, GISPs, capstone projects, personal projects, research, recruiting scheduling, TA schedules, Sports
Parts:
Pathway Program object that handles all communication between the user and the pathway object that creates the optimized pathway
Scraping the data in python from CAB and Critical Review. Cleaning and storing the data in a universal database file for each university.
courses.db
Pathway object creates an optimized pathway while using data returned from the proxy database
Proxy Database object handles calling the database object to request data and it sets up the data into the correct format for the pathway object.
Database object handles calls to the SQL database file
Runtime and Space Optimizations:
Time optimizations were made by using the guava cache to load in all of the courses upon initialization of the databaseCache class. This optimization made queries runtime cut in half. Since there were only 1900 courses we felt it was not that immense of a burden on space compared to the runtime burden of each sql query. It takes 5 seconds on average to load in all of the courses which is done while the user is inputing their user preferences.
Testing:
Since we do not have a REPL and only a GUI, I decided to make a Pathway Program class that handles all of the user input parsing and outputs data to gui. By having this class I was able to thoroughly test all outputs that would be displayed back to the user, which is why PathwayProgram has 100% coverage in jacoco. The testing suite for pathway program tests cornell extensibility, pathway outputs, pathway stats, pathway unique courses and not returning null pointers back to the main class. In addition, I also had to test all of database data and wrote 8 additional public methods to tests that the concentration tables are lining up, the data types are of the correct format, and to check that data was clean. Given that the unclean sql database has caused a lot of bugs and errors in classes that use that database's data, I had to use these error checking methods in my testing suite which is why I left those methods public.
GUI:
Landing Home page:

Login page:

My Pathways page:


Generate Pathways page:

Sign Up page:
Pathway 1 page:



Courses are hoverable
FAQ page:

Modify page:




Changes will update the pathway 1 page.