Karel J Robot: A Gentle Introduction to the Art of Object-Oriented Programming in Java