My experience with Unified Modeling Language (UML) diagrams began with this program. I had never encountered them in the workplace. They're a nifty tool for visualizing the organization of an application and I'm now using the ones in Eclipse's side bar to better navigate through my programs.
I had never done multithreading in any language before this week, so that was neat. We used Thread's run and sleep methods to pause one process for concurrent processing with another -- namely, the timer.
I didn't find patterns to be that helpful because our team had done a lot of encapsulation of the code we transferred. It seemed to oversimplify it. Yet, I wonder how that might change if I were to begin writing the program anew.