Part I, Software Development, A-
Created a rather decent clone of the Atari classic using only ncurses in C. I used linear algebra I had learnt from my minor to better move and rotate entities on screen, and implemented Bresenham’s line drawing algorithm for a smooth terminal based game experience. Made use of structs for OOP-esque design. Main problems to solve were smooth rendering on a console interface and how to wrap entities when they reach the border (without a proper implementation the line algorithm would draw across the screen if the coordinates were simply changed there and then).
Part I, Digital Systems, A+
Had to create an “Etch-a-Sketch”-esque Paint program using MIPS assembly. The end user would issue commands and give subsequent parameters to draw on the canvas which was just a memory map of the heap. The program would then draw as instructed by iterating through blocks of memory and writing the desired colour within.
Part II, Operating Systems, A
Had to implement malloc(size_t size) and free(void* ptr) from first principles using only the sbrk, mmap and munmap memory management system calls. Was able to create an implementation that made use of chunked/multiple free lists.
Part II, Advanced Programming, A+
Had to implement a sequencer, which would read numerous DNA sequences and be given match parameters. For each match, its offset would be reported and the frequency table of all match parameters would be returned after each sequence. The sequencer also had to perform lookup/translation for complex nucleotides. This required the use of asynchronous structure and either recursion or solely array methods, I implemented this with the latter.
Part I, Digital Systems, A+
Had to add to a template file the required code for inputted MIPS assembly to be compiled/assembled into bytecode.