Overview
As a part of my Data Structures and Algorithms course at the University of Washington, I built a simplified version control system inspired by Git to strengthen my understanding of how software systems store, manage, and retrieve information.
My goal was to explore how tools like Git track changes and manage version histories. This is knowledge that helps me design better interfaces for developers and technical teams.
Problem Space
Version control tools are powerful, but often abstract for beginners. I wanted to understand what happens behind the scenes when a developer commits a file or rolls back to a previous version, and how those concepts translate into intuitive workflows for users.
Technical Approach
I implemented Mini Git in Java using:
Linked Lists to manage commit histories and restore points.
Custom Classes for commits, repositories, and file tracking.
File I/O to save and reload versioned files locally.
Command Line Interface to simulate commands like init, add, commit, checkout, and log.
This hands-on approach helped me visualize the architecture that powers real-world developer tools.
Key Features
Create and store repositories locally.
Track changes across file versions.
Roll back to previous commits using linked list traversal.
View commit logs with timestamps and version notes.
Takeaways
Completing this project gave me a practical understanding of how data persistence and version control systems work. It also made me more thoughtful as a designer, since I better understand how backend systems influence the usability of developer tools and workflows.
Tools Used
Java
Wanna chat? My info is below!
gurleenksamra@gmail.com
gsamra23@uw.edu