You've reached the site of Chris Sheahan

UTCS Student, 4rd year

About Me

I'm currently a 4th year Computer Science student at the University of Texas at Austin pursuing a Bachelor of Science in Computer Science. My interests in the field include security, software engineeing, the theory behind Computer Science and algorithms, and anything else that catches my interest.

I started programming as a humble middle schooler fiddling around on my TI-83, passing the time in math class. After making my first program infinitely print out the phrase "Hello", my curiosity for Computer Science started. Once I got into high school, however, my experience evolved as I began taking Computer Science for the next 3 years. I learned how to code in Java, took the AP test, competed in competitive coding via state UIL competitions, and participated in FIRST robotics. For what I've done in college, check out my school work and my side projects.

Outside of Computer Science I enjoy quite a few things. Having participated in Football (2 years varsity, both years made quarter-finals in state), Track and Field (100M, 200M, 400M, and varsity shotput throughout my career), and Basketball, I have a great appreciation for most if not all sports. I always love physical challenges, whether they be through weight lifting, calisthenics, or any other form. Along with sports, I also find the human mind fascinating and love reading psychology occasionally. A third hobby of mine is lockpicking, opening anything from handcuffs to deadbolts. Other than those hobbies, I love keeping an open mind and trying new things.


What I have done and accomplished at UT


ACM - Association for Computing Machinery

  • VP Finance: May 2013 - May 2015
  • National ACM Member: August 2013 - Present
  • Member: August 2012 - Present

Longhorn Lockpicking Club

  • Webmaster: May 2013 - May 2014
  • Member: August 2012 - May 2014

Relevant Classes


Object Oriented Programming
C S 371P
  • Went over object oriented programming with a focus on the SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation, Dependency inversion) principles.
  • Practiced psuedo-realistic C++ projects involving github, pair programming, and continuous integration via travis-ci.
C S 375
  • The phases of the compiler, including lexical analysis, syntactic analysis/parsing, code optimization, code generation.
  • Regular and Context Free Grammars, Types of Parsers, Symbol Tables, Array references, records, and pointers, Linking and Loading
  • Implemented a Pascal compiler that compiled Pascal code into x86 assembly. This includes the following phases:
    • 2 versions of lexical analysis, one using C and another using lex.
    • A parser using yacc
    • A code generator that also performed optimizations
Operating Systems 2
C S 350F
  • Went over the following concepts:
    • System Calls
    • Synchrnoization and Concurrency
    • Virtual Memory
    • File Systems and Disk Management
    • Deadlock and Distributed Deadlock
    • Security and Protection
    • Generalized Rate Monotonic Scheduling
Theory of Computation
C S 353
Class Webpage
  • Convered topics including Turing Machines, Time and Space complexities and classes, useful cases for "hard" problems, and approaches to solving "hard" problems
Network Security
C S 361S
Class Webpage
C S 105
Class Syllabus
  • Created a bidding web application on the LAMP platform.
  • Conformed web application to both HTML 5 and XML web standards as well as following CSS 2.1 standards.
Algorithms and Complexity
C S 331
Class Webpage
  • Went over topics such as:
    • Stable Marriage, Graph Problems and Traversals, Greedy Algorithms, and Divide and Conquer Algorithms
    • Dynamic Programming, Max-flow Min-cut problems, and the Ford-Fulkerson Algorithm
    • NP, NP-completeness, PSPACE, PSPACE-completeness, Undecidability, the Halting Problem
    • Approximation Algorithms and Randomized Algorithms
  • Used techniques, discrete math, and proofs to implement and design algorithms to solve the same problem, the optimization of an auction (creating a Maximum Weight Maximum Cardinality Matching of a bipartite graph), in increasingly faster times. We started with the naive solution of O(n!), brought it down to O(n^2) through simple observations, and finally ended up at a runtime of O(n) taking a psuedo-dynamic approach.
Computer Networks
C S 356
Professor Webpage
  • Explored the theory of networks using the professors self created Abstract Protocol Notation.
  • Through this AP Notation, learned about
    • TCP, UDP, and error detection in both. Also went over error recovery and flow control for TCP.
    • Local and global topology maintenance, along with routing and switching.
Intro Computational Linguistics
LIN 353C
Class Webpage
  • Implemented concepts we learned in class using python and the NLTK (Natural Langauge Toolkit) addon.
  • Went over concepts such as:
    • Regular Expressions
    • Finite State Automata and Transducers
    • Part-of-Speech Tagging and Chunking
    • Classification
Operating Systems
C S 439
Class Webpage
  • Created a simple user shell
  • PintOS
    • Changed from a single threaded system to a multithreaded system
    • Implemented argument passing via a stack and system calls such as exec, read, and wait
    • Allowed stack growth via page faults and changed the virtual memory system from using contiguous allocation to using a page table, frame table, and supplemental page table
    • Modified the filesystem to use multi-leveled index inodes and allowed the creation and traversal of directories
C S 105
Class Webpage
  • Learned how to code in Perl
  • Created a program to use IMDB's database to calculate a given actor/actress' degree from Kevin Bacon
Computer Organization and Architecture
C S 429
No Class Webpage
  • Wrote a y86 interpreter
  • Optimized a cache to run at over twice as fast
  • Wrote a topological sort
Data Structures
C S 314
Class Webpage
  • Learned about the paradigm of Lisp
  • Solved algebraic equations with pattern matching
  • Experimented with path finding via Dijkstra's algorithm, Prim's algorithm, and A* pathfinding
  • Experimented with MapReduce
Usability and User Centered Design
UGS 302
Class Webpage
  • Performed a heuristic evaluation on the UT School of Information Website
  • Studied other usability tests such as remote usability testing, surveys, field testing, and crowd-sourced usability testing
Logic, Sets, and Functions
C S 313k
Professor Webpage
  • Studied boolean formulas, predicates, basic proofs, graph theory, sets, functions, recurrences, and Big-O/Omega/Theta notations


Where I have worked and what I have done

R&D Firebird TSF Intern
June 2014 - December 2014
  • Worked on tickets concerning tools, support, and frameworks on the Firebird product, a full stack JavaScript application to collect and display ratings and reviews.
  • Created a npm installable node.js module to interface with various internal APIs within Bazaarvoice with the purpose of data collection and aggregation. Also set up automated tasks such as linting, unit testing, and documentation via gulp.
  • Assisted in remaking a web interface for collecting and displaying real time information and analytics for the Firebird product.
QCT Linux EIP Intern
May 2013 - August 2013
  • Worked on a internal web application using html, javascript, and php
  • Created a stress tester application that will automate tests on new Android phones and tablets
December 2012 - July 2013
  • Programmed back end using node.js coupled with the express and compound.js frameworks
  • Used MongoDB for databasing operations
  • Prototyped frontend design using Jade, bootstrap, and JavaScript

Side Projects

What I've Made in My Free Time


A simple card game coded in 6502 Assembly for the NES. The card game follows a simple mechanic: you flip over your first card, you guess if the next one will be higher or lower, and flip. Keep track of high scores and current streaks. For more information on the game, learning to code NES games, or the game itself, check out the Github page.

UTCS Windows 8 Companion App

A Windows 8 app made during a 24 hour hackathon (HackTX) with Matthew Rayermann(Github/LinkedIn) and Jon Lee(Github/LinkedIn). We got the idea from an old app that existed before our new Computer Science building. We decided to make a Windows 8 metro app because none of us had any prior experience in C# or Windows 8 dev, so where better than a hackathon to learn such a skill. The backend comprised of completely perl code running commands on the CS machines which was then grabbed to the app to be parsed and displayed. In the end, we were able to show which machines were up, had someone physically in front of them, were down, how many users were logged in, the load averages, which printers were up, how many items were in the printer queues, and how many bits those items combined took up. Some features we wanted to add but weren't able to due to infamiliarity with Windows 8/time constraints were graphs, an auto ssh in button, and a button to ssh into a machine with the lowest users and load average. In the end, we won honorable mention from Microsoft. For more information, check out the Github page.

My Information