Our project for McHacks is a real-time online mathematical collaboration application. The idea is simple. Despite all of the progress of modern computational mathematics, paper (or perhaps a whiteboard) is still undeniably the best medium for solving mathematical problems of a non-computational nature. If you want the solution to a system of equations, you use Mathematica. If you want to write up a proof, you use Latex. But if you want to do your electromagnetism homework, there is really no software to help you at this point. Additionally, if you want to work with someone remotely, your options are even more limited. We aimed to address this gap, to the extent that is possible in a 24-hour hackathon.
Specifically, our goal is to create an application that will accept mathematical statements in the form of text, render them nicely on the screen, and allow you to perform mathematical operations on them without resorting back to a text-based interface. Operations would include combining two valid equalities, isolating terms in an equation, and moving terms from one side to another. They would also include tasks like replacing every instance of a certain term or variable with another term within a given equation. Ideally, the application would also store a history of the equations that you have written and allow you to pull up equations from any point in time to use at the present moment. Essentially, any manipulation you would do to an equation while working on a whiteboard would be supported by our application, and it would have the added benefit of ensuring that no errors crept into your work due to bad handwriting or simple human mistakes. Finally, it would allow you to do all of this in a google-doc –like format in order to facilitate collaboration from afar. Now, we discuss what we actually accomplished this weekend. First of all, we built from the ground up a framework for storing equations and doing all of the manipulations we described above. It supports isolation of terms, moving of terms from one side to another, replacement of terms, parsing of (parenthesized) strings, searches for terms within an equation, and more. On top of that, we built a meteor-based web interface (using gridster to help with equation layout) which takes in equations from the user and displays them to the screen. The interface is based on the concept of different “levels” of splitting the equation, where the first level is keeping the equation as one unit, the second is splitting it into a combination of two terms by one operation, and each subsequent one is defined by splitting the units of the previous level into two parts each. In this manner, users can scroll through the levels of detail to select any sub-tree of the overall tree that represents the expression, which corresponds to any isolable term. At this point, the UI is not very well integrated with the operations supported in the backend, but we hope to support at least isolation of terms and replacement of terms by the end of the hackathon.