Programming Projects

Thank you for checking out this page of my portfolio. These are a collection of coding projects from various topics in the computer science discipline that showcase my knowledge in data structures, algorithms, and other diverse topics such as operating systems, systems programming and computer security.
image

NumC: A Performance Optimized C-Language Library For Matrix Operations

In this project and student competition, I developed of a high-performance C-language library for matrix operations, named 'NumC.' This project is supposed to similar in nature to Python's NumPy library, but with a C-language back-end. With a focus on both correctness and speed, I implemented over 2,500 lines of C and Python code. The library leverages the OpenMP multi-thread library and Intel's AVX extensions to execute parallel Single Instruction, Multiple Data (SIMD) computations. This not only significantly enhances the efficiency and speed of matrix operations but also positions the library as a notable contender, achieving an average 92X speedup over naive implementations. The project showcases my proficiency in low-level programming, optimization techniques, and seamless integration of C with Python through a well-documented Python-C interface. The codebase and optimizations are thoroughly documented in the README.md file, demonstrating my commitment to transparency and effective communication in software development. The project culminated in participation in a performance contest, where my submission placed in the top 20% of the fastests submissions.

Languages: C, Python
Project Size:
Skills Used:

Please contact me for the source code or a demo
image

Gitlet: A Simplified Approach to the GIT Version Control System 

For this project, I developed a simplified version-control system named Gitlet, inspired by the popular Git. The project focused on implementing essential features, including committing changes, restoring versions of files or entire commits, viewing backup history, managing branches, and merging changes between branches. Gitlet allows users to save snapshots of their entire project at different points in time, aiding in the management of complex projects or collaborations. The system employs unique integer IDs generated by the SHA-1 cryptographic hash function for each object (blob or commit), ensuring content addressability and universal consistency across systems. My implementation, encapsulated in the 'gitlet.Main' class, adheres to specific runtime and memory usage requirements, with a dedicated directory named '.gitlet' storing metadata and file backups. The project involves handling various commands via a command-line interface, ensuring error handling for invalid commands or incorrect operands. Additionally, the implementation follows specific guidelines to maintain consistency with the project's specifications. This project provided hands-on experience with version-control systems, algorithms, and data structures while honing skills in Java programming and adhering to project specifications and guidelines.

Languages: Java
Project Size:
Skills Used:

Please contact me for the source code or a demo
image

An End-to-End Encrypted File Sharing System

In my computer security class, I successfully designed and implemented a robust secure file-sharing system using the Golang programming language. The client application, resembling Dropbox but fortified with cryptographic security measures, allowed users to perform actions like authentication, saving, loading, overwriting, appending, sharing, and revoking access to files.

The system architecture comprised a trusted Keystore and an untrusted Datastore, acknowledging potential adversaries' knowledge of the client application and access to its source code. The Keystore ensured the secure storage of public keys, while the Datastore faced potential malicious activities. The threat model considered adversaries, potentially malicious users, and communication vulnerabilities.

The design requirements emphasized secure username and password handling, support for multiple user sessions, management of public keys using various cryptographic functions, statelessness of the client, and maintaining confidentiality and integrity of file contents. The project incorporated cryptographic functions such as Public Key Encryption (PKE), Digital Signatures (DS), Hash Function, Hash-Based Message Authentication Code (HMAC), Hash-Based Key Derivation Function (HKDF), Password-Based Key Derivation Function, Symmetric Encryption, and Random Byte Generator.

The client efficiently handled file sharing and access revocation, maintaining a single copy of each file and preventing unauthorized actions by revoked users. Additionally, the system adhered to Golang coding standards, avoiding global variables, returning errors for malicious actions, and using nil to signify successful operations.

This project demonstrated my proficiency in applying cryptographic concepts, considering complex threat models, and implementing a secure file-sharing system with a focus on cryptographic functions and coding standards.

Languages: Golang
Project Size:
Skills Used:

Please contact me for the source code or a demo

image

Pintos Operating System

In my Operating Systems & Systems Programming class, I completed a semester-long project to enhance the Pintos Operating System. Pintos is an educational operating system developed at Stanford University for teaching operating systems concepts. It serves as a hands-on tool for students to gain practical experience in system-level programming. Pintos provides a minimalistic yet functional operating system environment, allowing students to explore and implement key OS components, such as threads, virtual memory, file systems, and system calls. The development of Pintos is structured in multiple projects, each focusing on a specific aspect of operating systems, guiding students through progressively more complex tasks and fostering a deeper understanding of system-level programming principles.

This project encompassed several key improvements, including the implementation of command-line argument passing for user processes, expanded system call capabilities, and optimized file system performance with a sophisticated buffer cache.

The project also involved modifying the scheduler to adhere to a strict priority scheduling mechanism, ensuring that higher-priority threads took precedence over lower-priority ones. Simultaneously, synchronization primitives like locks and semaphores were adapted to prioritize higher-priority threads, addressing potential issues related to priority inversion.

Additionally, I ventured into the realm of multithreading, maintaining a meticulous 1-1 mapping between user threads and kernel threads. I implemented a simplified version of the pthread library, empowering user programs to create, exit, and synchronize threads effectively. This not only enriched the user experience but also laid the groundwork for future advancements in user-level synchronization.

In summary, this comprehensive project showcased my ability to navigate complex systems programming challenges, from memory safety in syscalls to implementing file system operations and enhancing overall system responsiveness through priority scheduling and multithreading. My contributions to Pintos demonstrate a deep understanding of operating systems principles and a commitment to creating robust and extensible software systems.

Languages: C, x86 Assembly, Bash Shell
Project Size:
Skills Used:

Please contact me for the source code or a demo

image

Web Server Front End (This Website)

For my latest personal project, I successfully designed, implemented, and optimized a dual-purpose server that functions both as a remote file server and a hosting platform for this website that you are currently viewing. The project involved meticulous sourcing and installation of hardware components and developing thousands of lines of code for the website's front end.

In the web development aspect, I took charge of crafting and enhancing the user experience by writing and/or modifying an extensive 5,693+ lines of HTML and CSS code. This encompassed creating a responsive and visually appealing design, optimizing performance, and ensuring cross-browser compatibility.

The project not only demonstrates my technical expertise in server administration but also showcases my skills in front-end development. The seamless integration of file server functionality with a dynamic website underscores my ability to handle diverse challenges in both hardware and software domains. This project is a testament to my commitment to excellence and my capacity to deliver comprehensive solutions that merge technical prowess with creative finesse.

Languages: HTML, CSS
Project Size: 5,693+ lines of code
Skills Used: UI, Web Design

Please contact me for the source code or a demo
image

Sixt33N: A Voice Controlled Robotic Car

For my Information Devices & Systems class, I designed the hardware and software for a compact robotic system with voice-controlled capabilities, applying machine learning concepts, linear algebra principles, and circuit theory.

In the software development aspect, I implemented a sophisticated voice recognition algorithm using PCA (Principal Component Analysis) and SVD (Singular Value Decomposition) principles. This algorithm facilitated seamless integration of voice commands, enabling the robotic car to execute turns based on recognized voice inputs. By using this unsupervised machine learning technique, I was able to get the robot to correctly identify the correct voice command in over 95% of cases.  These algorithms were consequently turned into actual code. for this, I authored and optimized over 500 lines of C code to program an Arduino Uno microcontroller, ensuring effective communication among various hardware components such as the motors and the microphone.

This project underscored my proficiency in applying machine learning concepts, leveraging linear algebra principles, and translating these concepts into actual software. The successful completion of this project serves as a testament to my skills in embedded systems, signal processing, and algorithm development.

Languages: C
Project Size: 500 lines
Skills Used: Linear Algebra, Machine Learning, Circuit Theory, Algorithms

Please contact me for the source code or a demo

image

Photo Scanning Script

Description Coming soon

image

Letter Recognition Algorithm

Description Coming soon