Create Eclipse project
Create a TileGameContext to facilitate game logic
Create a BoardLocation data structure
Add Direction class
Add Direction multipliers for numeric usage
Implement maximum board size checking

The BoardLocation class now checks for maximum board size, in addition
to the previous check for nonnegativity.
Add functionality to get adjacent board location

using BoardLocation#getAdjacentLocation(Direction)
Add JUnit 4 to the classpath, create tests folder
Add test for BoardLocation
Fix arithmetic error in BoardLocation
Add JUnit test suite
Finalize local variables to discourage bugs

in BoardLocation#getAdjacentLocation(int, int)
Sort members of BoardLocation
Add BoardLocation#hasAdjacentLocation(Direction)

and corresponding test method
Add BoardLocation#getAllAdjacentLocations and test
Create Tile and TileGrid, add tests, update suite
Add getAll(Unoccupied|Occupied)Locations methods

with corresponding tests
Switch from Set to List where appropriate

Previously, I had used List<E> instead of Set<E> in some places where a
Set<E> really is more appropriate. I had done this with the intention of
allowing students to work with an interface with which they are already
familiar. However, it seems to make more sense to expose them to more
realistic scenarios, so that they can (a) learn how to learn a new API
and (b) recognize the difference between Lists and Sets. Also, the
differences between the two are quite minor (they're both Collections,
after all) so it shouldn't be a large impediment to progress.
Add JGame to classpath for GUI
Begin GUI development

with a game driver class and a tile grid