\section{Literature Review}
Since the start of our project, we have found multiple new information sources;
the following are the most important ones.
\begin{itemize}
\item Nodeunit documentation \\
https://github.com/caolan/nodeunit \\
% It might be better to put the URLs in the "References" section and add a [\ref{}] here
We are using nodeunit to test our virtual machine. Since the c0 bytecode has
many different opcodes that it uses, it is very easy for mistakes in the virtual
machine to go unnoticed. To prevent this, we are using the nodeunit library to
write unit tests for our code. This has already helped us to find and solve
multiple bugs in the VM, and having these unit tests will make sure that we can
solve any bugs that occur as the result of future changes in the code.
\item C0vm Assignment Handout \\
https://www.cs.cmu.edu/~rjsimmon/15122-f14/prog/c0vm-writeup.pdf \\ This
document details how each opcode in the c0 bytecode language works, as well as
other important implementation details for the c0 virtual machine. It has been
an important reference while developing a JavaScript version of the c0 virtual
machine.
\end{itemize}
So far, the most important thing we have learned is that good unit tests are
vital for developing this sort of project. Without unit tests that verify each
opcode used by the virtual machine, many bugs would have gone unnoticed, causing
problems later down the line. If we only found these bugs by using the frontend,
they would have been much harder to debug, as there would have been much more
code to work through.
