Zachary Lynn Monroe

What am I up to?

My name is Zach Monroe. I am a programmer, a student, a chef, an explorer, a photographer, and much more. I've had the opportunity to work on a lot of cool projects. If you're curious, take a look at what I've been up to below!

Kitsune - Master's Thesis

August 2019 - Present

I have been working with professor Ajay Bansal for my Master's Thesis on creating a tool to analyze source code and detect plagiarism. The goal is to create a generic, easily extensible tool which can analyze student submission files and detect plagiarism (similar to tools like MOSS). Furthermore, the tool should be able to understand the semantics of the language (through its grammar) and use this to make more intelligent comparisons.

Kitsune Thumbnail

Microsoft Intern Project - CloudFit

May 2019 - August 2019

During my internship at Microsoft in the summer of my senior year, I was assigned to create a library for health analysis of Microsoft's internal Azure Deployment Services. CloudFit was a logging api hooked up to Kusto (Microsoft Azure Data Explorer) which logged minimal system information in order to track the health of both the system and current deployments. The hope was to provide a way to detect deployment failures and automate the re-deployment process.

DecomPy - An Adaptive Machine Learning Decompiler

October 2018 - April 2019

DecomPy is an adaptive machine learning decompiler / deoptimizer toolchain created as a proof of concept for my senior capstine project. Our team (Vatricia Edgar, Joshua Goralczyk, Salmen Ahmed, YiZhuang Garrard) was asked to create a tool which could use machine learning to learn to undo the optimizations that a compiler performs thus making the source code readable again. We did so by lifting the compiled c code (from either clang or gcc) to llvm and then training a reinforcement agent to make swaps on the llvm code through "semantically equivalent code snippets" until the code resembled the original. Our team faced many issues early on due to a lack of compiler / decompiler familiarity, but overall it showed the feasibility of pursuing such a tool.

DecomPy Thumbnail

Common Lisp Interactive Development Environment (CLIDE)

May 2017 - February 2018

Common lisp environment developed in python3 (made to be similar in feel to the jetbrains suite rather than emacs)

CLIDE Thumbnail

Java based Chess

January 2017 - May 2017

JChess is a Java based two player chess program. Our team (Vatricia Edgar, Jonathan Bush, and Timothy Cuprak) was in charge of debugging an extremely buggy code with almost no documentation. We based our development heavily on a test driven development style using unit testing and integration testing with both mockito and JUnit. It is a client server based program and the server is multi-threaded to handle multiple pairs of clients.

JChess Thumbnail

C++ uint64_t based Bitboard Chess

November 2016 - December 2016

Designed an efficient implementation (each turn is O(1) except checkmate and check which are O(n)) of 2 player chess.

Chess Thumbnail

Python 3.5 / tkinter IDE "Morpheus"

November 2015 - August 2016

An early attempt at creating a python3 IDE I did my first year of college. It was both the inspiration and the starting point for my later lisp IDE (CLIDE). This IDE was designed so that I could code both Java and Python in the same Environment (At the time I was constantly switching between IDLE (python) and Eclipse (Java) having yet to discover the wonder of the Jetbrains suite. I based it off IDLE but incorporated fixes to grievances (i.e. added multiple tab capabilities)

Morpheus Thumbnail