Blocks based visual programming environment for teaching robot programming to K-12 students