Projects
Application-Specific Processor Instruction Set Extensions
Fourth-Year Design Project
- Automatic system for finding processor instruction set optimizations, tailored to a specific application.
- The initial goal is to optimize the ARM architecture for running the Theora video decoder.
ECE 438 - Digital Integrated Circuits
May 2010 to present
- Currently in the process of designing a domino logic, 4-bit, carry-select adder.
- Primary design goal is to optimize for maximum operating frequency, while staying within reasonable power and space requirements.
- Schematic capture and transistor layout done in Cadence Virtuoso.
State Machine Image Processing Experiment
January 2009 to present
- Applying the concepts behind regular expressions to find and process patterns in images.
- The end-goal of this project is to define a language similar to regular expressions that can be used to match patterns in images, rather than text.
ECE 750 - Distributed Real-Time Software Systems
September 2009 to December 2009
- Implemented a real-time reaction time tester for the AVR ATmega169 microprocessor.
- Presented about methods for worst-case execution time analysis in real-time systems.
PSYCH 480 - Research in Computational Models of Reading Aloud
January 2008 to August 2008
- Designed and conducted experiments in order to find the optimal configurations of the models to best-predict human behaviour.
- Applied analysis of variance on the gathered data to qualitatively compare the behaviours of the models in each configuration.
ECE 457 - Applied Artificial Intelligence
September 2007 to December 2007
- Implemented artificially intelligent agents to perform the following tasks:
- Pathfinding - Find the optimal path from point A to point B, using uninformed and informed searches, with an emphasis on A*.
- Game Playing - Play the game Conga, using Minimax search and Alpha-Beta pruning.
- Logic and Inference - Explore a partial-observable world, known as Wumpus World, quickly and safely using logical inference methods.
- Probabilistic Reasoning - Effectively play Poker, using Bayes' Theorem to make decisions on the probability of winning.
- Analyzed the performance of the agents, comparing the various methods used to solve the problems.
Skills Canada Robotics Competition
September 2004 to June 2005
- Drafted, programmed, and extensively debugged, instructions in PICMicro assembly language to receive signals from a radio controller and interpret them to move the robot around.
- Built the robot, physically and electronically, in cooperation with three other men, with occasional leadership responsibilities.
The Game Programming Wiki - http://gpwiki.org
August 2004 to March 2008
- Contributed five articles to the wiki about Java game programming concepts, such as using VolatileImages, and double buffering.
- Improved the usability of the wiki by streamlining the content and setting standards for displaying it.
Game Programming
October 2001 to present
- Currently developing an "RPG aquarium demo" where characters behave according to a goal stack.
- Other projects include: Nintendo DS homebrew games, and Java-based roleplaying games.
Examples
Examples and demos of some of my projects are available online: