For the Capstone, we wanted to do a project the included everybody, but did not build off of an existing project. However, while many of us had a general idea of the goal we would like to achieve or the technology we would like to work with, nobody had a concrete idea for the first couple weeks. As a result, we got off to a slow and somewhat disorganized start before finally deciding to create an improved tool for academic planning. This would include a more intuitive and functional “What If?” report, a visually appealing class search with more abstract filters, and data visualizations that explored some of the nuances of Duke’s course offerings. What we found were dozens of roadblocks.
My primary job was the creation and population of a database, but just acquiring the necessary course and class data was incredibly difficult. After deciding manually inserting each course into the database using the Undergraduate Bulletin would be far too tedious, we sought the registrar’s help. While they were able to provide some class data, the response time was far too slow and data too limited to be feasible. Finally, we were able to discover an API that we could query to obtain all the data we needed.
Now that the data was on hand, however, I had to decide where we would hold the data and how it would be organized. After looking into MongoDB and MySQL, I finally settled on Airtable, as it is highly dynamic, has a beautiful and highly functional online user interface, and makes the creation of a relational database easy. It also automatically generates an API to pull, add, and modify data, which would make future integration into a website simple.
With the hosting platform settled, I still had to design the database to best organize the data. Above is an early UML Diagram showing an object-oriented approach to the data. The final implementation is slightly different, as a “Class” is now a specific instance of a “Course” and function calls were moved to the javascript behind the website.
In addition to creating the database, I was in charge of researching and organizing the logic for the new “What If?” report. This required looking through the websites of each department to determine all possible tracks for completion of each major, minor, and certificate that Duke had to offer. After deciding that the exceptions and differences between departments were too great to realistic implement every possible degree, we settled on only implementing the Computer Science, Visual Media Studies, Public Policy, and Information Science & Studies departments. I then wrote pseudocode for the logic that would determine whether each requirement was satisfied or not.