James Hahn

Programmer. Thinker. Builder.

Recent News

May 2020: After finishing the first year of my MSCS at Georgia Tech last month, I have began my internship at Amazon doing data mining and visualization.
February 2020: My Medium article on decoding text CAPTCHAs was published in Analytics Vidhya, a Medium publication, which can be viewed here.
January 2020: Completed a mini side project to decode text CAPTCHAs, achieving 91% accuracy on the character classification sub-task and 44% on the CAPTCHA decoding task. I released a report and code here.
January 2020: Completed a mini side project to classify MNIST digits, achieving 99.2% accuracy, and wrote a full report with t-SNE visualizations (click here to read the report and download code).
October 2019: I was accepted as a reviewer for Machine Vision and Applications, a bimonthly computer vision journal.
October 2019: I was accepted as a proposal reviewer for the President's Undergraduate Research Award (PURA) at Georgia Tech.
October 2019: We had a journal article accepted to TPAMI 2019 titled "Interpreting Rhetoric of Visual Advertisements". [Paper]
August 2019: Had an extended abstract accepted to the MDALC workshop at ICCV 2019 (Seoul, South Korea). [Paper] [Poster] [Slides]
August 2019: Began my Master's in Computer Science at Georgia Tech in Atlanta, focusing on computer vision and machine learning.
August 2019: Finished my research internship at Sony in Tokyo, Japan, focusing on ingredient recognition for a robotic cooking assistant.
April 2019: Received an NSF REU from Dr. Adriana Kovashka to continue advertisements research over the Summer.
April 2019: Had an extended abstract accepted to the CV-COPS Workshop at CVPR 2019 (Long Beach, CA). [Paper] [Poster]
April 2019: Graduated with a Bachelor of Philosophy in Computer Science from the University of Pittsburgh with minors in mathematics and statistics.
April 2019: Committed to Georgia Tech for my Master's in Computer Science with a thesis, beginning in Fall 2019.
April 2019: Successfully defended my bachelor's thesis.
March 2019: Served as a mentor at SteelHacks 2019.
February 2019: Served as a mentor at TartanHacks 2019.
February 2019: Returned to AAAI-19 (Honolulu, HI) to serve as a robotics AI workshop teaching assistant.
January 2019: Presented current progress on my thesis work at the University of Pittsburgh Honors Research Fair.
December 2018: Wrapped up interdisciplinary research seminar through the honor's college, attending PhD defenses, technical/non-technical talks, and grant/proposal workshops.
November 2018: Received the CURF fellowship for my bachelor's thesis.
August 2018: Began my senior year of undergraduate studies.
August 2018: Attended SIGGRAPH 2018 (Vancouver, BC) as a conference student volunteer.
June 2018: Attended CVPR 2018 (Salt Lake City, UT) to help my research advisor co-organize a workshop on advertisements.
June 2018: Started internship at Hulu as a software engineering intern on the Ad Platform team.
May 2018: Received the THINK fellowship for my bachelor's thesis.
March 2018: My thesis proposal for acceptance to the Bachelor of Philosophy program through the Honor's College was successful.
February 2018: Attended AAAI-18 (New Orleans, LA) to serve as a robotics AI outreach workshop assistant.

About Me

Currently a graduate student at Georgia Tech. Learning everyday doesn't just stop after college; it follows you throughout life.

My love falls with engaging young coders and exciting them about the fascinating world of computer science.

I possess both extensive software engineering (preferably back-end development) and research skills, allowing me to fit into a variety of roles.

My research interests include human-visual reasoning, perception, and machine learning. With my previous research experience, I seek to develop the next best computer vision products.

If I'm not responding to your emails, I'm either watching tennis/soccer, playing sports, busy coding, or watching a new psychological thriller movie.

Currently looking for Summer 2020 research and internship opportunities. Let's get in touch.

Technical Skills


Advanced: C++, Python, C, Java, R, MATLAB
Intermediate: JavaScript, Node.js, ReactJS, HTML, CSS, SQL
Been a while: UnityScript, OpenGL

Data Science Tools

Advanced: Sci-kit Learn, NumPy, Tensorflow / PyTorch, Pandas, OpenCV
Intermediate: OpenMP, OpenMPI, OpenACC, CUDA, Caffe
Been a while: Jupyter

Development Tools

Advanced: MySQL, Git/Github, Confluence
Intermediate: TFS, SQL Server, DynamoDB, AWS S3
Been a while: Jenkins, Gaia, JIRA


Advanced: Raspberry Pi
Been a while: Arduino, Amazon Alexa


Advanced: Unit testing, Agile Methodology, Version Control
Proficient: Spanish

Operating Systems

Windows, OS X, Unix/Linux



Research Intern (Sony Computer Science Laboratories — Tokyo, Japan)
May 2019 - August 2019
Work in progress -- will update soon.
Software Engineer Intern (Hulu — Santa Monica, CA)
June 2018 - August 2018
Work in progress -- will update soon.
Security Intern (CMU Software Engineering Institute — Pittsburgh, PA)
September 2017 - April 2018
Work in progress -- will update soon.
Software Engineer Intern (JP Morgan Chase — Chicago, IL)
June-August 2017
During this internship, I worked in a team of four to develop a mobile application for JP Morgan's Credit Card line of business. We used ReactJS for front-end, Java for back-end, and Cordova to deploy the application to both iOS and Android. I contributed to the overall full-stack development on the team and helped successfully deploy the application to the cloud.
Machine Learning Forum Mentor (Udacity — Remote)
July 2016 - August 2017
On a daily basis, I answered the questions of Udacity's Machine Learning Nanodegree's students. In order to do this, I had to understand machine learning concepts and appropriate data analysis libraries, such as Sci-kit Learn, NumPy, and Pandas (all in Python).
Software Engineer Intern (MRI Software — Solon, OH)
May-August 2016
Throughout the internship, I worked on several projects. The main project was a web application using the ASP.NET framework and the MVC architectural pattern in JavaScript, AJAX, and C#. Also, I worked on the back-end of a dynamic news/information navigation bar viewable to all clients, which was put into production.
Undergraduate Teaching Assistant (Uni. of Pittsburgh — Pittsburgh, PA)
January - April 2016
Worked as a teaching assistant for CS0007 (Intro to Computer Programming with Java). Every week, I held labs to explain object-oriented concepts to 29 students. In addition, students could come to my bi-weekly office hours for additional help. This experience helped me develop strong skills with patience, leadership, time-management, and explaining concepts smoothly.


Graduate Researcher (Georgia Tech)
August 2019 - Present
Work in progress -- will update soon. recipe2video task.
Undergraduate Researcher (University of Pittsburgh)
October 2018 - TBA
Work in progress -- will update soon. Computer Vision term project.
Undergraduate Researcher (University of Pittsburgh)
January 2018 - February 2019
Work in progress -- will update soon. Measuring Effectiveness of Video Advertisements.
Undergraduate Researcher (University of Pittsburgh)
August 2018 - April 2019
Work in progress -- will update soon. Bachelor's Thesis.
Seminar in Conducting Research (University of Pittsburgh)
August - December 2018
Work in progress -- will update soon.

Organizational Leadership

SteelHacks 2019 (Mentor)
TartanHacks 2019 (Mentor)
SteelHacks 2018 (Organizer)
University of Pittsburgh CS Club (Vice-President, 2017-2018)
CodeDay Pittsburgh (Mentor, 2017)
Investing Now Workshop (Mentor, 2017)

Research Leadership

President's Undergraduate Research Award (Proposal Reviewer)
AAAI-18 (Robotics/AI Outreach Workshop Assistant)
AAAI-19 (Robotics Workshop TA)
CVPR-18 (Workshop Co-organizer)
SIGGRAPH-18 (Student Volunteer)



THINK Research Fellowship (2018)
Chancellor's Undergraduate Research Fellowhsip (2018)
NSF-Funded REU (2019)
Bachelor of Philosophy Degree (2019)


Pitt Challenge 2017 (1st place)
CMU Datathon 2017 (Finalist)
JP Morgan Global Innovation Hackathon (1st place)
HackMIT 2017 (Best Re-imagination of the Financial Market)
8 other hackathons

Side Projects


Captcha Solver (Medium publication)
December 2019 - January 2020
The greater goal of this project was to take text CAPTCHAs with a lot of noise, and decode them. With CAPTCHAs containing 4 characters on a 36-way supervised classification task (A-Z and 0-9 characters), a character classification model was trained to achieve 90.88% accuracy. Then, on the CAPTCHA classification task, with the help of the character model, an accuracy of 44.41% was achieved. Throughout the project, a significant amount of code was used to preprocess the code, train models, and visualize results/accuracies. A combination of both low-level traditional computer vision (for preprocessing) and modern deep learning techniques (for classification) were used to accomplish the aforementioned accuracies. The project was written using Python, PyTorch, Scikit-learn, Scipy, OpenCV, NumPy, Matplotlib, and the Python captcha library. A repository can be found here, while the full technical report (17 minute read) can be found on Medium, here.
MNIST Classification
MNIST Classification
January 2020
Achieved 99.2% accuracy on 10-way supervised task to classify the 10 classes of MNIST, a dataset containing images of handwritten digits. The project was written with Python and PyTorch. A full report, along with code, is available on my Github repo located here.
Hu Dat?
Hu Dat?
July 2018
A small data science project carried out in a group of 6 interns at the Hulu hackathon. The project was user segmentation for Hulu customers to place accounts into creative archetypes, such as Southern Belle, Busy Parent, Weeaboos, and more, utilizing 48 heterogeneous features of historical watch data. A short presentation is available here. I personally worked on elbow analysis for our our clustering algorithms' hyperparameter tuning. This involved using Python, matplotlib, numpy, and scipy
Playlist Generator
Playlist Generator
March - August 2016 (with intermittent updates)
Extracts a person's Chrome bookmarks from a list of input folders and converts YouTube URLs into an automated playlist. Serves 200 weekly users with ~225 daily impressions. Created with JavaScript, HTML, CSS, and the Google Chrome API. The repository can be found in the "Playlist" folder located here. The project is open source so feel free to contribute.
Diagnose Me
Diagnose Me
February 2017
An Amazon Alexa skill that provides a preliminary self-diagnosis to the user by listing their 3 most common illnesses from their symptoms. Created and won 1st place at the Pitt Challenge, a 24-hour healthcare hackathon hosted at the University of Pittsburgh. Created with Node.js and several other services. The project is located here.
Job Explore
Job Explore
July - August 2016
Helps teenagers and adults search for careers that might fit them. Users can search by occupation or skill to see associated skills and occupations, respectively. After searching their set of skills, they'll discover exciting new occupations that best suit them! Created with PHP5, MySQL, JavaScript, HTML, and CSS. Project can be found here.
Random Terrain Generator
Random Terrain Generator
January 2016
A random terrain generator using 2 algorithms: Midpoint Displacement (2D terrain) and Diamond-Square (3D terrain). Allowed me to mess around with a low-level graphics library for the first time. Pictures/video of each algorithm are on my Github. Created with LWJGL, a Java binding for OpenGL. The repository, containing a video of the results, can be found in the "Random terrain" folder located here.
Future Projects
Future Projects
Always ongoing!
I'm always working on something new. Whether it's with data science, games, web applications, low-level applications, or hackathon projects, you can find my new stuff on my Github!