Each folder is a coding project from a CS data structures class at UCB (61B). Files authored by me have a commented @author with my name or my initials at the top. In part, the projects were intended to consider interactions between various files and the structure of more sophisticated programs.
The projects were done in the order (A) Canfield, (B) db61b, (C) loa, and (D) gitlet, with fewer starter files given as the course progressed.
A) canfield: this was a mini-project, at the level of exercises (not a full scale programming project), intended to get a working program to play Canfield Solitaire. The game can be played with a text interface in terminal by the command java -ea canfield.Main --text and with a GUI by typing java -ea canfield.Main.
B) db61b: this was a project implementing a relational database management system, with its own query language that is a very restricted form of SQL. Specific commands like insert, load, and select (across multiple tables) were implemented.
C) loa: this program implemented the board game Lines of Action (https://en.wikipedia.org/wiki/Lines_of_Action), a game with similarity to checkers. Various commands needed to be implemented, as well as a simple AI player using alpha-beta pruning.
D) gitlet: this project had the fewest starter files (minimal design), requiring the majority of code to be written from scratch. The objective was to implement a miniature version-control system with a great deal of the functionality of Git (mini-Git or "gitlet"). Example commands that were implemented (according to specifications) include init, commit, add, rm, log, find, status, checkout, branch, rm-branch, reset, and merge.