My Portfolio

Here is a small collection summarizing some of the work I have completed in my personal time as well as during my work experience and schooling. You can find some of the source code for the projects on my github (ppublicgit).

University of Alabama Huntsville (UAH)

CS 637 had several homework projects. My github has a repository for the work performed in completing the homework assignments. https://github.com/ppublicgit/CS637

The first project was to write our own back propagating neural network. The network had to be able to accept different activation functions, shapes and cost functions at initialization. The code can be viewed on the github link under HW1.

The second project was to use pytorch to classify the CIFAR 10 image dataset. The code and results can be viewed in the github link under HW2.

The third project was open ended. I chose to create a recurrent neural network (rnn) to learn to write Shakespeare. In my first attempt I hand coded a vanilla rnn. Its performance was fairly weak, though not surprising. The vanilla rnn has no 'memory' and so it fails to properly write Shakespeare. It is unaware of any character that is not immediately preceeding it so the text is jumbled. I then used pytorch to create a multilayer long short term memory (LSTM) network for the problem. After some training, the output is fairly believable. The text is formatted correctly and reads like a screenplay. Sentence structure is evident and proper headers for each actor is present. The only deficiency is the story does not make sense. Each character's dialogue does not match nor respond in kind to each other's dialogue. This is not surprising as the network learning semantic meaning is a much more difficult task that would require a larger network, more training and more training data.

The first project for CS 687 required us to create our own, miniature database and implement a simple GUI to interact with it. The requirements were to write a sql script to generate the database and a GUI to then interact with the database. The code I made to support this project is found on my github. https://github.com/ppublicgit/CS687

CS 588 had several projects I completed over the course of the semester. The third homwework assignment was to perform exploratory data analysis on several datasets. The work can be found on github. In particular 1.ipynb. https://github.com/ppublicgit/CS588-HW3

The second homework assignment was to use several different clustering techniques on the famous indian and iris datasets. The results are on github. The bulk of the work can be seen the file HW4.ipynb. https://github.com/ppublicgit/588HW4

The last project was more free form. We had to pick any topic of interest and apply big data practices towards the topic. I chose to look into basketball data to see if it was possible to predict game outcomes based on a teams' averages over the season. https://github.com/ppublicgit/Basketball.

Like many other classes there were several projects during the semester. CS 641 focused on data mining. The second homework was a task to classify areas of land as either rainfed or irrigated. In the end I used a random forest to perform the task. The files are found in the folder homework 2 and the main report is in the file model.ipynb. The second project was to determine cancerous from non cancerous images. In the end I used principal component analysis, along with an SVM learner to classify the data. The dataset was also unbalanced, thus I used a different class weighting to improve the f-score of the data instead of merely focusing on accuracy. https://github.com/ppublicgit/CS-641

Sandia National Laboratories (SNL)

I had two major stints at Sandia National Laboratories in Livermore, CA: as an inern following the completion of my BS in Physics from Arizona State University (ASU) and then as a private contractor to continue my work and research after an extended trip abroad. As an intern, I was tasked with creating a Graphical User Interface (GUI) in MATLAB for test equipment and collecting data. I spent several months designing the GUI and setting up the various protocols used for communicating with all the instruments in the research lab. The goal of the project was to create a solenoid pressure system to simulate an engine's cycle to extend and further the research being done in the lab into nozzle spray characteristics. By the end of the internship I had completed a working GUI that had full, automated control with all the experimental instruments and the initial visualization of each run's data that was saved for further analysis. The instrument communication was built primarily on object-oriented-programming, allowing future users an easy means for updating and upgrading the communications. Links to a PDF for the internship research paper and poster are provided below.

As a private contractor, I was tasked with creating a GUI in LabVIEW for a different experiment, as well as updating the MATLAB GUI I had previously designed. I added several new features to the MATLAB GUI to improve its efficiency and user satisfaction. I also spent time training my coworkers how to code in MATLAB and in GUI control and maintenance. The LabVIEW GUI was trickier than the MATLAB GUI as it had multiple data collection speeds and times of interest and required precise timing and synchronization between high and low speed data acquisition units. Eventually, I was able to implement an advanced system with precise digital triggering timing to synchronize all data acquistion. I also trained fellow lab workers in LabVIEW to facilitate ease of use and understanding for the GUI

Lastly, I collected data using my MATLAB GUI in different pressure system environments to research the effects of a variable pressure on nozzle spray characteristics. Data was collected for the pressure of the system, as well as high-speed imaging of the bubble characteristics inside an injector nozzle in order to investigate performance. I generated code in MATLAB to perform high-speed image processing and recognition to determine how the bubbles in the nozzle were affected by the pressure cycling in the system. I then visualized the data in MATLAB and authored a paper on the topic with the assistance of my principal investigator/supervisor and colleagues. The paper is currently pending publication.

Arizona State University (ASU)

During my junior and senior years at Arizona State University, I worked as an undergraduate research assistant in an astrophysics lab. The position doubled as a job and a class and allowed me to complete my honor's thesis (required for graduation from Barrett the Honor's College at ASU). I worked on the design, construction and testing of a low temperature (~2.5K) cryostat. It was similar to work I completed at Lawrence Berkeley National Lab, but this time I was able to test and characterize the noise of microwave kinetic inductance inductors(MKIDs). My honor's thesis focused on the analysis of the MKIDs noise data. I used Python to automate the data collection from the MKIDs. The MKIDs were brought down to a temperature of 2.9K and then a vector network analyzer (VNA) was used to send signals to the MKIDs and to record their responses. Optical fiber was run from the VNA outside the vessel to the MKID inside to limit thermal heating from conduction, as copper wiring would have heated the MKIDs to much higher than 2.9K. The collected data was analyzed in Python using various mathematics and physics techniques and equations to characterize the noise of the MKIDs. The results of the research and the thesis can be viewed in the link's below.

Lawrence Berkeley National Lab (LBNL)

After my junior year in college I spent my summer as a research intern at LBNL in Berkeley, CA. My work focused on the design and construction of a cryostat (low temperature, low pressure vessel used to test superconducting detectors). I was tasked with designing and constructing the milliKelvin stage used as a testbed for research and development of detectors to observe microwave radiation from space. My work mainly consisted of three different areas. The first was CAD modeling. I used SolidWorks and other tools to design various parts for the system and to create the engineering drawings sent to machinists to create parts. I also was a part of the review process for quality control of incoming and outgoing drawings and parts. Phase two of my research was constructing the apparatus itself. This consisted of installing the parts upon arrival and researching the proper materials and equipment needed for experimental setup and data collection. The last portion of the research was testing the vessel. Not all the parts were able to be added by the time I completed the internship due to long lead times of some parts, but I was able to successfully test the performance of what had arrived. I created code in Python to communicate with an assortment of sensors and detectors to automate the data collection and subsequently used code in Python to analyze the outputs. The vessel passed all tests.

Personal Projects

I decided I wanted to learn HTML/CSS and what better way to learn than applying the code to something. Which project did I build with HTML/CSS? Why this very website. I designed this website from scratch after reading through some online tutorial, texts, stack overflow and looking at other websites for inspiration. I am quite pleased with how it all turned out. Not bad for my first ever HTML/CSS project. And it only took a couple weeks from no experience to boot. You can find all my code for this website on my github page (github.com/ppublicgit/Personal-Website). I hope you have enjoyed perusing my website.

Prior to starting my masters program at UAH, I read and worked through a Stephen Marsland's Machine Learning book. I wrote my own takes on several classic machine learning techniques, including svm, random forests, decision trees and a multi layer perceptron. At the time I was also reading a fair amount on functional programming and so I tried to write all the code functionally. The code is found on my github. The learning algorithms are found in the Learners folder and the programs to run and test my algorithms are within the various python files at the root directory. https://github.com/ppublicgit/Machine-Learning

A friend and coworker showed me the Haskell programming language. He also suggested reading the book Haskell from First Principles by Chris Allen. I worked through much of the book, played with the language and found I really enjoy it. The purity of its functional programming principles present a new approach and challenge to writing code. The lack of traditional imperative paradigms such as loops and objects at first was difficult to grasp. However, afterwhile I grew to appreciate the beauty and ingenuity of recursion. I particularly liked the built in support of list comprehension, functors, applicatives and more.

I decided to practice my skills with the language I wrote a terminal chess game. The code is on my github. I learned a lot during the exercise and grew to truly appreciate Haskell by the time I finished. I do not agree with all the decisions I made for the code, but in the end I was happy with the product.

https://github.com/ppublicgit/Haskell-Chess

Prior to starting my Masters program I wanted to learn about data structures. Though my university also made me take a course on data structures , I feel I learned more on my own. I read through a textbook a friend lent me on the subject. It covered all sorts of structures from arrays, to linked lists, to hash tables, to general trees and more. I wrote all the data structures in C++.

https://github.com/ppublicgit/DataStructuresCPP

I like to keep track of my expenses. I collect the information in an excel spreadsheet with various categories for my expenses. I created formatting in the spreadsheet to easily see and understand my expenses and income. I also wrote a python gui to plot my expenses to show a general trend for my expenses.

https://github.com/ppublicgit/budget

This project is ongoing. I have posted some of my code to my GitHub (finance repository). The code is all first version tests of what I want to implement. Due to the nature of stock trading, I have not shared all my code, ideas or final versions, only the early versions codes and the simple concept ideas, mainly for back-testing purposes.

I find the stock market an intriguing system of global interaction. Many common mathematics and even physics processes surprisngly show up in financial markets. One of the most important and famous of these patterns is the price of stocks. Louis Bachelier, a French mathematician, is credited with the discovery of the brownian motion of stock prices in his Ph.D. dissertation, "The Theory of Speculation". The book by Burton Malkiel, "A Random Walk Down Wall Street", brought this revelation and theory to the public. Nowadays, with the advent of faster and faster computers and simple, easy to use programming languages, the popularity of quantitative trading has taken off. Things such as high-frequency trading and statistical arbitrage have become common practices for hedge funds and day traders. Furthermore, large data facilitates traders in formulating trading ideas and back-testing their performance against historical data.

I decided to dip my feet into quantitative trading to learn more about the subject and to practice my Python and math skills. I read several books, including my favorite, by E.P. Chan, "Algorithmic Trading," to learn more on the topic and improve my understanding of the field. Following this guide, as well as posts on various blogs and forums, I created my own tools for trading and finding edges in the market. Among these tools, I have a webscraper for Yahoo Finance key statistics, Twitter and Stocktwit that collects data via an input of stock symbol and returns a pandas dataframe of important information. I also have various tests for cointegration (Hurst exponent, ADF, Johansen and Variance Ratio) and an asset allocation optimizer (Kelly formula) given stock symbols as well.