This page features some of the technical projects I worked on in my 3rd and 4th year of university.
3D Procedural City Generation
This project is the final project for COMP521: Modern Computer Games. In my implementation, the city is generated in a pipeline with 3 stages. Stage 1: Road network generation on a game terrain. Stage 2: Building placement along road segments. Stage 3: Vegetation planting among buildings. In addition, a navmesh is provided for the city generated, which allows the implementation of pathfinding algorithm for agents in the generated city.
Project Proposal: Modern Computer Games Project Proposal
Modern Computer Games projects
I worked on 3 intensive projects for COMP521: Modern Computer Games. Many topics in game development were explored, but the most important ones include: Abstract terrain (procedural maze generation), heightmap and realistic terrain, 2D game physics, Verlet integration, behavior tree AI, A* and Silver’s pathfinding, multi-threading. All of these projects are done in Unity3D.
Applied Machine Learning project
I worked on 4 intensive projects for COMP551: Applied Machine Learning, each in a different team of 3. Project 1: Marathon predictor. Using publicly-available runner data to predict the outcome of 2017 Miami Marathon. Project 2: Text classifier. Given a Reddit conversation, label it with one of the eight categories (topics) available. Project 3: Image classifier. The training set and test set of this classifier both come from a subset of ImageNet (40 categories). Project 4: A literature survey on the issue of scientific replicability and reproducibility.
Computer Networks project
A project by Bobby Yang and myself for COMP535: Computer Networks. This project features simulated router nodes capable of communicating with each other in a simulated network. Network topology is maintained by Link State Routing algorithm.
Artificial Intelligence project
Project for COMP424: Artificial Intelligence. This project is an AI agent that plays the board game Das Bohnenspiel. This agent uses Minimax search with ahpha-beta pruning. Automatic parameter selection was used to improve the heuristic function in the search algorithm, and the resulting agent outperformed 83% of the class.
Computer Graphics project
I wrote 4 assignment projects for COMP557, Fundamentals of Computer Graphics. 1: Scene graph, humanoid character creation, OpenGL transformations, key frame animation. 2: Perspective and projection frustum, depth of field and 3D anaglyph. 3: Half-edge data structure and mesh subdivision. 4: Ray tracing, super sampling with Poisson disk, novel scene creation.
ScribeX
ScribeX is a web application which extracts handwriting digits out of an image file. It implements K-Nearest Neighbors algorithm, an introductory level algorithm in the field of machine learning.
Dr.Spider
Dr.Spider crawls the web link a user supplies, and performs a Depth-First Search starting from that point. It can detect invalid links in the website, and will display a report if any invalid link is found.
FaceIt
FaceIt is an android application written in C#, with Xamarin + Visual Studio 2015. This app allows you to choose a picture from Gallery or take a picture with camera, and it will recognize all the faces in the picture, if any.
EllerySearch
EllerySearch is a lightweight search engine. It crawls a website, indexes it, computes page rank, and breaks down page content to single words for users to search. A re-crawl function is also available in this search engine, allowing the search engine to crawl an arbitrary site specified by user. By default, it is configured to crawl elleryyang.com.
Minerva2iCal
Minerva is McGill University’s course registration system. With minerva2ical, McGill students can easily export their school calendars to any major calendar tool. This project uses Regex to match course info, and DDay.iCal library to serialize iCal files.
BonjourOCR
Developed with ASP.NET, BonjourOCR is a web application which extracts text out of an image file. This application implements Microsoft’s optical character recognition API from Project Oxford.
2096
If a machine is smart enough to pass the Turing test, will it be smart enough not to pass? 2096 is a sci-fi short story I wrote exploring the possible destructive power of AI.
VirtualComputer
Developed using Logisim, this project features a simulated computer with an 8-bit CPU made from scratch.