USB Device Driver for Linux Kernel
C, Linux Kernel, Makefile, dmesg, printk
Built a Loadable Kernel Module to detect USB devices by Vendor ID/Product ID, manage probe/disconnect events, and log driver actions with printk for kernel debugging. Designed a character driver interface to expose USB status to userspace and handle device communication. Gained practical experience writing Makefiles, handling kernel memory, and debugging with dmesg.
View on GitHubSteganography
C, File Handling, Bit Manipulation
Implemented message encoding and decoding inside image files using bit-level manipulation and binary file operations to hide and retrieve secret payloads. Added support for variable-length message embedding while preserving image integrity. Strengthened understanding of low-level data representation, buffer handling, and secure encoding techniques.
View on GitHubInverted Search
C, Hashing, Linked Lists, File Handling, Data Structures
Developed a text search engine that indexes words across multiple files using hashing and linked lists for fast lookup and file tracking. Implemented word normalization, collision handling, and file position mapping to return accurate search results. Built tools for parsing file input and maintaining dynamic indices in memory-efficient structures.
View on GitHubArbitrary Precision Calculator (APC)
C, Linked Lists, Dynamic Memory Allocation
Created a console calculator that performs arithmetic on very large integers using doubly linked lists and dynamic memory management. Implemented addition, subtraction, multiplication, and division with input validation and overflow-safe handling. Learned to manage node allocation, deallocation, and performance tradeoffs in pure C code.
View on GitHub