A useful resource is from Carnegie Mellon Robotics Academy (CMRA). Lots of exercises, can use a physical or virtual robot to code: