Ethan Chen


Software Developer

╲╱

About

Headshot
email
I am currently a fourth year Computer Science major at the University of California in Irvine. I love developing quality software for various platforms. I have experience in back-end object oriented programming, front-end web development, Unity Engine game creation, and Virtual Reality development among other things. Nothing makes me happier than developing a clever solution to a problem I am facing. Once I have a bare-bones solution, I will then go back and analyze possible improvements to develop a less demanding algorithm. I work most efficiently on my own code, but I greatly value code reviews and working through efficient algorithms with my peers and superiors.

Personal Projects

DungeonEscape img1
“Dungeon Escape” is a Unity based, 2D adventure-maze game. The goal of each level is to find the key and use it to escape out of the door, while avoiding enemies. The game is intended for mobile and is coming to the App store shortly! I am the sole creator of “Dungeon Escape” and handled everything from programming to game design to art creation. Developing this mobile game gave me a lot of insight on mobile game development and further increased my confidence in Unity development.

Dungeon Escape


Mobile 2D Unity Game

Skills Required:

  • Unity Engine
  • C#
  • Mobile UX/UI
  • Game Design
  • Pixel Artwork
  • Animation
Tutorial Level - (fullscreen for clear text)

Space Laser VR


Virtual Reality Space Game

Skills Required:

  • Unity Engine
  • C#
  • Blender Modeling
  • SteamVR
  • Oculus VR Integration
  • Physics
Capsules are representative of compressed air canisters. User can also push off of asteroids to propel themselves in this zero gravity environment.
Oculus Rift
“Space Laser VR” is a Unity based, 3D Virtual Reality, Space Simulation game. I became really interested in Virtual Reality, but I had one big complaint; I disliked how movement options in other games feel clunky and immersion breaking. I thought to combat this by finding an environment, outer space, where movement could be handled avoiding these gimmickey solutions. To do this, I decided to use a compressed air compulsion system - heavily inspired by the movie Wall-E. Currently, I am currently working on making the environment and interactions 100% physics-based for maximum realism.
Operating System SS
I created a pseudo Operating System that manages multiple disks, users, and printers; each of which run concurrently. Each user, running in parallel, reads its assigned input text file that contains commands to either store or print data. Upon receiving a command to store data, the user must request and wait for an available disk to write the data to. When a command to print data is received, a print job is created. Three printers work in parallel to complete these print jobs by retrieving the correct data from a disk.

Operating System


Multithreaded Java Program

Skills Required:

  • Java
  • Concurrency
  • JavaFX
REPORT
CODE

Fit Factory


Sparkfun WebApp - Azure IOT

Skills Required:

  • C
  • Azure IOT Hub
  • Sparkfun Wiring
  • Javascript
  • Arduino IDE
  • Sensor Input Analysis
Fit Factory is an IOT project that uses a Sparkfun contraption to collect user heart rate and movement data during a workout. The contraption used a particle sensor for heart rate estimation and an accelerometer for movement tracking. This data is sent by bluetooth to an Azure IOT Hub, and then broadcast to the web application.
The User is prompted by the web application to enter their age and weight. After this is done, there is a calibration period where our sensors and Sparkfun code determine the resting heart rate of the user.
The User is then prompted to perform an exercise. During the exercise, only the user's movements are calculated. Then, the user rests while their heart rate is being recorded. This data is used to calculate the estimated calories burned, which determines the size of the orange figure!
REPORT

Education

Programming in C++

Programming in C++

c++
Skills: C++, vim
  • This course introduced me to the behavior of C++.
  • I learned how to use the language and how to use pointers.
  • I really enjoyed the control that C++ offered.
  • I felt like I really had to force myself to understand exactly what my code was doing at all times.
  • For this reason, C++ is my favorite programming language.

Programming in Java

Programming in Java

java
Skills: Java, Android Studio, Firebase
  • This course further developed my skill and comfort in Java.
  • I find Java to be very verbose, however, there is a ton of useful built in libraries that can be taken advantage of.
  • I also built an Android Studio application for this class, helping me diversify my mobile development skill set.
  • Java is the language I am most comfortable with after C++.

Programming with Software Libraries

Programming with Software Libraries

python
Skills: Python, Python Libraries, API integration
  • This course taught me how to utilize all of the resources that Python and third party libraries have available.
  • Wrote a networked Connect Four game that would connect to a UCI host server.
  • Built a working navigation system using Google’s map API.
  • Programmed an Othello board game and GUI using Tkinter.

Data Structures

Data Structures

data structures
Skills: C++, vim
  • I learned the importance of having efficient storage methods and its implications on large data sets.
  • I also learned about different sorting algorithms and when to use them.
  • Learning about different data structures in C++ helped me see the language’s strengths when developing efficient programs.
  • This is the most impactful class I’ve taken in regards to my development as a quality programmer.

Information Retrieval

Information Retrieval

IR
Skills: Python, MongoDB
  • This class taught me how a search engine works. I learned how to tokenize a search query as well as the words on a webpage.
  • I learned how “Term Frequency, Inverse Document Frequency” (TF-IDF) is used to display relevant pages inside of a search engine.
  • I learned about different techniques a webpage can use to increase its ranking among the search results.
  • Alongside a partner, I built out a search engine that would display page results for web pages in the UCI domain.

Data Management

Data Management

mySQL
Skills: MySQL
  • Learned how to use a database management system through the use of MySQL.
  • Set up a database to allow for efficient storage and retrieval of data.
  • Analyzed the speed of data retrieval request commands.
  • Focused a lot of time on optimizing data retrieval queries.

Concepts in Programming

Concepts in Programming

concepts
Skills: C++, C, Java, Lisp, Prolog
  • OOP: Polymorphism & Overloading.
  • Dynamic vs. Static binding.
  • Functional Programming using Lisp.
  • Declarative Logic Programming; Prolog.
  • Parameter passing: pass by copy, reference, and name.
  • Scoping and observing the relationship of local vs. global variables.
  • Activation Records managing variables.
  • Concurrent programming using threads.
  • Synchronizing threads with the use of semaphores to control data access.

Compilers and Interpreters

Compilers and Interpreters

compilers
Skills: C++, Flex, Bison
  • Lexical analysis: Scanning, tokenization using finite state automata.
  • Parsing: Checking if token stream follows grammar.
  • Demonstrated importance of non-ambiguous grammar.
  • Analyzed Top-Down (LL) vs. Bottom-Up (LR) Parsing.
  • Used and Studied Bison Parser.
  • Type checking: Symbol Tables.
  • Practiced Code Generation / Optimization
  • Interpreter: scanning and parsing done at run-time.

Operating Systems

Operating Systems

OS
Skills: Java, CPU Scheduling
  • Processes vs. Threads
  • Interprocess communication: shared data / passing data.
  • Scheduling Algorithms: Shortest Job First, Shortest Remaining Time First, First Come First Serve, Round-Robin.
  • Synchronization: using semaphores to manage the access of shared data in a programs critical section.
  • Deadlocks: Learned what can cause a process to wait indefinitely, as well as how to avoid it.
  • Memory: Paging & Segmentation

Multitasking OS (UNIX)

Multitasking OS (UNIX)

unix
Skills: Unix, sh, bash, C, C++
  • Learned how to write shell scripts for bash and sh.
  • Learned about file systems architecture.
  • Manipulated file system with shell scripting.
  • Practiced using awk, sed, and grep for efficient data manipulation.
  • Developed C programs to manipulate file systems.

Intro to Artificial Intelligence

Intro to Artificial Intelligence

Intro AI
Skills: Python
  • Studied different search algorithms.
  • Learned about probability analysis and Bayesian Networks to make confident decisions.
  • Learned First Order Logic and how to infer knowledge using it.
  • Developed AI to solve Wumpus World.
  • Final Wumpus World submission scored in the top 10 percentile of the class, having an average score of 256.

Machine Learning & Data Mining

Machine Learning & Data Mining

ML DM
Skills: Python, SKLearn, numpy, matplotlib
  • Learned about Bayes classifier and how to train a predictive model.
  • Used K-nearest neighbors to classify data.
  • Studied linear regression and linear classification.
  • Used Decision Trees to classify e-mails as either spam or not.
  • Used a Naive Bayes classifier to predict positive or negative sentiment of online reviews. Improved prediction accuracy by applying an Entropy threshold to filter out words with a neutral meaning.

IOT Embedded Systems

IOT Embedded Systems

IOT
Skills: Arduino, Sparkfun, C, Azure IOT Hub
  • Received and sent analog values to actuators on an Arduino Uno when developing a light metering gauge.
  • Used communication protocols UART, SPI, and I2C to read data from a touch sensor connected to an Arduino Uno.
  • Developed a traffic light Arduino system that changef colors on a timer.
  • Created a Sparkfun accelerometer program that counted steps. The data was sent via bluetooth to a mobile phone.
  • Sent data from Sparkfun to Azure IOT Hub and displayed data in localhost Web App.

Design & Analysis of Algorithms

Design & Analysis of Algorithms

virtual memory
Note: Currently Enrolled
Course covers the following:
  • Data Structures and Sorting Algorithms
  • Selection and Integer sorting
  • Divide and Conquer Algorithms
  • Graph representation and traversal
  • Shortest path & minimum spanning trees
  • Dynamic programming

Experience

Zynga Game Design Intern June 2015 - September 2015
Zynga
  • I contributed to an upcoming game belonging to the Farmville franchise.
  • Under the guidance of a senior game designer, I provided original input for and wrote game feature specs defining the needs and parameters on selected features that were implemented into the game.
  • Using Unity and Json, I also fixed image and text bugs, and cleaned up code base for unnecessary files.
Chen Design Associates Development/UX Intern June 2019 - current
CDA
  • Took five webpage wireframes provided by the UX team and using HTML, CSS, and JavaScript, built out multiple webpages experimenting with unique interactions.
  • Created a custom search engine in Python for a client that would give results specific to the clients expansive list of capabilities. I integrated this search engine into a PHP Wordpress template.
Video Game Design Club Unity C# Developer Jan 2019 - June 2019
VGDC
  • I worked within a team of four engineers, a game designer, and one writer to develop a minimum viable product “Downfall” for the Video Game Design Club at UC Irvine.
  • Utilizing Unity Tilemaps, I created a grid-based, isometric view, 2D attack/defense game.
  • Using a GitHub repository with multiple development branches, we were able to simultaneously and independently contribute our weekly tasks to the project.
Virtual Reality Club Oculus Unity C# Developer Jan 2019 - June 2019
VR
  • Utilizing Oculus Unity Integration, I created a Virtual Reality minigame in which the player is a giant gorilla on top of the empire state building and uses the Oculus Go headset and controller to look around and swat at and destroy planes flying by.
  • The game was made as a contribution to the UCI Virtual Reality Club’s compilation of VR minigames.

Skills

C++

4 Years

Preferred

Java

5 Years

Proficient

Python

4 Years

Proficient

C#

3 Years

Comfortable

C

2 Years

Adequate

Java Script

4 Years

Comfortable

Unity

3 Years

Proficient

Git

4 Years

Proficient

Oculus VR

1 Year

Experimenting

Arduino

6 Months

Experimenting

MySQL

6 Months

Adequate

Unix

2 Years

Proficient

Windows

12 Years

Proficient

MacOS

13 Years

Proficient

CSS3

1 Year

Comfortable

HTML5

1 Year

Comfortable