Compare classes in Java to the drawers of a file cabinet to model object oriented programming through an easy to recognize analogy.
Have students design a game of Asteroid in Java to introduce developing an object and class hierarchy.
Have students implement an algorithm in Java to solve mazes so they can practice manipulating 2D arrays, stacks, and queues.
Have students implement the dice game Flip in Java to introduce unit testing and to give students practice using loops and data structures.
Have students implement a seam carving program in Java to give them experience with dynamic programming, and with manipulating 2D and 3D arrays.
Have students develop a Java program that plots pictures in a 2D grid to practice 2D array processing with a focus on nested loops.
Have students write methods that perform tasks of a standard music player in Java to give them practice manipulating data structures in a familiar context.
Have students implement a simple GeoLocation class in Java that finds the distance between two locations using the Google Maps API to give students an interesting introduction to object-oriented programming.