ENGR-E111, or Engineering Computer Architectures, primarily focused on understanding the basics of computing hardware. We learned how logic gates are created and built a Hack architecture processor from the ground up, followed by a Hack assembler in Python.
The class concluded with a VM bytecode translator project written in Python, which translates Hack VM bytecode into Hack assembly, which I worked with fellow classmate Pradyot Bathuri to complete.
The assembler and bytecode translator were particularly challenging, but both projects turned out great. Learning about Hack architecture was a great stepping stone to transition to something with real-world applications like RISCV assembly.
The hack assembler can be found here.
The VM bytecode translator can be found here.