Enseñanza de La Programacion Con Swift
Enseñanza de La Programacion Con Swift
Resumen
El trabajo presenta los resultados de una secuencia didáctica donde los alumnos tienen su primer
contacto con la programación en Swift a través del uso de la suite de Playground “Aprende a
Programar”. Se presentó a los jóvenes una estrategia de gamificación no competitiva para evitar que
tuvieran sesgos negativos hacia la programación y conocieran lo que implicaba el aprendizaje de la
materia. Se realizaron cuatro sesiones en las cuales resolvían los acertijos propuestos por la
plataforma y al final presentaron un proyecto final donde debían de generar funciones nuevas a través
de la programación de una mascota virtual, partiendo de un script probado previamente. Se aplicó
una encuesta a 34 de los 102 participantes. La mitad de los proyectos presentados lograr generar
nuevas funciones y ejecutarlas de manera correcta considerando que el 61.8% de los alumnos
encuestados no tenía una experiencia previa programando. 76% de los participantes consideró que
deben de seguirse realizando esta clase de actividades y 90% de los encuestados consideraron
buenas las actividades realizadas. Se considera que debe realizarse un esfuerzo para evidenciar el
uso de la programación en la vida profesional ya que no quedó clara su utilidad a los encuestados.
6° CONGRESO INTERNACIONAL DE INNOVACIÓN EDUCATIVA- PONENCIA DE INVESTIGACIÓN
Abstract
The work presents the results of a didactic sequence where students have their first contact with
programming in Swift through the use of the Playground suite "Learn to Code". They worked with a
non-competitive gamification strategy to avoid negative biases towards programming, but with
conscience about the main concepts of the subject. Four sessions were held in which they solved the
riddles proposed by the platform and finally presented a final project where they had to generate new
functions through the programming of a virtual pet, based on a previously tested script. A survey was
applied to 34 of the 102 participants. Half of the submitted projects manage to generate new functions
and execute them correctly, considering that 61.8% of the students surveyed did not have previous
experience. 76% of the participants considered that this kind of activities should continue to be carried
out and 90% of the respondents considered the activities good or excellent. It is considered that an
effort should be made to demonstrate the use of programming in professional life since it was not clear
its usefulness to the respondents.
1. Introducción
La enseñanza de la programación se vuelve cada día un reto que debe ser abordado en la educación
media superior para afrontar los retos del futuro. En profesiones cada vez más lejanas de la ingeniería
como la medicina el derecho o la música requerirán en muy pocos años habilidades de programación
para el ejercicio de sus actividades cotidianas. En este contexto, la enseñanza de la programación en
la educación media superior se vuelve indispensable para una formación global y completa para los
jóvenes de nuestra generación.
Ante este reto, el Colegio Madrid toma la decisión de cambiar el programa de Taller de Cómputo para
primer año de Bachillerato, de tal forma que incluya un bimestre de introducción a la programación.
Se tomó la decisión de incorporar en la enseñanza el aplicativo Swift Playground, mediante la
resolución de Aprende a Programar 1 y utilizando las herramientas de Aprende a programar 3 para
realizar un proyecto final. En este documento se presentan los resultados sobre el proyecto que
realizaron los estudiantes y la percepción general de su proceso de aprendizaje.
2. Desarrollo
La Coordinación de Educación Tecnológica del Colegio Madrid toma como referencia los Estándares
para Alumnos de la Sociedad Internacional para la Tecnología en la Educación (ISTE, 2016) y el
Programa de Estudios del Colegio de Ciencias y Humanidades (CCH, 2016). Los Estándares ISTE
(por sus siglas en inglés) establecen cinco competencias que deben ser desarrolladas en los
estudiantes: aprendiz empoderado, ciudadano digital, constructor de conocimiento, diseñador
innovador, pensador computacional, comunicador creativo y colaborador global. Estas competencias
son desarrolladas a través de los temas que marca el programa de estudios de CCH: Búsqueda de
información en Internet, elementos básicos de funcionamiento de Hardware y Software, uso de
herramientas multimedia y resolución de problemas mediante hoja electrónica de cálculo. Pensando
en reforzar la competencia de Pensador Computacional, se seleccionó un bimestre de la materia
anual del Taller de Cómputo (representando una cuarta parte del total de horas asignadas) para
dedicarlo a la Introducción a la Programación.
La enseñanza de la programación es un reto particularmente complejo en la enseñanza media
superior (Rudder, 2007), debido a la necesidad de habilidades cognitivas bien desarrolladas por parte
de los estudiantes y una gran preparación por parte de los docentes. Los primeros intentos formales
para introducir programación en enseñanza no universitaria fueron realizados por Papert con el
programa Logo (Solomon, 1976). De esa primera experiencia se han desarrollado diferentes
propuestas como la programación a bloques realizada en Scratch (Moreno, 2016; Papadakis, 2016) o
Raptor (Carlslile, 2005). Las propuestas llegan incluso al desarrollo de programas propios para la
enseñanza de la programación, como es el caso de Reduct (Arawjo, 2017).
6° CONGRESO INTERNACIONAL DE INNOVACIÓN EDUCATIVA- PONENCIA DE INVESTIGACIÓN
Para estructurar el curso se identificaron seis temas básicos para integrar esta actividad: Importancia
de la Programación, Concepto de Algoritmo, Depuración, Funciones y Ciclos, Código Condicional y
Operaciones Lógicas. Posteriormente se estableció una secuencia didáctica de seis sesiones, con
dos más para tener tiempo de realizar el Proyecto Final. Establecimos la siguiente idea central: La
programación basada en Swift proporciona herramientas para la resolución de problemas y la
expresión individual mediante la aplicación y comprensión de los conceptos de algoritmo, depuración,
funciones, ciclos, condicionales y operaciones lógicas. Establecimos los siguientes objetivos:
Aplicar los conceptos de algoritmo, depuración, funciones, ciclos, condicionales y
operaciones lógicas por separado en actividades de gamificación no competitiva.
Aplicar los conceptos de algoritmo, depuración, funciones, ciclos, condicionales y
operaciones lógicas en la realización de funciones dentro de un proyecto final.
Generar nuevas funciones a partir de los ejercicios y proyectos proporcionados durante la
secuencia.
Tomando en cuenta lo anterior se establecieron los siguientes aprendizajes:
El alumno reconocerá el ejemplo de algoritmo en situaciones de la vida cotidiana a través de
un diagrama de flujo.
El alumno aplicará el concepto de depuración para resolver una actividad planteada en la
suite Playground.
El alumno aplicará el concepto de función para incorporarlo a un programa ya establecido en
Playground.
6° CONGRESO INTERNACIONAL DE INNOVACIÓN EDUCATIVA- PONENCIA DE INVESTIGACIÓN
2.3 Método
Para lograr los objetivos se planearon las siguientes actividades (Se marca una E para equipo y una I
para individual):
1. Introducción: (E) Los alumnos investigan el concepto de diagrama de flujo y realizan un
diagrama de una actividad cotidiana. (I) Posteriormente desarrollan la actividad de
introducción Hola Byte.
2. Depuración: (E) Los alumnos investigan el concepto de depuración y lo ejemplifican en un
video. (I) Posteriormente realizan la actividad de Aprende a Programar 1 correspondiente a
este tema.
3. Funciones y ciclos: (E) Los alumnos generan una secuencia de baile. Posteriormente
optimizan la secuencia usando el concepto de ciclo. Graban el resultado de su actividad. (I)
Finalmente realizan las actividades de Aprende a Programar 1 que son los retos
correspondientes a esta actividad.
4. Operaciones lógicas y Condicionales: (I) Los alumnos investigan sobre el concepto de
operador lógico y los principales operadores (AND, OR, NOT). Posteriormente realizan la
actividad de Aprende a Programar 1 sobre funciones condicionales.
5. Repaso: (I) Los alumnos copian y ejecutan un código generado por el profesor el cual genera
un botón que modifica un contador que se muestra en pantalla. Con otro botón se reinicia el
contador a cero.
Para entregar sus evidencias de Playground la suite tiene la opción de poder generar video de
manera automática, así que los alumnos entregaban un video de menos de 3 minutos con los
resultados de cada una de sus actividades de programación.
El Proyecto Final se desarrolló en dos partes y en equipo, que consistía en simular una mascota
virtual. En la primera parte los alumnos tomaron como base un proyecto realizado previamente para
que observaran las funciones que podían realizar y que debían de teclear de nuevo para asegurar la
atención en la actividad y que fueran cuidadosos al programar. Si ejecutaban el código correctamente
procedían a realizar el diagrama de flujo de las funciones que encontraran en el programa. En la
segunda parte los alumnos debieron de desarrollar entre tres y cinco funciones nuevas (dependiendo
del tiempo que se tuviera con cada grupo). Para realizar sus evidencias debieron generar un video y
entregar un archivo en formato PDF con el código que generaron (parte de la funcionalidad de
Playground) además de complementar sus diagramas de flujo con las funciones adicionales.
6° CONGRESO INTERNACIONAL DE INNOVACIÓN EDUCATIVA- PONENCIA DE INVESTIGACIÓN
Se recopilaron las evidencias de todas las actividades, videos en el caso de las actividades y archivos
de texto o video en el caso de las actividades fuera de la plataforma. Finalmente, 34 de los 102
alumnos que participaron en la clase realizaron un cuestionario de doce preguntas para evaluar la
actividad y obtener información adicional sobre el contexto en el cual se realizó la secuencia.
2.4 Resultados
De los 102 alumnos 35 no entregaron sus actividades completas. Este resultado se debe en parte a
que la actividad les resultó atractiva, aunque los formatos de las actividades y el uso de la plataforma
Google Classroom permitió que entregaran sus actividades, aunque fuera a destiempo y con menor
calificación. El hecho de que la mayor parte de los estudiantes entregaran sus actividades permitió
que la secuencia se desarrollara de manera completa y se cumplieran los objetivos planteados.
Se entregaron treinta proyectos finales, con las características resumidas en la Tabla I:
Vemos claramente que los alumnos fueron capaces de aplicar los conceptos aprendidos en nuevas
funciones, pero no tuvieron en su mayoría iniciativa para generar funciones con elementos
innovadores que requirieran investigación. La mayor parte de las funciones generadas cambiaron
íconos que se añadían en otras funciones o cambiaban el tamaño de los íconos. Aquellos que
generaron nuevas funciones innovadoras incorporaron sonido, otra movilidad o un patrón de íconos
2.5 Discusión
Los resultados muestran una clara aceptación de la actividad, un enorme avance considerando las
resistencias propias de una actividad de enseñanza de programación. Es claro que algunos alumnos
perciben como negativa la actividad, especialmente porque pretenden dedicarse a áreas que
consideran alejadas de las habilidades de programación. Esta creencia no fue abordada en el diseño
de la actividad, por lo que debe incluirse una actividad que clarifique la importancia de la
programación en áreas como las artes plásticas y la música, la economía y las ciencias sociales. Este
resultado es particularmente significativo considerando que fue la primera experiencia de
programación para la mayoría de los estudiantes.
Otro éxito que se logró de la actividad es que los alumnos consideran que ni son buenos ni son malos
programando. De esa manera a pesar de la dificultad manifiesta de la actividad, no se generó una
percepción negativa de la programación a los alumnos, lo que sin duda facilitará la percepción de la
disciplina a aquellos que necesiten las herramientas en su formación profesional. La percepción
podría estar relacionada con el manejo del estrés en el aula, ya que no se percibió la clase ni
demasiado estresante ni relajada. Especialmente importante fue que en ningún momento la clase se
convirtiera en una competencia, sino que se dejara que cada alumno avanzara a su ritmo y
permitiendo que los alumnos menos adelantados entregaran sus trabajos en otros momentos. De
esta manera el alumno puede enfocarse en su aprendizaje y no en comparar su trabajo con otros
compañeros, que en muchos casos permitió la cooperación entre pares para solucionar problemas.
Los resultados del proyecto son los esperados. Fueron capaces de reproducir lo que se les
proporcionaba, pero no de generar ideas nuevas a partir de la investigación en su mayoría. No se les
6° CONGRESO INTERNACIONAL DE INNOVACIÓN EDUCATIVA- PONENCIA DE INVESTIGACIÓN
mencionó explícitamente la dificultad y novedad que debían de tener las funciones para motivo de
evaluación, de manera que los resultados reflejan el interés de los estudiantes por la materia. A pesar
de los intentos de motivación en el diseño, debe admitirse que solamente se percibió como una
materia académica más y cumplieron estrictamente los requerimientos sin investigar las posibilidades
del proyecto. Este resultado indica que deben encontrarse estrategias para que los estudiantes se
encuentren más motivados por la materia y las actividades que en ella se realizan.
3. Conclusiones
Referencias
Arawjo, I., Wang, C. Y., Myers, A. C., Andersen, E., & Guimbretière, F. (2017, May). Teaching
programming with gamified semantics. In Proceedings of the 2017 CHI Conference on Human
Factors in Computing Systems (pp. 4911-4923). ACM.
Carlisle, M. C., Wilson, T. A., Humphries, J. W., & Hadfield, S. M. (2005). RAPTOR: a visual
programming environment for teaching algorithmic problem solving. Acm Sigcse
Bulletin, 37(1), 176-180.
Kölling, Michael (1999) The Problem of Teaching Object-Oriented Programming, Part 1: Languages.
Journal of Object-Oriented Programming, 11 (8). pp. 8-15
Kubben, P. L., Looije, P., Scherpbier, A., & van Merode, F. (2017). Teaching computer programming
to medical doctors, nurses and hospital staff: a pilot study. Open Acces J Neurol
Neurosurg, 4(2), A.
Moreno, J., & Robles, G. (2016). Code to learn with Scratch. In A sistematyc literatura review. IEEE
Global Engineering Education Conference, EDUCON, Abu Dhabi (pp. 150-156).
Leutenegger, S., & Edgington, J. (2007, March). A games first approach to teaching introductory
programming. In ACM SiGCSE Bulletin (Vol. 39, No. 1, pp. 115-118). ACM.
Papadakis, S., Kalogiannakis, M., Zaranis, N., & Orfanakis, V. (2016). Using Scratch and App Inventor
for teaching introductory programming in secondary education. A case study. International
Journal of Technology Enhanced Learning, 8(3-4), 217-233.
6° CONGRESO INTERNACIONAL DE INNOVACIÓN EDUCATIVA- PONENCIA DE INVESTIGACIÓN
Rudder, A., Bernard, M., & Mohammed, S. (2007, March). Teaching programming using visualization.
In Proceedings of the Sixth IASTED International Conference on Web-Based Education (pp.
487-492).
Solomon, C. J., & Papert, S. (1976). A Case Study of a Young Child Doing Turtle Graphics in LOGO.
AI Memo 375. Massachussets Institute of Technology
Tillmann, N., De Halleux, J., Xie, T., & Bishop, J. (2014, March). Code Hunt: Gamifying teaching and
learning of computer science at scale. In Proceedings of the first ACM conference on
Learning@ scale conference (pp. 221-222). ACM.
Reconocimientos
Damos un especial agradecimiento a la profesora Rosa María Catalá Rodes (Directora General) y a la
profesora Ana María Jiménez Aparicio (Directora de Bachillerato) por su incondicional apoyo a la
educación tecnológica de nuestros estudiantes. Un reconocimiento especial al profesor Natzín García
Macías por su apoyo para presentar el presente trabajo.