Gitlet

skills

Java
Object Oriented Programming

role

independent developer
and designer

duration

February - April 2021

Summary

A version-control system that mimics some of the basic features of the popular system Git. This was an independent project created while taking CS61B (Data Structures) at UC Berkeley.

What I did

In my implementation of Gitlet, I used file persistence, cryptographic hashing (the way Git uses SHA-1 hashes), graph traversals, and a combination of data structures. Beyond the techincal intricacies, this project emphasized software engineering design principles such as efficiency, decomposition, and clean style.

Learning and Growth // Takeaway

Unlike other class projects, Gitlet required that each student design their own implementation and build it from scratch— no skeleton code. It required design thinking. Instead of just going in, filling in given methods, and testing code, I had to make all the pieces fit together. I had to determine how I was going to design the data structures before I could even touch the code.

It’s like writing a novel -- I could jump right into writing, but if I don’t have a destination thought out, it won’t turn out well. The best novels are well planned and designed.