Description:
Wrote RTL modules for quantized vector-matrix multiplication and non-linear activation functions using
Verilog. Demonstrated successful inference on MNIST using pre-trained weights of a 2-layer perceptron
network. Deployed the solution on to a Zynq-based FPGA using the hls4ml framework.
Technologies:
Verilog, Python, Vivado, hls4ml (for high-level synthesis)
Demo: Video
Description:
In Summer 2019, I interned at the Pi
Star AI and Optimization Lab at Texas A&M University as a
research scholar, studying and simulating various machine learning
algorithms and their efficiency in the context of autonomous
driving.
I led the development of the core framework for the
simulation-side of the project and worked with a team of graduates
as well as post-graduates. This framework was based on the CARLA
simulator and compatible with OpenAI's Gym library.
Technologies:
Python, Gym, CARLA
Code: GitHub
Description:
A fully functional
AI-powered fashion e-commerce web application built using a modern
and efficient technology stack. The system can recommend outfits
from brands based on input user images and ongoing trends through
an assortment of different image processing and artificial
intelligence algorithms.
Technologies:
Django and Python for the back-end, React-TS/JS for the
front-end, PostGreSQL as the database ORM, and GraphQL for the
client-server API - implemented using Apollo Client at the
front-end and Graphene Django at the back-end, and PyTorch and
Tensorflow for the recommendation engine.
Demo: Video Code:
GitHub
Description:
An interactive simulation built using principles of
Object-Oriented Programming for visualizing the solution to the
shortest path problem through ACO. Parameters include ant
density, dynamic obstacles, solution randomness, and pheromone
visibility. Included artwork was also self-designed to add a
tint of personalization.
Technologies:
Processing for Python.
Demo: Video
Code:
GitHub
Description:
A feature-rich raytracer written entirely in vanilla C++
that can render flawless stills from any imported 3D model.
Salient features include a variety of different lighting
sources, a well-grounded array of materials, as well as a few
shading options. On top, it also makes use of multithreading and
few industry-grade and efficient data structures for
accelerating the process of ray-tracing.
Technologies:
Vanilla C++ (std:C++17)
Demo: Blog
Description:
A simple fly-by view over an infinite terrain generated
through Perlin Noise. The project takes use of the traditional
pipeline rendering process in Computer Graphics. Vertex shaders,
fragment shaders, flat and smooth shading, wireframe generation,
procedural terrain generation, affine transformations and
various schemes were explored and implemented.
Technologies:
JavaScript, HTML, CSS, WebGL 1.0
Description:
A complete end-to-end finite element solver for a given
system modelled by the Poisson's equation. The project
implements the global stiffness matrix procedure and solves for
a given mesh file under given boundary conditions.
Technologies:
Python with NumPy and Matplotlib.
Description:
The project implements two well-known approaches in machine
learning, namely,
behavioral cloning or imitation learning, and reinforcement
learning, on the Humanoid-v2 environment provided by the
MuJoCo-200 binding for LinuxOS, which comes with OpenAI’s
GYM package for Python3. The goal of this environment
is to train the humanoid to perform a balanced walk from scratch
– one that doesn’t deviate from its initial straight trajectory.
The two approaches were implemented and their pros and cons on
the model were analyzed.
Technologies:
Python with OpenAI GYM, MuJoCo-200.
Demo: Video
Code:
GitHub
Description:
A complete single-cycle datapath processor based on the
RISC-V architecture using a module-first bottom-to-top approach.
The processor can execute a specific set of instructions, which
include R-Type, I-Type, and Branch-Type instructions. The main
modules include a register file, a 64-bit ALU, data memory,
instruction memory, program counter, a full adder, an ALU
controller, a control unit, an immediate bit generator, a
multiplexer, and an instruction parser.
Technologies:
Verilog
Description:
A simple and elegant university management system offering
separate faculty, admin, and student portals. A student can
enroll in given courses for each term upto a specific amount of
credits set by the admin. Students can also view their grade
sheets for enrolled terms, and the faculty can assign assignment
and course grades to students. The admin can monitor and oversee
all these processes.
Technologies:
MySQL, Microsoft Visual Studio, Windows Forms, DB Designer.
Description:
A remake of the classic Arkanoid i.e. Brick breaker
videogame, written in under a month. An extremely high emphasis
was placed on design principles and Object-Oriented Programming
(OOP). Classes were written for each object in the game, and the
interfaces are decoupled from the implementation, so as to
maximize encapsulation and abstraction. Inheritance was
consistently implemented based on all intuitive class
relationships, and so was polymorphism.
Technologies:
C++, SDL 2.0 and extension libraries (SDL_Mixer and
SDL_Image), Photoshop, Illustrator.
Demo: Video
Code:
GitHub
Description:
Runway Radio is Habib University's first and only
student-run radio network. It operates over Habib's intranet and
serves as a platform for students from all departments to hone
their communication and verbal skills and engage in an array of
intellectual and stimulating conversations. The IT system for
the radio includes a Portable Web App (PWA), a website, and an
internal ShoutCast server for live broadcasting/streaming.
Technologies:
Wordpress, Shoutcast, WAMP stack.
Demo: Website Code:
GitHub