Software Project Development Experience
Software Security
- Implemented Buffer Overflow, Heap Overflow, Shell Code Injection, and Returned Oriented Programming attacks in C
- Examined how stack changes during a function call and program control flow.
Access Control
- Programmed an access control reference monitor in C that enforces various Mandatory Access Control (MAC) policies (e.g., Biba Integrity policy, Windows Mandatory Integrity Control (MIC) policy, Low Water-Mark Mandatory Access Control (LOMAC) policy) to protect integrity and confidentiality
Web Security
- Learned and implemented Structured Query Language (SQL) Injection attack, Cross Site Scripting (XSS) attack, and Cross-site request forgery (CSRF) attack
Network Security
- Implemented the Secure Shell Protocol (SSH) in C using the OpenSSL library
- Developed a client-server system that provides secure file transfer
- Developed a machine-in-the-middle (MITM) attack - Server Spoofing
Dynamic Memory Allocator
- Implemented a dynamic memory allocator in C
- Supported common functionalities such as malloc, free, realloc, etc.
- Wrote a heap checker to check invariants of heap memory
- Utilized a segregated list to track available blocks, optimizing throughput and memory utilization
MiniOS
- Implemented 4-level user and kernel space page table in C; Integrated dynamic memory allocator into MiniOS
Channels (concurrent programming)
- Developed a synchronization primitive channel in C
- Used semaphore to implement a buffered channel that supports send, receive, close, destroy, and select functionalities
2D Drawing Application
- Wrote a 2D drawing application in Java
- Implemented undo and clear button and a status bar
- Supported common shapes (e.g., line, oval, rectangle) - filled/unfilled, line width, color, and gradient effect
CPU
- Designed and implemented a five-stage pipeline CPU using the Xilinx design package for FPGAs with Verilog codes for the R-type, I-type, and J-type instructions
Room Scheduling System
- Designed a database-driven application with Graphical User Interface (GUI) in Java and SQL for room scheduling with a given date and the number of seats
- Implemented methods to add and drop a room, cancel a reservation, check the status based on different filters, and add to the waitlist
MDADM Linear Device
- Built a user-space application in C that manages the storage system with networking features
- Implemented read, write, seek to disk, seek to block functionalities that allows user to interact with multiple disks as one linear device
- Developed Least Recently Used (LRU) cache with 89.2% hit rate for random input with 4096 cache entries
Iterative Methods Comparison
- Compared the convergence rate and accuracy of widely-used iterative methods to solve linear systems, including Newton’s method, Gauss-Seidel method, and successive over-relaxation (SOR) method for linear systems with different entries and dimensions using MATLAB