Inspiration

Our inspiration for this project came from one of our team members' summer experience at Carnegie Mellon University. After attending an NSF-funded Research Experience for Undergraduates in Software Engineering (REUSE) program, she wanted to make research in computer science more accessible to her peers. To do this, we wanted to improve the way the University of Virginia's Computer Science Department communicated available CS research opportunities (website is linked here). Hence, Project Mirabilius was born.

What it does

From the perspective of a user, Mirabilius

  • filters out old research opportunities that have closed. This includes research opportunities that have been posted seven years ago.
  • *categorizes opportunities into projects in computer science, health, and the humanities. * We developed an algorithm that tagged research projects based on their summaries. These tags categorized research projects as ones related to politics, medicine, machine learning, etc.
  • filters through research projects based on user interest. The user can select fields they are interested in. Our program displays projects based on this input.
  • prints information in a tabular format. Our Java program displays the title, manager, email/link, and summary of the project.

How we built it

We programmed in Java as the language was object-oriented and portable, allowing us to write algorithms that built on one another. Our IDE was Intellij because it interfaced with Gradle, a useful build tool that assembled our programs. We used the dependency Apache.POI was a dependency to read in data from Excel files.

We began our project by considering what drove our program: user input. The user could input which school they wanted to conduct research in: the Engineering School or the College of Arts and Sciences. They could also input the categories they were interested in: medicine, biology, cybersecurity, etc. Then we considered how we could take in user input and output opportunities the user would want. This led to the development of several data structures that stored information on research opportunities as well as objects that filtered through available information. Once we were done with the backend framework, we focused on building the front-end: the tabular display of the project.

Challenges we ran into

Reading in data: For this project, we used JAR files. These kinds of files package our source code into machine code, releasing only the function of our programs to the public. Jar files made it difficult to read in data. For us, the JAR file could only access files in the same folder it was housed in. Any data stored elsewhere was difficult to reach.

Pulling and cleaning data: It was difficult to retrieve and clean without running into some compilation error. We had to practice defensive programming to account for everything that could possibly go wrong in this process.

Accomplishments that we're proud of

The layout: The header of each project took a lot of time to create. By formatting a string and allotting a certain amount of characters to be displayed, we created something that displayed information succinctly. It improved on the design UVA had which required you to scroll around. Instead. our design ensured that the information would be displayed on one screen.

What we learned

There are more CS research opportunities in the Engineering School than in the College of Arts and Sciences. Projects were posted more frequently in Engineering School than in the College. This is worrying. The College of Arts and Sciences offers an opportunity for interdisciplinary CS research that might appeal to a broad range of students. Shouldn't there be just as many opportunities for CS research in the College as in the Engineering School so that the people who become computer scientists come from diverse backgrounds? We hope that this finding will help garner more CS research opportunities in the College of Arts and Sciences in the future.

What's next for Project Mirabilius

Use files that are updated live. The files Mirabilius uses are not updated live. They are copies of the most recent research spreadsheets. We hope to collaborate with the CS Department to have files that are updated live so that the opportunities presented to students are up-to-date.

Allow Project Managers to update the system. Just as students can access the system, project managers should be able to access Mirabilius and add, edit, or remove projects. Project managers are stakeholders in this project as well.

Present to the CS Department at UVA. One day, we hope that Project Mirabilius can be something that lives not just on GitHub but on the screens of every student. We hope that Mirabilius can be integrated into UVA's own website so that students from any major can gain access to CS research opportunities.

Built With

Share this project:

Updates