Project Portfolio

Adding Fibers to the Nautilus Aerokernel

April 2019 - September 2019

Nautilus Aerokernel Logo

I started this project in CS446, Kernel and Other Low-level Software Development, which is taught by Professor Peter Dinda. The project started with the goal of adding basic fiber (lightweight thread) features to the Nautilus Aerokernel. I continued work on the project during my summer research position in Northwestern's Prescience Lab. The lab is run by Professor Dinda, and it focuses on experimental computer systems research.

My implementation included the following functions in the fiber interface:
nk_fiber_create()
nk_fiber_run()
nk_fiber_start()
nk_fiber_yield()
nk_fiber_yield_to()
nk_fiber_conditional_yield()
nk_fiber_conditional_yield_to()
nk_fiber_join()
nk_fiber_fork()
nk_fiber_set_fork_cpu()

In addition to basic fiber functionality, I also added XSAVE/XRSTOR capabilities to the kernel. I did this by modifying the kernel's floating-point unit initialization code. I made other additional bug fixes and small changes to the kernel, but the majority of the work done during this project focused on fiber development. Click the title of this project or click here to see the pull request that includes my project's code.


Roman Numeral Analysis of Block Piano Chord Progressions

January 2019 - March 2019

Image

Click the title of this project to learn more!


AIM End Time Manager Chrome Extension

March 2019

Image

I work at AccessibleNU, which is the Office for Students with Disabilities at Northwestern. We proctor tests for students when their professors aren't able to proctor the tests themselves. We manage our office's data with the Accessible Information Management System (AIM), and we utilize their online test proctoring tool when we administer tests. The office found that keeping track of test end times is difficult, so I decided to create a Chrome Extension that simplifies test tracking and makes other AIM features easier to utilize.

The current version of the extension adds the following features to AIM:
Past due exams are highlighted in red
In-progress exams (greater than 10 minutes from completion) are highlighted in green
Exams that have 5 to 10 minutes remaining are highlighted in yellow
Exams that have less than 5 minutes remaining are highlighted in orange
Exams that are finished or marked "No Show" are colored grey
Exams that have not started remain their original color
The test table can be sorted by completion time by pressing Alt + Shift + S
A summary of the day's exams can be obtained using Alt + Shift + D on the test label page

This extension has helped simplify the daily tasks of the office, and it has made test tracking much easier. I plan to reach out to other offices that use AIM so they can reap the benefits of this extension as well.