[en] Programming is a field of study that affects other disciplines transversally, either because of its cognitive benefits or because of the high demand for professionals. The latest statistics from 2020 reveal that 6 of the 10 highest paid jobs in the US require programming skills. In addition, it is estimated that by 2029 the number of jobs in the areas of science, technology, engineering and mathematics will grow by up to 8%, while the rest will grow by 3.4%. Specifically, jobs related to Computer Science and Mathematics are expected to increase by 12.1%, making these areas the fastest growing in 2029. The above data confirms a trend that is occurring in today's world, which is preparing for a fourth industrial revolution (industry 4.0) driven by emerging technological advances in a number of fields that will require programming skills such as robotics, artificial intelligence and quantum computing, among others. Therefore, it is essential to facilitate the training of new professionals in Computer Science. However, learning to program presents certain difficulties due to the high level of abstraction required to assimilate certain concepts of programming, either those related to the structure of the program itself (for example control structures and loops), as other more abstract (for example concurrent programming and recursion). This level of abstraction can be properly managed in the early stages of learning, using mechanisms that facilitate the learning of programming through graphic visualizations and collaborative development environments. This doctoral dissertation proposes a set of solutions and learning environments oriented to different educational levels, presented through a compendium of publications in indexed scientific journals and international conferences. As a novelty, these proposals are based on the use of emerging technologies for the visualization of programs, algorithms and programming concepts, through the use of Augmented Reality and three-dimensional graphic representations. These visual proposals arise through a new graphic notation, called ANGELA, which is integrated into the other proposals through different adaptations made according to the learning environment where it will be used. The validation of these proposals has been done through various assessments conducted with real students, which have allowed to improve and evolve the initial proposals throughout this research. To do this, different dimensions have been analyzed regarding the impact of user motivation on learning programming, usefulness, ease of use and determination of students to use these proposals. Finally, an analysis of the results, exposed in the scientific publications, is made, which confirms the initial working hypothesis of this doctoral dissertation: the use of emerging programming learning tools improves the overall learning experience of users.

[es] La programación es un ámbito de estudio que afecta transversalmente a otras disciplinas, ya sea por sus beneficios cognitivos o por la alta demanda de profesionales existente. Las últimas estadísticas de 2020 revelan que 6 de los 10 empleos mejor pagados de EEUU requieren competencias vinculadas a la programación. Además, se estima que para 2029 el número de empleos en las áreas de ciencias, tecnologías, ingeniería y matemáticas crezcan hasta un 8%, mientras que el resto lo hagan un 3.4%. Específicamente, se prevé que los puestos de trabajo relacionados con la Ingeniería Informática y las Matemáticas se incrementen en un 12.1%, convirtiendo estas áreas en las de mayor crecimiento en 2029. Los datos anteriores confirman una tendencia que se está produciendo en el mundo actual, el cual se está preparando para una cuarta revolución industrial (industria 4.0) marcada por avances tecnológicos emergentes en una serie de campos que requerirán habilidades de programación como, por ejemplo, la robótica, la inteligencia artificial y la computación cuántica, entre otros. Por tanto, resulta esencial facilitar la formación de nuevos profesionales de la Ingeniería Informática. Sin embargo, el aprendizaje de la programación presenta ciertas dificultades debido al alto nivel de abstracción que se requiere para asimilar ciertos conceptos de programación, ya sean aquellos relacionados con la propia estructura del programa (por ejemplo estructuras de control y bucles), como otros más abstractos (por ejemplo la programación concurrente y la recursividad). Dicho nivel de abstracción puede gestionarse adecuadamente en las etapas iniciales del aprendizaje, empleando mecanismos que faciliten el aprendizaje de la programación mediante visualizaciones gráficas y entornos de desarrollo colaborativo. En esta tesis doctoral se propone un conjunto de soluciones y entornos de aprendizaje orientados a distintos niveles educativos, presentado mediante un compendio de publicaciones en revistas científicas indexadas y actas de congresos internacionales. Como novedad, estas propuestas se basan en la utilización de tecnologías emergentes para la visualización de programas, algoritmos y conceptos de programación, mediante el uso de Realidad Aumentada y de representaciones gráficas tridimensionales. Estas propuestas visuales surgen a través de una nueva notación gráfica, denominada ANGELA, la cual se encuentra integrada en el resto de propuestas mediante diferentes adaptaciones realizadas de acuerdo al entorno de aprendizaje donde se vaya a utilizar. La validación de estas propuestas se ha realizado mediante distintas evaluaciones llevadas a cabo con estudiantes reales, que han permitido mejorar y evolucionar las propuestas iniciales a lo largo de esta investigación. Para ello, se han analizado diferentes dimensiones relativas al impacto de la motivación de los usuarios en el aprendizaje de la programación, la utilidad, la facilidad de uso y la determinación del de los estudiantes a utilizar estas propuestas. Finalmente, se realiza un análisis de los resultados, expuestos en las publicaciones científicas, gracias al cual se confirma la hipótesis de trabajo inicial que plantea esta tesis doctoral: la utilización de herramientas de aprendizaje de la programación emergentes mejora la experiencia de aprendizaje de los usuarios.