After learning about the Little Man Computer (LMC) for our Computer Science course, we decided that the simulators and tools out there were insufficient. The existing tools have little to no debugging and the layouts aren't visually pleasing. We also found a serve limitation in tools to learn and gain experience using the LMC. This hopes to change that

What it does

This is a network-blind LMC interpreter with a visually appealing and intuitive GUI. With basic debug features, it is easier to spot and fix problems arising from LMC code.

To teach and show how limiting LMC is, we also built our own simple high-level language (nicknamed Extended LMC (E-LMC))that compiles to LMC. This tool can show people how even supposedly simple commands are actually very complex and require lots of code

How we built it

We collaboratively developed separate sections. Kacper worked on the GUI, Jack worked on the back-end, and Rory worked on E-LMC. Due to the network-blind communication protocol between programs, it's possible for all these programs to be independent of each other but still communicate and work together

Challenges we ran into

We ran into many challenges. The main problem by far was hardware. One of the laptops simply does not work. It will turn on, but it cannot be used. The workaround for this was to boot a Ubuntu OS from a USB and run it from there. This meant that Kacper, who was the one using that computer, would lose not only all uncommitted work but also the whole environment setup, anytime the computer crashed and turned off

Another challenge we ran into was the complexity of E-LMC. As with any high-level language, it has features that are very abstract. It was difficult to develop compilation tools that would be able to handle nested loops, and so we compromised and restricted user defined branching was restricted

Accomplishments that we're proud of

The GUI has turned out really well. It looks really nice and the animations are smooth. The syntax highlighting is clear and efficient.

The user of server protocols has also allowed for efficent communication between programs

Built With

Share this project: