Método para identificar la evolución y las tendencias del primer curso de programación (CS1): un enfoque desde la industria, la academia, herramientas tecnológicas y lenguajes de programación No Author Given No Institute Given Abstract. EL articulo presenta un método para identificar competencias y habilidades que se deben tener en cuenta en el diseño micro curricular del primer curso de programación, conocido como CS1. Para ello se estudia la relación entre la industria de software (demanda) y la academia (oferta), así mismo, la relación entre la tecnología y los lenguajes de programación. El método se compone de 5 fases, en las que se toma información de diferentes fuentes, la cual es depurada, filtrada y utilizada para construir mapas tecnológicos que permiten identificar el estado de la técnica de cada relación mencionada. Obteniendo el estado actual y la evolución del CS1; según métodos de aprendizaje, herramientas tecnológicas y lenguajes de programación para enseñanza, y la demanda de lenguajes de programación en la industria. Keywords: Introduction to Programming Course · State-of-the-art techniques · Technological maps · Data analysis. 1 Introducción Las ciencias de la computación o Ciencias Computacionales (CS) abarcan una gama de ramas, que van desde los estudios teóricos de los algoritmos y los límites de la computación, a los problemas prácticos de la implementación de sistemas computacionales en hardware y software. Existen diversos campos o disciplinas dentro de las CS, algunas enfatizan los resultados específicos del cómputo (los gráficos por computadora), mientras que otros se relacionan con propiedades de los algoritmos usados al realizar cómputos (la teoría de la complejidad computacional) [1, ?]. Otros por su parte se enfocan en los problemas que requieren la implementación de cómputos específicos para desarrollar una solución a un problema computacional concreto e implementación tecnológica del mismo [2]. Esta ultima disciplina es una de los campos con mayor demanda tanto profesional como empresarial de la última década [3], se espera que el número de oportunidades de empleo en tecnología aumente aproximadamente 12% para el año 2024 [4–6], lo que llevará a que cada vez más puestos de trabajo estén disponibles para 2 Hidalgo, Carlos et al. los profesionales de afines a la tecnología de la información (TI) [5, 6]. Según [7] el número de trabajos enfocados en tecnología y desarrollo, análisis y predicción de datos crecerá la oferta exponencialmente en los próximos años. Al mismo tiempo que la oferta en la industria de software crece, se encuentra que la competencia de profesionales calificados es más difícil de lo que se cree, los empleadores generalmente buscan un empleado que tenga habilidades lógicas y de abstracción, que permitan proponer y solucionar problemas de computo de manera eficaz, además de destrezas para interactuar en distintos entornos, lenguajes de programación, conocimiento de nuevas herramientas tecnológicas y facilidad para trabajar en equipo con buenas relaciones interpersonales. Algunas de las habilidades y destrezas mencionadas, se obtienen en la academia, donde se forman profesionales idóneos, pero esto no garantiza que todos tengan las mismas capacidades de pensamiento e interacción social. Lo Anterior hace que la productividad en la industria de software disminuya, y específicamente esto hace que una empresa sea mejor que otra, dependiendo de la calidad de sus profesionales. En la formación de profesionales en ingeniería de Sistemas, la academia ha enfocado sus esfuerzos en la construcción de modelos pedagógicos (currículo) que aborden estrategias de aprendizaje, basados en habilidades de solución a problemas de abstracción, modelización, expresión lógica matemática y simbólica [8]. Además de aprender a solucionar problemas de computo a través del análisis, diseño y desarrollo, en distintos paradigmas y lenguajes de programación, hacen que los contenidos sean amplios y enseñarlos tomen mucho tiempo. Por ello estos se han dividido en cursos introductorios, avanzados y especializados, que hacen que el estudiante obtenga todas las habilidades de manera gradual y en cada curso obtenga conocimientos que hagan que sea un profesional idóneo para la industria. Los cursos introductorios de programación según autores como [?,?,?], al ser los cursos básicos, deben contenerse de bases fuertes, que permitan explotar habilidades y destrezas que incentiven y motiven al estudiante a pensar como futuros ingenieros. Hacer que los estudiantes adquieran estos conocimientos es un reto, ya que no todos tienen la misma capacidad de abstracción y entendimiento, como consecuencia se observan problemas de bajo rendimiento académico, absentismo y perdida de los cursos. Desde el año 1986 la Association for Computing Machinery (ACM) da a conocer informes cada 10 años de recomendaciones que debería contemplarse en la construcción y actualización de los currículos de instituciones de educación superior que ofrezcan programas profesionales en áreas a fines de CS. El informe se construye pensando en la oferta de la academia, contemplando cuales son las necesidades de la demanda industrial [9]. El ultimo informe fue entregado en el año 2013, en el cual el uso de nuevas estrategias novedosas como tecnologías web que permiten apoyar en la formación de los estudiantes, el aprendizaje por juegos, el aprendizaje colaborativo, entre otras, que permiten destacar las mejores habilidades y competencias de cada estudiante. De lo anterior se hace evidente que las instituciones modifiquen y/o actualicen sus currículos para hacer frente a esta nueva educación. Como apoyo a Title Suppressed Due to Excessive Length 3 instituciones e investigadores que participan en el proceso de mejora o actualización de los currículos del programa de ingeniería de sistemas, específicamente en el del primer curso de programación (CS1). Nosotros proponemos un método que les permitirá identificar algunas de las habilidades y competencias, basados en la comparación entre la industria, la academia, las herramientas tecnológicas y los lenguajes de programación. 2 Método Se propone un método que se compone de 4 fases: formulación de preguntas de investigación, Selección de fuentes de información, creación de ecuaciones de búsqueda y filtro de datos, por ultimo, la construcción de mapas tecnológicos. El método permite identificar algunas de las competencias y habilidades que se deben tener presente en la construcción de un primer curso de programación CS1, teniendo en cuenta la relación de los enfoques propuestos (industria, académica, tecnologías y lenguajes de programación). 2.1 Preguntas de investigación Como se ha mencionado, la importancia de los cursos de la introducción a la programación, ha sido un tema abordado por investigadores, desarrolladores, académicos y empresarios, por ello, nosotros hemos querido realizar un estudio que identifique las habilidades y competencias que se deben tener en cuenta en estos cursos, específicamente en el CS1. En el estudio ha surgido una pregunta general ¿Cuáles son las tendencias de estrategias y tecnologías en el aprendizaje del primer curso de programación en la academia y que repercusión tiene en la industria? la cual planteamos responder evaluando y comparando los 4 enfoques mencionados antes. Hemos formulado 6 preguntas especificas que se pueden responder realizando la selección correcta de información y el análisis detallado, apoyados de herramientas de software e implementaciones computacionales. A continuación se especifican las preguntas por cada enfoque propuesto. – Industria ¿Cuál es la demanda laboral que requiere la industria del desarrollo de software actualmente? – Academia ¿Qué estrategias de enseñanza y aprendizaje del CS1 son las más usadas actualmente? ¿Cuál es la evolución en el tiempo del CS1? – Tecnología ¿Qué herramientas y tecnologías apoyan la enseñanza y aprendizaje del curso CS1 en los últimos 10 años? – Lenguajes de programación ¿Qué lenguajes de programación están en demanda en la industria actualmente? ¿Qué lenguajes de programación se usan actualmente para la enseñanza y aprendizaje del CS1? 2.2 Fuentes de información Para encontrar la información más novedosa y actual en la academia, industria, herramientas tecnológicas y uso de los lenguajes de programación, se usan dos 4 Hidalgo, Carlos et al. tipos de fuentes: 1) documentos científicos de revistas y congresos publicados en internet, libros y paginas web de fuente confiable; 2) Datos obtenidos de plataforma colaborativa GitHub, porque es la plataforma de código abierto mas popular entre los desarrolladores, contiene información de más de 3.5 millones de usuarios y más de 23 millones de repositorios desde el año 2009 [10], en los cuales se encuentra información relevante sobre autores, lenguajes de programación tendencia y métricas como: numero de copias, visitas, autores de cada proyecto alojado. 2.3 Ecuaciones de búsqueda y filtro de datos A través expresiones compuestas por palabras clave y operadores booleanos soportados por los buscadores de las fuentes escogidas, se construyen las ecuaciones que permitirán obtener los datos que serán analizados para responder cada pregunta planteada. los resultados de las ecuaciones sobre GitHub, se filtran con la herramienta VigHub [7, 11], que es una herramienta basada en un modelo de Vigilancia Tecnológica, esta respaldada por técnicas computacionales de extracción, almacenamiento, proceso, análisis y visualización automática de datos de la plataforma GitHub. La herramienta permite obtener los últimos desarrollos tecnológicos (repositorios) de cualquier tecnología de software. los otros resultados deben ser filtrados, por tanto, se aplicaron 5 criterios de exclusión e inclusión general para determinar la información más relevante. 1. Quitar los resultados duplicados o que sean una misma investigación o mismo proyecto. 2. Que se la información sea confiable, proveniente de revistas indexadas o publicaciones en conferencias internacionales. 3. Alto numero de citaciones, copias y citas. 4. Que presenten encuestas actuales, estados del arte a profundidad, herramientas, técnicas y métodos novedosos. Se construyeron 6 ecuaciones basadas en las palabras clave que se obtuvieron con el apoyo de expertos. A continuación de muestra la consulta y el detalle de cantidad obtenida y filtro especifico si es necesario. – Ecuación 1 Con la consulta ("programming languages")AND("CS1")OR ("introduction to programming courses"), sobre el buscador de SCOPUS, se obtuvieron 73 resultados, Los resultados se filtraron por la categoría (Computer Science) y año (2016 to 2018), dejando un resultado de 41 documentos. Además se cuenta con información relevante encontrada en forbes.org. – Ecuación 2 Con la consulta ((“tech skills in demand” AND “software” ) IN ("academy" OR "industry")), sobre el buscador de SCOPUS, se obtuvieron 13 resultados, y sobre el buscador de ISI Web of Knowledge, se obtuvieron 17 resultados. Entre los dos resultados se compararan por similitud y se encontraron 5 coincidencias, las cuales se omiten, dejando un resultado total de 25 documentos. Title Suppressed Due to Excessive Length 5 – Ecuación 3 Con la consulta ((“review in education” OR "strategies in education") IN (“software” AND “introduction to programming courses”)), sobre el buscador de SCOPUS, se obtuvieron 14 resultados y 105 repositorios de GitHub. Además se toma información de de los documentos de los currículos de la ACM de los años 1968, 1978, 1991, 2001 y 2013. – Ecuación 4 Con la consulta ((“environments of teaching” AND "tools of teaching") IN (“CS1” OR “introduction to programming courses”)), sobre el buscador de Github, se obtienen 145 repositorios, y se usa la herramienta VigHub para filtrar los datos, obteniendo un total de 107 repositorios. – Ecuación 5 Con la consulta ("in demand" AND ("programming" OR “software”)), sobre el buscador de Github, se obtienen 500 repositorios, y se usa la herramienta VigHub para filtrar los datos por lenguajes de programación, obteniendo un total de 307 repositorios. – Ecuación 6 Con la consulta (("language programming" AND "trend") IN ("academy" OR "industry")), sobre el buscador de Github, se obtienen 322 repositorios, y se usa la herramienta VigHub para filtrar los datos por lenguajes de programación en los últimos 5 años, obteniendo un total de 307 repositorios. 2.4 Construcción de mapas tecnológicos Con la información filtrada de cada consulta se construyen 4 mapas tecnológicos que permiten responder las preguntas de cada enfoque propuesto. Mapa de trabajos con mayor demanda Los títulos de los trabajos de programación son imprecisos, por decir "Desarrollador de software", "ingeniero de software", "programador de computadoras" y "desarrollador de aplicaciones" pueden apuntar al mismo trabajo. Sin embargo, al mismo tiempo, el "desarrollador de software" de una empresa podría ser muy diferente del mismo título en otra compañía. Por ello al buscar un trabajo de desarrollador de software, es más productivo observar las áreas de aplicación en su lugar, entonces, hemos creado categorías de trabajos que ofrece la industria, los cuales son los que mayor demanda actualmente, basados en la información recopilada se obtienen las categorías y los porcentajes de cada categoría y características que permitan identificar que tiempo durara la tendencia y cual es la remuneración salarial. Mapa de estrategias de enseñanza y aprendizaje Con todos los datos encontrados (documentos y repositorios) se ha realiza un análisis a profundidad, para encontrar métodos, estrategias y metodologías de vanguardia. Que son organizadas de manera cronológica, que permita identificar la evolución en el desarrollo de software en la industria y la académica; tomando como base el primer curso de programación. 6 Hidalgo, Carlos et al. Mapa de herramientas y tecnologías Con todos los datos encontrados (documentos y repositorios) se ha realiza un análisis a profundidad, para encontrar herramientas y tecnologías de vanguardia. Que son organizadas de manera cronológica, que permita identificar la evolución en el desarrollo de software en la industria y la académica; tomando como base el primer curso de programación. Mapa de lenguajes de programación Con ayuda de la herramienta VigHub se obtiene un JSON con los proyectos con mayor numero de citaciones y tendencia por lenguajes de programación en la plataforma GitHub, según los proyectos enfocados en la enseñanza y aprendizaje de programación. Posterior a ello con ayuda de la herramienta SpaCy se hace un filtrado de los repositorios para obtener los lenguajes mas usados según las categorías de los repositorios. 3 Resultados En esta sección se presentan cada uno de los mapas y su respectivo análisis. Cada uno permite responder preguntas específicas del item 2.1 del estado actual y la evolución de cada uno de los enfoques dentro del CS1. Mapa de trabajos con mayor demanda Según [] actualmente cada vez hay más puestos de trabajo para los profesionales en tecnologías de la información (TI). Mientras que los solicitantes de empleo ofrecen una variedad de habilidades técnicas, los empleadores generalmente buscan un empleado más equilibrado que también posea habilidades interpersonales que no son evidentes en un currículum. La capacidad de comunicarse con los demás y ser accesible en su comportamiento puede ser de gran ayuda para los candidatos potenciales que buscan entrar en el espacio tecnológico. Desde fuertes habilidades de comunicación y adaptabilidad hasta la experiencia con las últimas tecnologías, hemos propuesto unas categorías basados en el consejo de Tecnología de Forbes-IT. En la Tabla 1 se muestra la categoría de mayor a menor, junto el porcentaje de demanda en el campo laboral. Expertise in artificial intelligence El campo de la inteligencia artificial es muy escaso de personal. Específicamente, encontrar líderes en tecnología (CIO / CTO, jefe de producto, etc.) que saben cómo a Los equipos de gestión creíble formados por AI, ciencia de datos y especialistas en productos innovadores demostrarán a ser difícil en el futuro [2]. Skills to imagine the design and develop augmented reality applications En el último año, el diseño y desarrollo de realidad aumentada (RA) ha crecido un 36% en comparación a otros años, una cantidad de empreas, se ha dedicado a producir características de hardware y software para apoyar la realidad aumentada y el aprendizaje automático. Las personas con las habilidades de visualizar, diseñar y desarrollar aplicaciones que aprovechen estos nuevos chips y API’s tendrá una gran demanda[2]. Data science talent Con el auge de los grandes datos y el aprendizaje automático, los científicos de datos se están convirtiendo en un componente Title Suppressed Due to Excessive Length 7 Table 1. Active users on the area of virtual judges Category 1 2 3 4 5 6 7 8 9 10 11 12 12 Percentage 12.3% 9.7% 9.5% 9.4% 8.01% 8.84% 7.56% 7.3% 6.22% 6.1% 5.03% 5.8% 3.6% Viability to 2027 to 2020 to 2027 to 2020 to 2027 to 2020 to 2019 to 2019 to 2021 to 2020 to 2025 to 2021 to 2018 Payment $12.0 to $15.0 $8.0 to $10.0 $7.0 to $8.0 $3.0 to $5.0 $10.0 to $15.0 $7.0 to $13.0 $3.0 to $5.0 $3.0 to $5.0 $4.0 to $7.0 $3.0 to $5.0 $3.0 to $5.0 $3.0 to $5.0 $3.0 to $5.0 clave en muchas industrias, desde las finanzas y la banca. Hasta el cuidado de la salud y descubrimiento de drogas. Las empresas invertirán a gran escala en la adquisición de talento en este campo[2]. Mobile application development Los desarrolladores de aplicaciones móviles continuarán a tener una gran demanda, tal como lo han estado en los últimos años. Sin embargo, la demanda aumentará en 2018, y los desarrolladores de aplicaciones exitosas deberían tener fluidez en múltiples lenguajes de programación, incluidos Java, HTML5, Objective-C, C ++, C #, Python y Swift. Además, los desarrolladores de aplicaciones con habilidades de diseño de UX y UI pueden ofrecer mucho más valor para la gestión de proyectos [2]. Knowledge in cybersecurity Dada la reciente infiltración de redes, habrá una mayor necesidad de excelencia en ciberseguridad. Las organizaciones necesitan a asegúrese de que están protegiendo los datos que capturan detrás de las paredes de sus redes. Las partes interesadas se están volviendo cada vez más conscientes de las preocupaciones de seguridad cibernética y, por lo tanto, exigen que las empresas aborden el problema[2]. SaaS management in the Cloud Los profesionales de TI con habilidades en computación en la nube y software como servicio (SaaS) serán los mayores solicitados en empleo. Las habilidades de virtualización en Amazon AWS, Microsoft Hyper-V y VMware para alojamiento en nube privada, sin duda, lo ayudarán a sobresalir. La experiencia con DevOps, los contenedores, todo el cloud stack e IPv6 también beneficiarán las posibilidades de obtener un excelente puesto [2]. Ability to adapt to new technologies Una de las características más importantes de un experto en tecnología es la habilidad a adaptarse a nuevas tecnologías. Alguien que esté aprendiendo constantemente tendrá mucho éxito en el futuro de este campo impredecible[2]. Coding and engineering experience Una mente de ingeniero debe contar con habilidades de codificación en cualquier paradigma y lenguaje de programación esenciales en la construcción de productos y servicios tecnológicos[2]. 8 Hidalgo, Carlos et al. Applied Machine Learning La ciencia de datos ha estado creciendo rápidamente como una profesión. Pero si la ciencia de los datos se aplica en entornos en los que nos importa la interpretabilidad y la solidez teórica de la metodología, como cualquier ciencia, el aprendizaje automático aplicado se trata simplemente de los resultados. Empresas como Tensorflow esperan que sus trabajadores aporten conocimiento para que aumente la demanda este tema[2]. Knowledge of multiple programming languages La programación, especialmente con lenguajes multifacéticos como Javascript y Python, son los más solicitados, ya sea que usted sea ingeniero de infraestructura, ingeniero de software o incluso un profesional de marketing digital. Estos lenguajes no solo se usan para construir aplicaciones escalables sino también para automatizar, agilizar procesos o rastrear datos en sistemas dispares[2]. skills with the management of analysis tools Técnicas como el Aprendizaje automático y el análisis de datos van a continuar creciendo y cambiar la cara de la industria de TI tal como la conocemos hoy. La demanda se enfoca en el conocer funciones, métodos y algoritmos que solidifiquen estas técnicas[2]. Cross-team functionality and communication Hay una cantidad cada vez mayor de superposición entre las diferentes funciones del trabajo, y la comunicación efectiva con diferentes miembros de una organización. Los proyectos requieren colaboración entre desarrolladores, comercializadores y diseñadores, y no todos se adaptan. es necesario crear estrategias de uso de diferentes lenguajes de programación y flujos de trabajo de cada equipo[2]. Digital transformation Una habilidad importante es identificar e implementar plataformas digitales en toda la organización que impactarán la eficiencia operativa y aumentarán los ingresos[2]. images/time_line_CS1-eps-converted-to.pdf Fig. 1. Estargegias del CS1. Mapa de estrategias de enseñanza y aprendizaje Title Suppressed Due to Excessive Length 9 images/languages_map-eps-converted-to.pdf Fig. 2. Lenguajes de programación. Mapa de lenguajes de programación con mayor uso en la enseñanza del cs1 10 Hidalgo, Carlos et al. References 1. Papadimitriou, C.H.: Computational complexity. John Wiley and Sons Ltd. (2003) 2. Buitrago Flórez, F., Casallas, R., Hernández, M., Reyes, A., Restrepo, S., Danies, G.: Changing a generation’s way of thinking: Teaching computational thinking through programming. Review of Educational Research 87(4), 834–860 (2017) 3. Frey, C.B., Osborne, M.A.: The future of employment: how susceptible are jobs to computerisation? Technological forecasting and social change 114, 254–280 (2017) 4. Galperin, H., Fernanda Viecens, M.: Connected for development? theory and evidence about the impact of internet technologies on poverty alleviation. Development Policy Review 35(3), 315–336 (2017) 5. Cirillo, V.: Technology, employment and skills. Economics of Innovation and New Technology 26(8), 734–754 (2017) 6. Malecki, E.J.: Technological innovation and paths to regional economic growth. In: Growth Policy in the Age of High Technology, pp. 97–126. Routledge (2018) 7. Hidalgo C, B.V.: Computing colombian conference. In: Society, I.C. (ed.) Herramienta tecnológica de VT para GitHub. pp. 131 – 133 (2016) 8. Dümmel, N., Westfechtel, B., Ehmann, M.: Effects of a preliminary programming course on students’ performance. pp. 77–86 (2018). https://doi.org/10.1145/2f3209087.3209088 9. Atchison, W., Conte, S., Hamblen, J., Hull, T., Keenan, T., Kehl, W., McCluskey, E., Navarro, S., Rheinboldt, W., Schweppe, E., Viavant, W., Young, D.M., J.: Curriculum 68: Recommendations for academic programs in computer science: A report of the acm curriculum committee on computer science. Communications of the ACM 11(3), 151–197 (1968). https://doi.org/10.1145/362929.362976 10. Github: Github octoverse 2017. https://octoverse.github.com/ (2017) 11. Hernandez Pardo J, V.A.: Séptimo congreso internacional de computación cicom. In: Maily, Q., Lorena, M. (eds.) VIGHUB: herramienta prototipo para el apoyo de la vigilancia tecnológica en el campo de desarrollo del software. pp. 231 – 245. fAbbecor.ong (2017)