Skills

Programming Languages

Python

My primary language for both my research, internship, and personal project exploits.

Java

Used in my Virginia Tech and high school CS courses, including data structures.

Matlab

Used in my Foundations of Engineering courses at Virginia Tech.

Machine Learning Tools

PyTorch

My deep learning framework of choice, used for work, research and projects. A collection of frequently used boilerplate, usable as a library or for copy/pasting, is available here.

OpenCV

My limited OpenCV experience involves creating bounding boxes around handwritten letters as a part of a winning hackathon project (HackBI 2017) and applying Haar cascades for an (unreleased) project.

Scikit-learn

At BIST I used the k-means and spectral clustering features of scikit-learn.

OpenAI Gym

Part of my work for Decipher involved creating a custom Gym environment to simulate a scaleable microservice under traffic. We also used Gym’s toy environments for testing various RL algorithm improvements.

NumPy and Pandas

Used for the loading and proccessing of datasets for various tasks. I am highly confident working with NumPy and have a little less experience with Pandas.

Matplotlib and Visdom

I have extensive experience working with these tools to graph ML algorithm losses and create visualizations. I have created Matplotlib graphics that were presented to research supervisors and may be included in papers. At Decipher, I worked on live Visdom demonstrations of our team’s work that were presented to several major clients.

Machine Learning Concepts

Neural networks (fully connected, recurrent, and convolutional)

At Decipher, we used fully connected and recurrent neural networks as part of deep reinforcement algorithms. My BIST project involved comparing 1D convolutional vs. fully connected neural networks for classifying sonar data. At Hume and BIST, I used convolutional neural networks for computer vision.

Reinforcement learning

The product under development by my team at Decipher is powered by deep reinforcement learning. I am familliar with policy gradient, Q-learning, and actor critic based methods, including Proximal Policy Optimization and Soft Actor Critic. I have tuned these algorithms and helped develop and maintain an internal PyTorch-based RL library. I have also implemented improvements to allow for the use of recurrent neural networks in off-policy RL algorithms. To learn more, I am currently reading from Sutton and Barto’s Reinforcement Learning and working on my own collection of Rl algorithm implementations, called cleaRLy.

Generative Adversarial Networks (GANs)

I have read several papers on GANs, implemented a basic one here, and written a proposal for Decipher about a potential application of GANs.

Autoencoders

In addition to implmenting an autoencoder as part of my templates library, I have used them as a preprocessing step for unsupervised clustering as part of my BIST work.

Genetic algorithms

I wrote a genetic algorithm implementation using NumPy for experience, however, note that the code doesn’t have a good test example and that a valid cost function should be swapped for the default.

Math

Probability and Statistics

While I am still admittedly an amateur here, I have taken a Coursera introductory course and am in the process of reading Probability Theory: A Concise Course, How to Measure Anything, and Jaynes’ Probability: the Logic of Science. I am also taking Theoretical Statistics (STAT 4105) in Fall 2020 at Virginia Tech

Calculus

I have completed calculus through multivariable and just started reading The Calculus Gallery by William Dunham.

Discrete Math

My discrete math course at VT covered boolean algebra, set theory, basic number theory, and proofs.

Software Engineering/Infrastructure

Linux

I have administed Ubuntu servers and AWS machines for various tasks, and run Arch Linux on my main laptop (wow, the Arch linux user found a way to mention it, what a surprise).

Git

In addition to using Git to keep track of my VT reserach and personal projects, Decipher uses Git heavily so I have experience with slightly more complex topics such as writing clean PRs, reviewing other developers’ code, dealing with merge conflicts and rebases, etc.

Kubernetes and Docker

Our product at Decipher heavily involves Kubernetes, so deploying our product requires containerizing our code with Docker and modifying our Kubenetes infrastructure to support it. However, my knowledge is still very limited.

Soft Skills

Agile development

Decipher uses Scrum for project management and I am familliar with providing daily updates at standup meetings, discussing strategy at sprint planning, and presenting results at sprint retrospectives.

Writing

See above.