Programming a computer in a language like Java requires precise sequencing of steps, one after the other, choosing which steps to follow in certain cases, and controlling the repetition of certain steps, in the process of solving a problem. Although such precision is required for the mindless operation of computers, it is foreign to people! People are much less rigid in their outlook, and can recover gracefully if their instructions don't seem to be reaching an objective. Because of this mismatch in the abilities of computers and people, expressing the solution of a problem in the instructions a computer can follow is a has proven to be difficult for many people. To get acquainted with the concepts, we begin by programming Karel the Robot. Karel is a teaching tool that presents the concepts in a visual way, that is less abstract than programming in Java.