About Me

Graduate student (MS in Computer Science) at NC State University, applying to PhD programs.

After spending 4 years as a software developer at Verizon, I returned to school to purse a masters at NC State. I am currently a member of the alt-code lab under the direction of Dr. Chris Parnin. I am interested in doing research in the areas of Human-Computer Interaction, Artificial Intelligence, Machine Learning, and Software Engineering. Below are some examples of my work at NC State.

If you would like to contact me, select one of the links on the bottom of the side bar.

Things I Can Do

I investigate problems faced by developers in order to create tools to solve those problems.

  • Code in Python, NodeJS, Java, and more
  • Full-stack software engineer
  • Research in HCI, AI, ML, and SWE
  • Private Pilot: Single Engine Land

Research / Projects

Here are a few things I have worked on as a graduate student at NC State.

HappyFace: Frustration Research

HappyFace aims to discover frustrating experiences felt by learners during the programming process. We performed a large-scale collection of code snippets from PythonTutor, and collected a frustration rating through a light-weight feedback mechanism. We then devised a technique that is able to automatically identify sources of frustration based on participants labeling frustrating learning experiences.

Gender Prediction with Code Stylometrics

For CSC 720 (Aritificial Intelligence II) I developed a system that extracts stylometric features (whitespace usage, code complexity, keyword usage, etc.) from code snippets and uses these features to predict the gender of the developer who wrote the code. Abstract syntax trees were parsed using Esprima and these trees were traversed for feature data. Predicitons were then made using various prediction algorithms. Using crossvalidation the most successful prediction algorithm was logistic regression with an average precision of 78% for predicting the code author’s gender.

How is the Weather: Game World Adaptation Based on Player's Local Weather

For CSC 582 (Interactive Narrative) I developed a system that took in a player's location to gather their local weather via the Weather Underground API. This weather was then used to adapt the game world created in Twine, a text-based interactive narrative framework. A normally dry creek bed may become an impassible river if the player's current weather is a rainstorm or the player may require certain tools to open a frozen door if their weather is freezing.

Optimiziation of the Alternating Offers Protocol (Rubenstein)

Bargaining between buyers and sellers is an activity that has been around since the dawn of civilization. The large number of decisions that affect the bargaining and the non-deterministic nature of this process’s model, make finding the best solutions difficult and model simulation a slow process. This project made use of prism model simulator to simulate the model and used three different genetic algorithms, namely GA, NSGA2, and SPEA2, to find the best decision sets for the buyer-seller model. It also used parallelism and early termination to improve the overall run time of running optimizers on the model.