ShellImplement a Linux shell with support for built-in commands like cd, history, jobs, redirection, and pipes.

Data VisualizationsCreated multiple D3 visualizations in relation to San Francisco city-data which included graphs, maps, line, bar, stacked bar, and parallel coordinates.

Search Engine: A Java-based implementation of an in-memory search engine that is able to process user input queries and output ranking based results on a web page with SLOC of 2000. Designed the back end using the inverted index data structured. Implemented a partial and exact search system. Used multithreading and work queues. Supported  JSON output. Used the Bulma CSS library for front-end. There is also a web crawler that parses the text and strips HTML using regex. Finally, sockets are used in order to implement a Jetty based server. 

ARM Emulator: A C-based program that can execute ARM machine code by emulating the register state of an ARM CPU and emulating the execution of ARM instructions. Some notable features that are included are a representation of the register and the stack, ability to emulate ARM functions for data processing and storing operations,  and a cache simulation for directed-mapped instructions to help visualize how a cache works. It also included a dynamic analysis for function execution which reports all the processes through the command line such as the instructions counts, number of branches taken, and cache ratios.

Number Conversion: I implement a Linux/UNIX command-line program in C that can convert values between different number systems and also perform “bit twiddling.” There were six big algorithms, where I had to take in input as either a binary, hex or an unsigned int and convert into an unsigned int then I would convert back into an unsigned int, signed int, binary with base 2 and binary with a spacing of 4 and the hex. It would also include arguments through the command line that would allow the setting of the bit width and the bit range.

Past Projects for University:

Hybrid Sorting Algorithm: A java hybrid sorting algorithm based on Tim sort by sorting all the numbers using runs.

Kruskal’s Algorithm: Java program to find a Minimum Spanning Tree of a given graph using a disjoint set implementation in order to store the least weighted pathways to all vertices.

Hash Table: Created a Hash-table program in java to store words in a dictionary. Stored strings in the array using separate chaining

Password Generator and Tester: A random password generator of 15 characters and strength tester designed in C using pointers.

Doubly Linked List: A doubly linked list implementation in C where one can add, remove, search and free allocated memory.

Chess: Implemented a fully functional chess game in Java with the proper attacking and defending.

Simple Social Media Program: Designed a list-based social media program through file I/O manipulation in python.