Using Lego Mindstorm robots, I gave the kids a choice between two programming platforms: NXT and RobotC.
NXT is a picture based software aimed to fit the needs of younger students and is best suited for grades 4th and 5th. Using NXT, kids are able to program their robot to perform various tasks in order to complete challenges. They do this using a sequence of blocks with more advance skill sets involving the use of loops and "if then" statements.
For older students, or more ambitious younger kids, I highly recommend using RobotC. RobotC is a programming language similar to C+. Students are able to program the robot using the same skill sets used in NXT, but will do so using actual code. This software can absolutely be more frustrating than NXT but is absolutely worth the time and perseverance. Students using RobotC will need more help, guidance and encouragement as it can become frustrating quickly. Leaving out one semi-colon or neglecting to capitalize one letter can and will through off the entire program and mistakes are often hard to spot- even for seasoned RobotC programmers like myself. This summer I gave students a chance to try about both. Students who stuck with RobotC comment on how "boring" NXT was after they got used to RobotC.
Pictured is the summer class' "Ultimate Challenge." The challenge incorporates every skill students learned over the summer and involves the use of every sensor on the Lego Mindstorm. The challenge board is harder than it looks! Students were asked to follow lines until the robot touched or saw an obstacle, they had to circle around the world before crossing a bridge, stop at the line, spin around while the robot shouts "Hooray!" before finally having the robot continue to the finish using the sound sensor. "Clap your way to the finish!"
It took the kids an average of nine days to complete the challenge. Working in teams, they were able to collaborate and problem solve to get the robot through each check point.