Java
SENG 300 · team of ~20
Self-Checkout Station
A retail self-checkout simulation built by a 20-student team, with JUnit coverage across the core flows.

A software engineering course project simulating a full retail self-checkout: barcode scanning, cart management, tax and payment logic, and inventory updates, with a Swing interface and JUnit tests across the major functionality.
The engineering challenge was less the code and more the coordination. With roughly twenty students on one codebase, the project only worked because each subsystem sat behind a defined interface, so teams could build in parallel and integrate without stepping on each other.
The final iteration is three Eclipse projects: a simulated hardware library, the control software, and the tests. The software reaches the hardware only through listeners for the scanner, scale, coin and banknote handlers, card reader, and receipt printer. A second layer of the team's own observers publishes product and funds events to a coordinator that sits between the logic and the Swing screens for the customer and attendant stations.
My piece was the add-item-by-PLU-code use case and its tests, after working on weight-aware barcode adding in the earlier iteration. Around it the team covered scanning, text and visual catalogue search, bulky items, bags, weight-discrepancy blocking, coin, banknote and card payment with change, membership, and attendant actions like refilling dispensers and printer paper. The final test suite is 186 JUnit tests across 16 classes.