This portfolio page is dedicated to my technical and academic projects which I have completed for university and to practice particular knowledge or skills. Some source code available on my GitLab.


My GitLab

Course Management Website Prototype *

As a part of a capstone databases course, I designed a fully-functional prototype for a course management website using tools such as Python via Flask, PyCharm, Bootstrap, and SQLite. The website allowed for different user types, each with different permissions and roles. Students could view courses, assignments, announcements, exams, and other related course materials. TA and professor roles had additional functionality for grading, management of course content, and comment moderation. There was also an administrator role for full access, including direct access to the database. In addition to the front-end web application, I designed and implemented the database for the site, fully populating it with sample data for testing.

AI Portfolio (Puzzle Solvers, Game AI, Spam Filter, N-Gram Models) *

  • Linear Disks Solver

For an artificial intelligence course, I worked on a series of assignments implementing various core AI algorithms and methods. Concepts covered included intelligent agents, uninformed search, informed search, logical agents, uncertainty, and Markov processes. Implementations of these concepts included an n-queens solver, linear disk solver, email spam filter, lights-out puzzle solver, number tiles puzzle solver, and a Sudoku solver.

Mini-Processor *

For a computer engineering course, I designed a fully functional mini-processor from the ground up using Verilog and MIPS assembly. The single-core pipelined processor implemented standard CPU components, such as the ALU, buses, control unit, and registers. This project helped to solidify my knowledge of core, low-level computer architecture design.

Operating Systems Portfolio (Secure Memory Allocation, Concurrent Scheduling, File Systems) *

For a senior operating systems course, I completed a series of projects implementing various key OS concepts. The projects included a secure memory allocator, concurrent device driver, and file system. The slab memory allocator initialized a section of memory to allocate for processes then offered functions for filling and clearing pages of memory in that section. In addition to the basic memory allocation functionality, I also implemented a variety of security methods to deter common attacks on memory allocators. The concurrent device driver implemented a scheduler and handler API that was fully compatible with multiple calling threads. The file system implemented a basic API for reading and writing files from an OS perspective and assigning metadata with extended attributes.

Sample Programming Language Grammar *

For a concepts of programming languages course, I designed and implemented a sample context-free grammar to parse and perform operations on Roman numerals. The grammar was designed to handle addition, subtraction, division, and multiplication as well as support for “floating-point” Roman numerals. For such numbers the grammar would parse each side of the radix point separately, then combine for operations.

Sample Networked Device Driver *

For a systems design course, I was responsible for programming a large part of a device driver for a simulated HDD. The driver connected to a network, read data from a virtual drive (actual implementation wrote to a text file), performed operations on that data, then wrote back to the drive. This project reinforced many of the core concepts of the course, such as the retrieval/storage of data and how different components of systems are brought together.


* Due to academic integrity policies at my university, I am only able to provide some source code for potential employers upon request.