ECE344, Jan - April 2023.
As part of my Operating Systems class, I implemented many core operating system features to build on the bare-bones “OS161” operating system. For this I:
- Implemented memory management including page reclamation using a page table, demand paging, and page swapping with disk.
- Created core system calls for user programs including waitpid, fork, and exec.
- Implemented key synchronization primitives such as locks and condition variables.
ECE342, April 2023.
For my Computer Hardware class’ optional project, I built a compass that can be programmed to point to any location. Using a STM32NUCLEO-F446ZE microcontroller:
- Used a GY-NEO6MV GPS module to parse GPS data, using USART communication and Direct Memory Access.
- Communicated via I2C with a HMC5883L magnetonomer to read magnet field data to determine my compass’ orientation.
- Used Pulse-Width-Modulation (PWM) to display the direction and distance to the programmed location on a NEOPixel Ring.
APS360, Jan - April 2023.
As part of my Introduction to Deep Learning class, my team and I used machine learning to create a convolution autoencoder that, when given a hand-drawn circuit, could segment the drawing into it’s various components (e.g. resistors, capacitors, etc.). Through this we:
- Achieved a 45% Intersection-Over-Union accuracy, classifying 46 different modules, representing a 200% increase from the baseline.
- Designed and tested various Deep Learning models, tuning their hyper parameters to improve accuracy.
- Prepared, augmented, and labeled hand-drawn circuit images to be used as inputs for the model.
- Communicated our design process, progress, and results effectively through several reports and a presentation
ECE342, March - April 2023
For my Computer Hardware class, I used a STM32NUCLEO-F446ZE microcontroller to interface with a camera module to receive a continuous video stream. With this project I:
- Used Direct-Memory-Access to pipeline the video streaming process.
- Optimized the Frames-Per-Second (FPS) using data truncation and run-length encoding to achieve a 160% improvement in FPS.
- Optimized FPS again by sending only the difference in frames to achieve an additional 200% improvement.
Personal Project, Dec 2022, Notebook
To get a better understanding of some basic machine learning techniques, I created a model to classifier the classic MNIST hand-written number data set. The key concepts used were:
- Softmax Regression, to allow the model to use a regression technique.
- Minibatch Stochastic Gradient Descent, the chosen regression technique.
After 10 training epochs, I achieved an accuracy of 94%.
ECE295, Jan - Apr 2022, Video
As part of my 2nd year Hardware Design class, I worked on a Team of 3 students to design, build and test two radio transceiver (transmitter + receiver) components. Specific contributions included,
- Used Altium and Multisim to design the limiter, filter, mixer, and amplifier radio receiver circuits.
- Demonstrated successful integration of our subcircuits into a functioning radio receiver.
- Communicated the team’s design and testing decisions to both a technical and non-technical audience through multiple presentations and progress reports.
ECE361, Nov - Dec 2022
As part of my 3rd Computer Networks class, I created a messaging app. Using persistent TCP connections, my teammate and I created a client and server program. Features included:
- Allowing users to register a login username and password in a database.
- Allowing user to login/connect to the server with username-password checking.
- Allowing users to create and join sessions.
- Allowing users to sent public and private messages.
- Printing a list of all current users and sessions.
ECE243, Jan - Apr 2022, Video
As part of my 2nd year Computer Organization class, I recreated the popular NES game, Dr. Mario, on a DE1-SoC board using C and the CPUlator simulator. Dr. Mario is a tetris-like game where you move falling pills to eliminate viruses.
- Designed algorithms to control the pill behaviour, detect collisions and four of the same colour in a row.
- Detected interrupts from a keyboard and timers.
MAT188, Sep - Dec 2020
As part of my first year linear algebra class (MAT188), I explored how singular value decomposition (a matrix factorization technique) could be used for image compression.