Re-write wolfenstein! Make a ray-caster
it's fairly simple and really cool once you get it working.
Theres a quick explanation on my site:
http://stanford.edu/~ssyed/javaraycast.html
i'd have to say games are probably the funnest "app" to program.
It is also pretty fun to make your own algorithms for solving tricky problems... i.e sound or image analysis, AI type stuff.
Another cool idea could be to use Markov Matrices or some other types of analysis to try and generate coherent music