I graduated from Arkansas Tech University with a BS in Computer Science while minoring in Mathematics and am currently a computer science masters student at the University of Texas at Austin. My general areas of interest are artificial intelligence and neocortically inspired learning/intelligence. In particular, I am interested in language grounding: how to unite multi-modal perception with the learning and usage of natural language to make both more intelligent machines and more human friendly linguistic interfaces. I want to know how language relates to what we think about, how we think about it, and how we articulate what we know.
For fun, I like to cycle, swim, run and play piano (and some guitar). Check out some of my piano musings here.
Assisted with table modification in a data warehouse involving writing SQL, testing, and then pushing code to production
Developed Shell scripts for sharing data between servers
Gathered, organized, and analyzed data gathered from web scraping and manual sources to research and develop methods to exploit attributes of natural language within specific problem domains to automate the process of extracting meaningful data for businesses.
Designed & developed a web presence for various small businesses nationwide.
Designed and implemented a web based system for collecting and managing user information for an annual university outreach event.
Used a self-implemented version of hierarchical temporal memory to experiment with the possibility of learning the meaning of words as associations between invariant forms in an inter-modal learning environment based on the premise that language is a mapping onto a spatiotemporal model of an environment's persistent structure.
C++, Python, Scala, Java, PHP, Javascript (Jquery), SQL, HTML, CSS
International Society for Computers and Their Applications (Member)
The National Society Of Collegiate Scholars (Member)
PHI THETA KAPPA International Honors Society (Member)
ATU University Scholarship [full tuition, room and board] (Recipient)
Here is a collection of projects, websites, grad school advice and other miscellaneous items which I find interesting.
Here is a collection of code that I have developed to have fun, to review, to help others, or just for class. Feel free to use any of it. I am also in the process of migrating this code to github.
This project contains a python function to rapidly compute the n-th fibonacci number.
This project contains python and C++ code for a binary search tree. Methods include insert, remove, empty, size, search, and inorder printing.
This project contains python code for a singly linked list. Methods include insert, remove, empty, size, search, and return the list a python list.
This project contains python code for the binary search algorithm.
This project contains a python implementation of bubble sort.
This project contains a python implementation of heap sort.
This project contains a python implementation of selection sort.
This project contains a python implementation of insertion sort.
This project contains a python implementation of quick sort.
This project contains a python implementation of merge sort.
A Haskell Implemenetation of Simple Type Inference
This project contains Haskell code for performing type inference (not including evaluation) on a simple language. The language consists of variables, lambda functions, applications, let binding, ints, bools, boolean operators, and recursive value declarations.
This project contains python code for a simple linear regression. The code generates linearly related data points and then performs linear regression on the data. The results are plotted using Matplotlib.
A Particle Filter for Mobile Robot Localization
This project contains a python implementation of a particle filter. Testing code is also included to display the filter running in realtime using Matplotlib, provide the number of landmarks and particles as arguments, and to simulate kidnapping. Also check out the slightly modified version of the python code running in javascript and displayed interactively in the browser.
This project contains python code for simple logistic regression. There is code for generating some random test data and code for performing classification and displaying the results using Matplotlib.
This project contains python code for a general Naïve Bayes Classifier with laplace (add-alpha) smoothing along with extra code for text classification. In this case, I used the code to perform sentiment analysis on this IMDB movie review database for which the classification accuracy is ~81%. Changing the features from unigram counts to bigram counts increases the accuracy to ~86.7% (and using trigrams will be about 1.4% better).
The K-means Clustering Algorithm
This project contains python code for the Kmeans clustering algorithm with either simple random centroid initialization or Kmeans++ initialization. There is also code for click-to-add 2-D data points and rendering the pre and post clustering results using Matplotlib.
The Mean Shift Clustering Algorithm
This project contains python code for the mean shift clustering algorithm. There is also code for click-to-add 2-D data points and rendering clustering results using Matplotlib.
Expectation Maximization for Gaussian Mixture Models
This project contains python code for the expectation maximization algorithm for gaussian mixture models with simple random initialization. There is also code for generating 2-D data points from gaussian distributions and rendering the pre and post clustering results using Matplotlib and Numpy. The code can take the number of clusters as a command line argument as well as displaying the cluster assignments as EM runs.
A Genetic Algorithm for Evolving Sorting Networks
This project contains python code for evolving sorting networks for 16 inputs (trying to sort the inputs while minimizing the network size). There is also code for coevolving a set of inputs to force the popluations to adapt to more difficult inputs. Performance over time for both average network length and average network performance are included using Matplotlib.
This project contains python code for a constructing n-gram language models. You can provide the value of n to use the same class to make unigram, bigram, trigram, etc. language models. The N-gram uses Laplace (add-alpha) smoothing and handles OOV words. Extra functions are included for getting the perplexity score of the model on test data as well as utility functions for loading and tokenizing WSJ .pos files.
This project contains python code which extends the above n-gram model to be bidirectional. A bidirectional model simply involves linearly interpolating the token probabilities from a left-to-right and right-to-left n-gram model. This simple approach leads to much better perplexity scores.
A Bigram HMM Part-of-Speech Tagger
This project contains python code for a hidden markov model (HMM) used for part-of-speech tagging. The code uses a bigram POS tagger which uses deleted interpolation for unknown tag sequences (which is only slightly helpful for bigrams) and very simple unknown word smoothing. The code includes functions for loading WSJ .pos files as well as viterbi decoding for tagging new sentences and an evaluating function to get the accuracy on a tagged test set. This code generally gets training set accuracy of about ~95% and test set accuracy of about ~88%.