Subido por Giovanny Hidalgo

Paper CS1 (1)

Anuncio
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)
Descargar