Karel is a training environment which is very useful for understanding Object Oriented programming. It is a great place to start if you are trying to learn progrmming in general or are trying to learn languages like Java or C++. In Karel you build virtual robots that perform certain tasks in virtutal worlds. Because programming can very abstract, Karel helps to put the language in terms that generate that kind of abstract thinking. Karel is good introduction to programming topics like: classes, objects, methods, functions and inheritence. I discovered Karel years after learning how to program and I helped me to understand some topics that I "didn't get" before.

The book, Karel++: A Gentle Introduction to the Art of Object-Oriented Programming pretty much covers the whole language. You can download the development environment here: here for windows or mac.

I have several dozen programming examples and problem solutions zipped here.