Jeffery Tang
Web designer. Web developer. Web enthusiast.


My Pokemon Team
Best pokemon teambuilder out there. Shows team weaknesses and strengths, and the sprites are animated.
McGill SURE 2022
other - ML
My research on the multi-armed bandit (MAB) algorithms in a retail setting under the Summer Undergraduate Research Engineering (SURE) program.
Four Way Pong
What's better than two players playing pong? Four players playing pong! You can also play against different levels of AI. Keyboard required.
Let's Find Elie!
Elie hides among a sea of other faces. Can you find him through 50 levels? Based on "Where's Waldo" and the Super Mario Bros DS minigame "Wanted".
Hopping Mazes
Cross a maze then blow up the path behind you to win. Maze randomly generated with the hunt-and-kill algorithm. Uses Dijkstra's shortest path for the win condition.
Recreated the breakout game using Java and UML diagrams for my ECSE 223 group project. You can even create your own custom levels.
other - database
For my COMP 421 project, I created an app for booking covid vaccinations through these steps: 1) planned out the ER diagram 2) materialized it with SQL and DB2 3) connected it to a Java CLI menu through JDBC.
Simple Filesystem
Implemented a Unix-style filesystem that can be mounted by a user in their machine for my last ECSE 427 (OS) assignment. Uses the FUSE wrapper. Doesn't support subdirectories :(
ARM Stopwatches
Polling and interrupt-based stopwatches on seven-segment displays.
ARM Functions
Wrote four functions/subroutines in the ARM language: factorial, fibonacci, 2D convolution, and bubble sort.
Drawing Flags with ARM
Drew the Captain America shield and the PRC flag on a VGA pixel buffer.
DNS Client
other - networking
If you know what DNS is, this is pretty self-explanatory. Made with python for ECSE 316. Can handle A, NS, CNAME, MX.
UML Model and UI
Use Eclipse EMF to design a UML/Ecore model and generate its code. Then implement a Java Swing UI editor for it.
DSL to URN Translator
Use ATL to translate a domain-specific language (DSL) into User Requirements Notation (URN).
DSL to HTML Translator
Use Acceleo to translate a domain-specific language (DSL) made with Xtext into HTML. ECSE 439 group project.
A* Pathfinding Bonanza
game demo
How can 50 people in a large room reach their destination without bumping into each other? Pathfinding is done with A*, agents replan to avoid bumping.
HTN Planning Monster (AI)
Grab the treasure and bring it back to the start line to win. Treasure is guarded by a monster whos behavior is determined by an HTN planner. The arrows are mice guided by steering forces (boids).
CLI Connect Four
Play Connect Four against a simple AI through the terminal.
Cannon Standoff
game demo
Demo of custom physics (no Unity physics). The water and mountain is randomly made with 1D perlin noise. Balloon motion is based off Verlet integration.
RRT Pathfinding
Demonstrates with Python how to navigate to a destination with a rapidly exploring random tree (RRT). Agent can be a dot or a line.
PID Control a Floating Ball
Blow air through a tube so that the ball can reach the target height. Uses OpenCV and a PID controller. Kalman filter on top of that if noise is added to the image.
BMP Editor
Used C to create a CLI editor for checking metadata, resizing, and overlaying two BMP images -- such as dog and bunny ears on robots.
Bounding Box Drawer
Very simple, you can draw boxes on images and label them. It even tells you the dimensions of your boxes. Could be useful for ML.
Rideshare Android
other - mobile
A simple ridesharing Android app for our ECSE 321 project. Unfortunately not on the app store.
Rideshare Web
An admin webpage for a simple ridesharing app for our ECSE 321 project. And it even has dark mode! For security reasons, I can't let you login :(
Raspberry Pi Sense Hat temperature


I plan on porting most of my projects to the web, so that you can better access it without downloading and executing any files.

The stuff I have here doesn't represent all of my work. I've also:

  • worked on an assignment on GPS-guided drone simulation, the drone has to avoid urban tiles and efficiently cover arable and water tiles
  • unit, integration, API, acceptance, non-functional, and UI tested a Java Spring PetClinic sample app for a group project
  • wrote Java programs for my parallel computing class
  • wrote C programs for a simple shell and user-level thread scheduler for my OS class
  • coded up the 2D fast fourier transform (FFT) and used it to denoise and compress images for my signals class
  • dabbled with the Raspberry Pi Sense HAT to display time, temperature, humidity
  • participated in a 48-hour game jam to make a game called GUP, where you grapple up canyon walls to escape the rising water.