top of page

Case Study:
ArtHub

December 2021

For our Data Structures and Algorithms course, we were tasked to form groups to implement two graph algorithms in a graph representation using random user generated or real-world data.​

 

To tackle this challenge, my team decided to create a Graph Art Museum. This virtual museum utilized Harvard Art Museum's API to form and visualize different painting relationships in a Graph Structure.

matt-gross-9aCkSl6YcXg-unsplash.jpg

Skills

  • Leadership

  • UI/UX

  • Software Development

Tools

  • Processing 3

  • Python and Java

  • Harvard Art Museum's API

Roles

  • Me

  • Jacob Mass

  • Neha Kallamvalli

Proposal + Design

The goal of this assignment was to create a graph implementation/representation and compare two graph algorithms completing the same task. We chose an Adjacency List representation and to compare Breadth First Search (BFS) and Depth First Search (DFS)​

Motivation: As a learning tool, this project adds to the learning experience of Art History. The general curriculum involves observing different time periods and cultures individually. By organizing data into a visual graph, we open the subject to analysis on different levels. Art History represents the whole of human history and should be viewed at both micro and macro scales.

Screen Shot 2021-12-11 at 4.24.06 PM.png

Work Distribution

  • Cindy Ngo: UI/UX, GitHub Repo, Graph Implementation, DFS algorithm

  • Jacob Mass: Graph Display, Graph Implementation

  • Neha Kallamvalli: API Implementation, Graph Implementation, BFS algorithm

Data Structures

  • Graphs

  • Java HashMap

  • ArrayList

  • Queues

References

Core Mechanics

Graph Type Selection: Users can choose different vertex and edge implementations. In the UI there are options for examining paintings by Culture, Time Period, or All. Then, users can select edge relationships such as Color and Title.

BFS: Users can explore the graph level by level. We implemented the BFS using a Queue data structure.

DFS: Users can explore the graph branch by branch. This was implemented using a Vertex iterator and a recursive approach.

Art Display: We implemented a display that showcases images of actual art pieces from the Harvard Art Museum. The user can search a specific art piece and will be shown pieces related by the selected relationship.

Challenges + Conclusions

A major challenge our team faced was how to work collaboratively on this project. We planned to use Processing 3 which lacked support for version control and extensions for collaboration. To compensate for this, we used Visual Studio Code extensions for GitHub and LiveShare. However, we still had to use Processing 3 since Visual Studio Code lacked debugging tools for the program.​

One change we could make is the tools and technologies that we chose. Although the pro to using Processing 3 includes an easy combination of Front End and Back End implementation, we had to sacrifice easy collaboration and debugging in order to make it work.

Screen Shot 2021-12-11 at 4.18.17 PM.png
Proposal + Design
Introduction
Process
Conclusions
Final Product
bottom of page