Welcome to My SNHU Capstone Project
Throughout the Computer Science program at Southern New Hampshire University, we are frequently tasked with creating a final project or even a full small application to demonstrate our learned abilities in the course topic such as a poker hand prediction model for Machine Learning or a school’s class registration system for data structures and algorithms. Then in the final term of the program they require a Capstone project where we take 3 previous projects (“artifacts”) either from within the program or personal projects and give them enhancements that demonstrate our new skills.
Self Assessment
In 2018 I had already been programming for about 3 years by self-teaching myself during film school then taking freelance work. However, all my experience was in C# with the Unity3D engine. I had started to wonder if I could ever actually make a career out of programming as I never learned the foundational basis of how to program nor did I know how to use any other languages like C++ that were major benefits in getting hired to a studio.
I then decided that if I were to take this career path seriously, I should return to university and get my second bachelor’s, this time in Computer Science. In the three years since enrolling in Southern New Hampshire University I have learned far more about the fundamentals than I even knew I was missing I as well now feel confident working with Python, C++, R, and at least steady enough to pursue further practice of Java, JavaScript, and Assembly (thanks Reverse Engineering). It was also thanks to this program that I finally pursued a field of computer science that I thought would always be out of my skillset, Machine Learning, and I have become completely engrossed by the capabilities and tools of this technology and its potential applications for the games industry.
During my last year of university, I had begun looking for internships that would give me experience working in a team environment, preferably within an agile work methodology. However, I quickly realized that there were not many interning opportunities available working within Unity3D, so I instead applied for full-time positions that would be open to someone not having worked in a professional team capacity before. I was hired by an amazing team at Suited Rundown, LLC working on a mobile game project as their lead front-end developer. In the year since starting there I have learned a lot about working within a collaborative close-knit team, using Azure DevOps for agile management, and have become a lot more confident in my abilities as a programmer in that time. Notably, I have learned a lot about networking while working with the backend developer and how to efficiently communicate with RESTful APIs and web sockets.
Below you will find the artifacts I have chosen to enhance to demonstrate my improved abilities as a programmer. These are all previous personal projects of mine that vary in when they were originally created. I have varied them in their uses of programming languages with 1 is purely JavaScript, 1 is Python with Tensorflow, and the other is using JavaScript as a backend and C# for the frontend. I am hoping this can show a varied usage of languages in application that I have now become comfortable with.
My first artifact is called INAT Bot, this is a reddit auto-moderation bot I had created about 2 years ago for the r/INAT subreddit. I had originally created this bot using the PRAW library in Python. However, it had a lot of problems crashing due to Reddit’s midnight maintenances breaking connections. As well the PRAW library has frequent radical refactors that made updating the code a bigger hassle than I was originally comfortable with. So, I instead took this as an opportunity to practice JavaScript with NodeJS. I was able to completely rebuild the functionality of the original bot, plus expand it with several new features. As well this bot was created to work with the cloud being hosted on Heroku.com. It has now been up for almost a month and has vastly improved the consistency and quality of posts getting focus on the subreddit.
The second artifact is a poker hand prediction model created with Python with the TensorFlow system. It is built on a dataset of 1 million no limit hold-em hands and flops. It then tries to predict the final hand you would have after turn and river. The research I had done originally on this project for my machine learning course showed it was possible to achieve upwards of 75% accuracy, however I was only able to achieve 65% in this enhancement. I was able to do this through improving my neural network layers with dropouts. As well I switched to using a better loss function and the adam optimizer. I have an interest in further research into improving this prediction model and finding other applications for this type of model in both traditional gambling games and more modern competitive card games.
Then for my final artifact I took an old Unity project I had made with an artist for mobile phones a few years ago that was never finished. TreeTap is a simple infinite runner with the slight twist of being a vertical progression route climbing the up a tree of different levels. It does however fall into the category of very difficult and precise dexterity games like classic Megaman titles. I figured that with such a high level of difficulty users would find pride in being the top 5 users to climb the tower. Therefore, for this artifact I added a leaderboard system. The backend for this system is created in JavaScript with NodeJS and Express being hosted on Heroku as the RESTful API for a MongoDB database that is hosted on Google Cloud (via Cloud Atlas). That was then connected to Unity using a standard .NET HttpClient and deserialized with Newtonsoft. I feel this is the culmination of my improvements outside of Unity is that I can now build a backend system that will integrate smoothly with my Unity projects.
Code Review
Artifact Enhancements
Software Design / Engineering - INAT Bot
Data Structures / Algorithms - PokerHandPrediction
Database - TreeTap Highscore Leaderboard
Personal Website
To view my other projects, visit my resume website: SkyCopeland.com
Or to specifically view my game projects visit: Fishagon.com