This project is designed to scrape curriculum information from the UCSB curriculum website, then display that information to the GUI.
- As a student, I can look up lecture and section times so that I can plan my schedule.
- As a student, I can get the Professor's name so that I can look them up on Rate My Professor.
- As a student, I can view different quarters course selections so that I can plan in advance.
Yes! It compiles and runs successfully, and is mostly functional. I can look up courses from 2014-2016, across each quarter, and through each department using the GUI interface, or through the shell.
- As a student, I can filter the results into specific days of the week so that I can plan my schedule easier.
- As a student, I can filter the results by GE fulfillment areas so that I can make sure to hit all my degree requirements.
- As a professor, I can search for my name to find the classes I am teaching and their enrollment status so that I can give crashers an accurate statement on their chances of getting in.
- As a student, I can export my class selections into the GoldScheduler so I don’t have to manually input them and streamline the process.
The ReadMe overall is good, but I think one thing that would really help bring the next set of students up to speed is a description of how the classes interact -- of course one could always run through the code, but having a big picture in mind when going through could help form a more cohesive view of the project. In addition, since there is usage of many new concepts that some (at least us) haven't encountered, maybe a link to a good reference guide would help too.
There are a few targets in the .xml that need descriptions such as setup and check-ssl-file. Setup sort of implies what it does but a more verbose description with some more specific language would be good. The check-ssl is also fairly literal, but adding why it's necessary to check the ssl file would be good.
There's well over 1000 points worth of issues, ranging from really simple fixes to seemingly complex fixes. Each issue is very clear as to it's expectations, albeit the more complex ones will require a lot more investigating to see if they're as clear as they appear. Upon first inspection, it seems that each issue i've encountered is well documented in the issues section in the original repo, so no further issues at the moment.
A lot of the code is jam packed into the UCSBCurriculumSearch java file, and could use some revamping in terms of refactoring.The purposes of most of the classes and methods are clear except some of the HTML methods where the code is meant to scrape the data off of the curriculum website. We have not seen some of the operations used in the HTML/scraping methods which is what we need to do some research on. There are a few classes that play into the larger UCSBCurriculumSearch class, such as the UCSBLecture, UCSBSection, UCSBgui, InstallCert, Item and CustomOutputStream java files. The InstallCert and CustomOutputStream java files are a little confusing in their overall purpose, especially given that they seem to be code from elsewhere. The Lecture and Section files are the actual objects used in the searching and displaying process, and the CustomOutput redirects the output to the gui, which contains all of the widgets the user can interact with to streamline the searching process. The code is fairly easy to read and understand except for some of the operations in the HTML methods as mentioned before. The code is made easier to understand by the comments before each method that explain what the method does and what it is supposed to do to give us an idea of what the goal of the methods are and what the previous developers of the code came up with. As for the layout of the code, it is neat and everything is put in a layout that everything is spaced out and put into its own blocks that makes it easy to read and understand.
There is a lot of coverage in the test files, however the most notable lack of testing is in the UCSBCurriculumSearchTest. There are two tests in the file, but given that the GUI search does not extend beyond 2016, some tests that go beyond current parameters would aid in testing how comprehensive the scraper is. Some of the other smaller classes, or classes taken from elsewhere don't have JUnit tests, but (at least based on first impressions) they either very simple, or obviously pulled from online (and I'm sure they tested it right?).