Portfolio
Table of Contents
- Description
- Artificial Intelligence
- Compiler Design
- Computer Vision
- Reinforcement Learning
- Telecommunications Project: Creating a DNS Client
Description
In this repository, you’ll find the various programming projects and assignments I have worked on while at McGill as either a Computer Engineering undergraduate or a Computer Science graduate student.
Each project has its own README
that contains more details for either
installing, running or just clarifying more about the project.
Note: COMP
and ECSE
are course code prefixes. COMP
courses are offered by the School of Computer Science whereas ECSE
courses are offered by the Faculty of Electrical, Computer and Software Engineering. Also this is a work in progress, existing or new work is added periodically to this list.
Artificial Intelligence
Class code: COMP-424
Compiler Design
MiniLang Compiler
GoLang Compiler
My team and I wrote a compiler that compiles a major subset of the GoLang language to Java. We developed the program in C with the Bison and Yacc toolchains.
Computer Vision
Class code: ECSE-415
I used Python 3.7 and OpenCV to accomplish computer vision tasks involving:
- Face detection and recognition using Eigenfaces (Principal Component Analysis), K-Nearest-Neighbor classifiers, and the Viola-Jones face detection algorithm;
- Implementing the unsupervised learning algorithms KMeans Clustering and Expectation-Maximization from scratch for scene segmentation;
- Depth map estimation within the context of stereo vision (multiple viewpoints for the an object);
- Epipolar line estimation within the context of stereo vision;
- Image stitching using SURF feature detection, RANSAC feature matching, homography estimation, and pyramid image blurring;
- Vehicle logo image classification using HoG features and K-Nearest-Neighbors;
- Edge detection using Laplace of Gaussians and Sobel filters, denoising, and sharpness enhancing;
Final Project: Vehicle Classification and Localization
This was a team project of 4 people to train different machine learning models for vehicle classification and detection. Our team used Python 3.7, OpenCV, Scikit-Learn, and Keras. We used the MIO-TCD vehicle dataset for training our models to perform vehicle localization and classification. A final report accompanies the project.
I worked on developing a machine learning pipeline involving Histogram of Orientation feature extraction and SVM classifier training and evaluation which can be viewed here.
My team also trained and evaluated the YOLOv3 model for vehicle classification and bounding box localization. Here’s an example output from the localizer:
Reinforcement Learning
Course code: COMP-767
Final Project
Telecommunications Project: DNS Client
Class code: ECSE-489
This was a team project for a telecommunications and networking laboratory course. My teammate and I implemented a command line Domain Name Service (DNS) client in Java. The client supports A, MX and NS query types.