Projects

Operating System Development (OSDev)

Markix is an operating System I developed when I was little. It is a bare bone operating system for x86 architectures written in Assembly and C and runs on x86 or the bochs emulator. The idea is to have something more minimal than Minix so that students can understand every component of an operating system in isolation.
Hence, Markix is built in incremental stages. Each milestone corresponds to a Git tag, and improvements to that module are developed on dedicated branches.

TagComponentDescription
BootloaderBootloaderInitializes the CPU in real mode, loads the kernel, and switches to protected mode
InterruptsInterrupt SystemImplements the 8259 PIC, IDT setup, and interrupt service routines (ISRs)
KeyboardPS/2 DriverHandles keyboard input and interrupt handling
SchedulerProcess SchedulerRound-robin scheduling and context switching
PagingMemory ManagementGDT, paging tables, and memory protection setup
FilesystemGRUBFile SystemBasic FAT filesystem and GRUB integration

Download the source code from my GitHub page. Software needed: NASM Compiler, C Compiler with support for cross compiling to i386 architectures, Bochs, GNU Debugger (gdb).

ISO Standards for Weak Memory Concurrency

Amongst other things I also helped the weak memory concurrency community in fixing some problem with the C++ and Java concurrency model.

The work which we published at ESOP’20’ is being considered for the next ISO standard of C++.

B.Sc. and M.Sc. Projects for Computer Scientists

If you are looking for a project for your final year exam here are some, however, fair warning, these projects are not the fainted hearted:

B.Sc. and M.Sc. topics for Mathematicians

I can (and have) supervised mathematicians in the past who wanted to study some applications of group theory, abstract algebra and category to computer science and, in particular, programming languages. Feel free to reach out to me if interested.