Development of a system for teaching CS1 in C/C++ with Lego NXT robots

This paper describes the development of a system for teaching C/C++ using a LegoTM NXT in a CSI college course on introductory programming. The programming of the NXT robot has been implemented using a C/C++ cross-compiler, which generates code that runs on an Open Source firmware platform, nxtOSEK. The system has built in commands and objects that run the motors and receive information from the sensors that are on the robots. The cross-compiler has been embedded in an Open Source Integrated Development Environment (IDE) Code::Blocks. The programming environment for the NXT has evolved from a previous development using the LegoTM RCX and has the advantage that it utilizes a Bluetooth interface, while the RCX uses a tower based infrared communication device. The NXT is more reliable and can be programmed to pair a specific interface with a particular robot, so that there is no cross-talk when different robots are utilized in a classroom setting. The IDE and robotic software executes on a virtual machine running under the freely available software, SunTM VirtualBox. This allows for a uniform programming platform for Windows, MacOS, and Unix/Linux. The use of robots in CS1 affords science and engineering students the opportunity to learn sensorymotor based control, to work with an IDE early in their careers, and to gain experience with development and debugging tools that can be utilized throughout the students’ academic and professional careers.

[1]  Peter Brusilovsky,et al.  Intelligent Tutor, Environment and Manual for Introductory Programming , 1992 .

[2]  Peter Brusilovsky,et al.  Mini-languages: a way to learn programming principles , 2004, Education and Information Technologies.

[3]  Randall D. Beer,et al.  Using autonomous robotics to teach science and engineering , 1999, Commun. ACM.

[4]  George D. Hickman An overview of Virtual Machine (VM) technology and its implementation in I.T. student labs at Utah Valley State College , 2008 .

[5]  Susan P. Imberman An intelligent agent approach for teaching neural networks using LEGO® handy board robots , 2004, JERC.

[6]  Elizabeth Sklar,et al.  Educational Robotics in Brooklyn , 2006, AAAI.

[7]  Chris Rogers,et al.  LEGO Engineer and RoboLab: Teaching Engineering with LabVIEW from Kindergarten to Graduate School* , 2000 .

[8]  Stephen Cooper,et al.  Evaluating the effectiveness of a new instructional approach , 2004, SIGCSE.

[9]  Barry S. Fagin,et al.  Teaching computer science with robotics using Ada/Mindstorms 2.0 , 2001, SIGAda '01.

[10]  Daniel T. Joyce,et al.  Proceedings of the 35th SIGCSE Technical Symposium on Computer Science Education, SIGCSE 2004, Norfolk, Virginia, USA, March 3-7, 2004 , 2004, SIGCSE.

[11]  Christopher Hundersmarck,et al.  Viva la brickOS , 2004 .

[12]  Leanne M. Hirshfield,et al.  Through the looking glass: teaching CS0 with Alice , 2007, SIGCSE.

[13]  Henry Mullish,et al.  An introduction to computer programming , 1967 .

[14]  Yedidyah Langsam,et al.  Development of a System for Teaching C/C++ Using Robots and Open Source Software in a CS1 Course , 2009, FECS.

[15]  Theodore Raphan,et al.  CS1 For an Early College Program , 2008, FECS.

[16]  Roberta Klibaner,et al.  A robotics lab for CS1 , 2005 .

[17]  Seymour Papert,et al.  Mindstorms: Children, Computers, and Powerful Ideas , 1981 .

[18]  Thomas R. Flowers,et al.  Teaching problem solving, computing, and information technology with robots , 2002 .

[19]  Richard E. Pattis,et al.  Karel the Robot: A Gentle Introduction to the Art of Programming , 1994 .

[20]  Martin C. Carlisle,et al.  Tools for teaching introductory programming: what works? , 2006, SIGCSE '06.

[21]  Deepak Kumar,et al.  Python robotics: an environment for exploring robotics beyond LEGOs , 2003, SIGCSE.

[22]  Susan P. Imberman Teaching neural networks using LEGO handy board robots in an artificial intelligence course , 2003, SIGCSE.