## 1 Introduction  
An increasing number of robotic applications are available to the general public. Beyond the classic industrial applications and automobile assembly processes, robots are used today, for example, in food packaging or in warehouse logistics. Robotic vacuum cleaners have been an unprecedented sales breakthrough, using autonomous robots to successfully solve a real life need at homes. Cars are also increasingly incorporating robotic technologies such as auto-parking or even autonomous driver-assistance systems. The big automakers have encouraged these new technologies, achieving advanced prototypes of autonomous cars. Software companies like Google or Apple have been at the forefront of these developments. In addition, applications with aerial robots (drones) are also rapidly growing in number.  
All the robotic applications that reach the general public have software inside and much of their intelligence and value lies in that software. Typically, this software has several layers (such as drivers, middleware and application layers) and has specific requirements different from those required in other fields: real-time operation, robustness, reliability, distributed nature and heterogeneous hardware. In addition, graphical interfaces are often used for debugging, but seldom at runtime.  
The growth of robotics technology has created the need to train professionals in the sector, who can take the current limits further and produce new robotics applications to serve common people. Robotics is a cross-disciplinary field involving many technologies: electronics, mechanics, computer science, telecommunications, etc. At universities, robotics subjects and programs are traditionally taught at schools of mechanical engineering, electrical engineering and computer science [1,2], both on degree courses and post-graduate courses.  
Prestigious associations such as ACM, IEEE-CS, IEEE-SMC and IEEE-RA consider robotics to be one of the fundamental knowledge areas in computer science and engineering studies, especially in the field of intelligent systems [3]. The leading American universities in technology (Carnegie Mellon University, Stanford, Massachusetts Institute of Technology, Georgia Institute of Technology, etc.) include graduate and post-graduate studies in robotics and related fields, such as computer vision and artificial intelligence. There are many minor, bachelor, master and Ph.D. programs in robotics.  
Due to its cross-disciplinary nature, robots can be approached from many perspectives. For instance, as a set of sensors and actuators with intelligent software placed in between. Following this approach, the goal of the present work is to increase the quality of robotics teaching proposing a new open educational resource for higher education named Robotics-Academy. This focuses on software for robots as the key element for their intelligence, more on the algorithms rather than the middleware. It has been designed especially for students learning perception, planning and control algorithms common in robotics syllabuses of university courses (12-14 weeks).  
The remainder of this paper is organized as follows: the second section provides an overview of robotics teaching at university level and reviews several teaching tools used by the community. The third section explains the general design of the proposed teaching suite and several key decisions that have guided its development. In Section 4, we describe an introductory Intelligent Robotics course, including diverse practical exercises available in the framework. The fifth section presents results of courses in which the framework has been used and student evaluations. The last section summarizes the main conclusions and future lines of work.