Abstract: A system and method for teaching computer programming contains software for providing a reference to a device and providing multiple views of a programming of the device. A textual view has programming code for controlling the device, a graphical view has icons to be placed, interconnected, and modified in a flow diagram in a programming area, and a simulation view displays a configuration of the device and a response of the device to the programming code. A configuration of the icons, when placed in the programming area, represent blocks of the programming code, where each block corresponds to a behavior of a respective programming object. The blocks behave in a specific manner based on the configuration of the icons. An input device modifies the programming code in the textual view, icons and interconnection in the graphical view, and configuration of the device in the simulation view, thus modifying the programming.