Lawrence Liu
Purdue University CS/DS Junior

As a Java and Python developer, I've learned that steady, disciplined progress, whether in coding, learning languages, or fitness, is what drives real results. Learning Spanish, Japanese, and Korean has improved my ability to break down difficult problems, while sticking to long-term fitness goals has taught me persistence. I apply the same mindset to programming: detail-oriented, iterative, and always improving.
I built a functional UNIX shell using C, C++, Lex, and Yacc. This systems project involved implementing command parsing, process execution, piping, I/O redirection, and signal handling. In the project, I implemented and a custom line editor with history and tab completion, while ensuring zero memory leakage. This project taught me more about the complex interactions between shell components.
I built a custom malloc library in C to learn more about systems programming. My implementation handles dynamic allocation with explicit free lists for constant time operations, safe deallocation by coalescing with boundary tags, and uses mutexes for thread safety. Through this project, I've gained a better understanding of the tradeoffs allocators make between speed and memory fragmentation.