Core Skills – Software Engineering
Python
Python is by far the language with which I am most comfortable. I did all of my Master's work in Python. I did my entire Qualcomm project largely in Python.
More than half of the projects on the main page include Python. At this point, I can't write pseudocode without it just showing up as Python. Here are the libraries
which I've used the most.
• numpy
– I've used this library more extensively than probably any other. Not only do I love linear algebra, but they are essential for data analysis.
Much like I write pseudocode in Python, I use Numpy even when discussing vector spaces in a purely mathematical context. Nearly all of the Python related projects on
the main page use Numpy, as did nearly every course in my Master's program.
• pandas
– Much like Numpy, I've used Pandas for nearly every data science project in my portfolio. Dataframes have now begun to supersede databases in
my mental hierarchy of useful paradigms.
• torch
– PyTorch is my go-to library for machine learning related work. Nearly all of the machine learning work I've done, through both
my industry and academic experience, utilized PyTorch.
• tensorflow
– Most of my TensorFlow experience is out of personal interest (and is mostly limited to Keras). I've been a Mac user for my entire life, and
TensorFlow was initially one of the first libraries to leverage the new M1 chip's capabilities. For this reason I took up the skill of converting
my knowledge in PyTorch to TensorFlow, as to be able to leverage the GPU acceleration on my personal machine. Since then, despite PyTorch updating
to support the Metal framework, being fluid in both libraries is important to me as a data scientist.
• sklearn
– SciKit-Learn is a must-know for data science work, especially outside a strict machine learning context. I've used this extensively
throughout my Master's program, undergraduate coursework, and even personal projects.
• Other libraries I've used include matplotlib
as an essential visualization tool for data analysis, BeautifulSoup
extensively for web scraping,
requests
for REST APIs, angr
for symbolic execution, more standard libraries like os
, and many more..
C/C++ and Assembly
I first got exposed to C at Harvard, through a shortened version of their world-renowned CS50 course. Then a bit of C++ for Arduinos in high school, but
all without truly understanding either language.
Carnegie Mellon really doesn't like Java or Python. You start with their version of C (with garbage collection), and then
the training wheels are slowly removed as you ready yourself for a whole major of work in C/C++. And this is exactly how I've learned the language. Algorithm after algorithm,
one systems class after another. I've built memory allocators, servers, and even entire databases in C and C++.
In particular, I've taken Introduction to Imperative Programing (15-122), Introduction to Computer Systems (15-213), in Introduction to Computer Security (15-330) in C, each of which at some point required careful stack tracing and following assembly code.
I've also taken Algorithm Design and Analysis (15-451) and Database Systems (15-455) in C++.
When I got to Qualcomm, these skills were invaluable, because computer security often deals with the lowest-level concepts. The project
analyzed assembly code, although test cases were written in C/C++. You can't get much work done at a chip company without knowing the ins and outs of the C's.
SML
Standard ML was my introduction to functional programming. I used it extensively in my undergraduate work, in courses like Introduction to Functional Programming (15-150), Parallel & Sequential Data Structures & Algorithms (15-210), and Constructive Logic (15-317). As the language is used most often in an academic context, this is the sort of work I'm most familiar with in a functional context but have become enamored with the elegance of the functional style while at Carnegie Mellon.
Swift
My work in Swift has been mainly through two projects: Atlas Resonate (at Audition Technology) and some volunteer work for Kindred Spirits Rescue Ranch. In the former case, I used UIKit at the hearing health startup and worked on asynchronous data analysis algorithms for noise exposure data. In the latter case, I employed instead SwiftUI to design a user-friendly app for a Western Pennsylvania animal sanctuary (an ongoing project). In both cases, I'm entirely self-taught through educational internet resources.
SQL
Getting a Master's in Data Analysis is impossible without understanding the basics of querying. I've even written my own database from scratch in C++, which had to interface properly with SQL code. I am far from an expert, but querying languages reak of mathematics under the surface, and for that reason it has always been a natural subject for me to appreciate and learn well.