Content uploaded by Fernando R. A. Bordignon
Author content
All content in this area was uploaded by Fernando R. A. Bordignon on Nov 06, 2021
Content may be subject to copyright.
El desarrollo de habilidades de resolución de problemas como un saber
necesario en el camino del aprendizaje de la programación.
Fernando Raúl Alfredo Bordignon y Alejandro Adrián Iglesias
fernando.bordignon@unipe.edu.ar, alejandro.iglesias@unipe.edu.ar
Universidad Pedagógica Nacional (UNIPE)
Resumen: La incorporación de la enseñanza de las ciencias de la computación
en la educación básica obligatoria en la República Argentina es un proceso que
se desarrolla día a día y que representa un importante desafío educativo: la
construcción de una didáctica asociada a tales niveles. En particular, a través
de un relevamiento bibliográfico, hemos identificado problemas educativos
recurrentes que suceden en los primeros cursos de enseñanza de la
programación. La falta de capacidades en torno a la resolución de problemas,
se ha manifestado como uno de los principales obstáculos para lograr un buen
desempeño de los estudiantes.
El objetivo de este trabajo es, en una primera parte, presentar evidencias en
torno a la situación planteada con la finalidad de visibilizar y poner en discusión
el tema, y en una segunda parte, plantear la necesidad de desarrollar las
habilidades del pensamiento computacional como un saber inicial en el camino
del aprendizaje de la programación.
Palabras clave: Resolución de problemas, aprendizaje de la programación,
pensamiento computacional.
I. Introducción
Diferentes países del mundo, consideran importante y estratégico el desarrollo
de conocimientos que permitan a sus ciudadanos entender, crear y resolver
problemas
1
utilizando tecnologías digitales (Grover, 2018). Esto se puede ver
reflejado en cómo diferentes conceptos, contenidos y habilidades relacionadas
con la computación empiezan a tener lugar dentro de los planes de estudio en
los sistemas educativos de diversos países
2
. El desarrollo de estos saberes se
configura como parte de las nuevas alfabetizaciones que permiten a los jóvenes
integrarse de una mejor forma a la sociedad, entendiendo cómo funciona el
mundo digital y colaborando con sus oportunidades laborales.
Si bien en un principio la enseñanza de temas relacionados con las tecnologías
digitales se asoció a trabajar con contenidos de ofimática y con otros cercanos
a la alfabetización en medios, hoy se ha decidido cambiar el enfoque y centrarlo
en la computación. Aunque puede parecer un concepto amplio, en esencia, la
computación se refiere a las tareas de procesamiento automático de
información que involucran computadoras, ya sea usándolas o creándolas. En
este sentido, esta área incluye temas como: el diseño y la construcción de
sistemas de hardware y software para múltiples propósitos; el procesamiento
de datos, la estructuración y la gestión de diversos tipos de información; la
realización de estudios científicos utilizando computadoras y el comportamiento
inteligente de los sistemas informáticos entre los principales (ACM/AIS/IEEE,
2005).
Este cambio en las políticas curriculares presenta una serie de desafíos al
sistema educativo. Si bien existe un camino recorrido en el nivel superior, con
experiencias valiosas en relación a la enseñanza y aprendizaje de la
1
En este trabajo vamos a utilizar la definición de resolución de problemas propuesta
por Mayer (1990), quien indica que consiste en un proceso cognitivo dirigido a
transformar una situación dada en una situación meta u objetivo cuando no se dispone
de un método obvio de solución.
2
Países que han incluido la programación en el currículo escolar: Austria, Bulgaria,
República Checa, Dinamarca, Estonia, Francia, Hungría, Irlanda, Israel, Lituania, Malta,
España, Polonia, Portugal, Eslovaquia y Reino Unido (Uzunboylu y otros, 2017)
computación, no es posible transferir estos saberes de manera directa a los
niveles educativos que conforman la enseñanza obligatoria; se trata en este
caso de otras edades, otros desarrollos cognitivos, otras subjetividades y
diferentes objetivos de enseñanza. Por eso entendemos que la computación
necesita de una nueva didáctica asociada a tales niveles y ese es el desafío
principal que nos convoca.
La programación, como uno de los temas que resultan transversales a toda la
computación, es uno de los elegidos para ser incorporado en las escuelas
argentinas. En este trabajo presentamos un problema educativo, relacionado
con las capacidades de resolución de problemas de los estudiantes, que resulta
recurrente dentro de la enseñanza de la programación en un primer curso. Este
artículo es parte de los primeros resultados de una investigación, llevada a cabo
en la Universidad Pedagógica Nacional, denominada “Sistematización de
problemas y desafíos asociados a la enseñanza y aprendizaje del pensamiento
computacional y la programación en el primer ciclo de la escuela secundaria”;
cuyo objetivo principal es presentar un estado del arte acerca de los problemas
más comunes de enseñanza y de aprendizaje que se producen en un primer
curso de programación, como así también orientaciones docentes que permitan
mitigarlos y/o superarlos.
Luego de esta introducción, presentamos evidencias surgidas de una serie de
trabajos de investigación que hablan acerca del bajo desarrollo de habilidades
para resolución de problemas en los estudiantes en un primer curso de iniciación
a la programación; entendiendo a esta situación como un factor asociado al
abandono y bajo rendimiento de los estudiantes. Luego, como una forma de
visibilizar esta situación y comenzar el camino hacia una posible solución,
proponemos el desarrollo del pensamiento computacional como un elemento
de inicio en la enseñanza y aprendizaje de la programación.
II. La capacidad de resolución de problemas y la enseñanza de la
programación
El aprendizaje de la programación es un tema que representa cierta dificultad
para algunos estudiantes (Gomes y Mendes, 2007; Insuasti, 2016)
3
y que se
percibe como una materia compleja que requiere de un esfuerzo importante
para llevarla adelante. Más allá de las apreciaciones, en los hechos, se registra
que los cursos iniciales tienen altas tasas de deserción y desaprobación
(Baldwin y Kuljis, 2001; Luxton-Reilly, 2016). Aissa y otros (2020) afirman que el
desafío principal en este aprendizaje, está en relación a que los estudiantes
deben adquirir al mismo tiempo un conjunto de habilidades que van más allá de
solo aprender a escribir código. Sin embargo, los autores mencionan que los
enfoques tradicionales de enseñanza de la programación hacen más hincapié
en la sintaxis y la semántica del lenguaje que en las estrategias de resolución de
problemas. En este sentido, “... el aprendizaje demanda habilidades cognitivas
complejas tales como la planificación, razonamiento y resolución de problemas”
(Baldwin y Kuljis, 2001).
En un trabajo de revisión de literatura científica relacionada con el aprendizaje
de la programación, Susanti y otros identifican que el fracaso en los cursos
iniciales de programación tiene que ver con la dificultad en la comprensión de:
conceptos básicos sobre algoritmos, habilidades de resolución de problemas,
identificación de problemas, desarrollo de algoritmos y escritura de programas
en lenguajes de programación (Susanti y otros, 2021). En otro relevamiento
bibliográfico sobre problemas relacionados, Insuasti (2016) indica que ciertas
habilidades cognitivas son importantes cuando se aprenden los fundamentos
de la programación, específicamente se refiere a: capacidad de abstracción,
3
Aclaración: la mayoría de los trabajos de investigación presentados están
relacionados con un primer curso de programación en el nivel educativo superior ya
que, debido al desarrollo del tema, hay escasa evidencia que se refiera a la educación
básica.
aptitud lógico-matemática desarrollada y la facilidad para la resolución de
problemas de orden algorítmico. De forma más precisa, en relación a los
requisitos de aprendizaje, indica que "(l)a falta de experiencia previa en
programación de computadoras no parece ser un problema; sin embargo, sí es
un problema el bajo desarrollo de habilidades para la resolución de problemas."
(Insuasti, 2016). La situación descrita constituye un problema educativo, ya que
el aprender a programar requiere tener desarrolladas habilidades de
pensamiento lógico y de resolución de problemas.
Diversos trabajos sostienen que los estudiantes que desaprueban o tienen bajo
desempeño en los primeros cursos de programación en el nivel superior, no
tienen suficientemente desarrolladas capacidades para la resolución de
problemas (Lister y otros; 2004, Chin Soon, 2020; Grover y otros, 2016; Qian y
Lehman, 2016; Babori y otros, 2016; Luza, 2017) . También se hace referencia a
la falta de consolidación de los conocimientos asociados al razonamiento lógico
(Savage y Piwek, 2019; Bosse y Gerosa, 2017) y evidencia de niveles de
abstracción débiles (Gomes y otros, 2006).
Gomes y Mendes son más directos en relación a la situación planteada y afirman
que:
“Los alumnos no saben resolver problemas. Creemos que la causa más
importante de las dificultades que muchos estudiantes de primer año para
aprender a programar es su falta de habilidades genéricas de resolución
de problemas. Los estudiantes no saben cómo crear algoritmos,
principalmente porque no saben cómo resolver problemas. La resolución
de problemas requiere múltiples habilidades que los alumnos no suelen
tener.” (Gomes y Mendes, 2007)
En tal sentido, han identificado en esta situación, varios problemas que deben
superarse en los primeros cursos de programación, tales como: a) deficiencias
en la comprensión del problema (muchas veces los estudiantes intentan resolver
un problema sin entenderlo de manera completa); b) falta de capacidad para
relacionar conocimientos, lo cual se evidencia cuando no pueden establecer
analogías correctas con problemas anteriores; c) carencia de reflexión sobre el
problema y la solución, ya que se evidencia una tendencia a escribir una
respuesta sin una reflexión previa.
En relación a las investigaciones mencionadas, entendemos que estamos frente
a un desafío educativo asociado a la enseñanza de la computación y, en
particular, a la programación en el nivel secundario. En su forma central este nos
habla acerca de cómo construimos una propuesta didáctica para la enseñanza
de la programación donde el primer paso sea el desarrollo de capacidades en
torno a la resolución de problemas. En este sentido, en el siguiente apartado
vamos a proponer y poner a discusión una posible solución.
III. Pensamiento computacional: un camino necesario para avanzar en
nuestras prácticas de enseñanza de la programación
Cómo es sabido, programar es mucho más que solo escribir código para
computadoras. En pocas palabras, entendemos que la programación es un
proceso mediante el cual, una persona desarrolla una solución a un problema y
la expresa en la forma de un algoritmo utilizando un lenguaje que pueda ser
procesado por una computadora. A partir de las evidencias presentadas en el
apartado anterior, se recomienda que antes de trabajar con los lenguajes de
programación, es necesario desarrollar una serie de habilidades de pensamiento
en torno a la resolución de problemas. En particular, algunas de estas son: la
capacidad de abstracción, el análisis y la descomposición en partes y la
destreza para la síntesis o recomposición (Insuasti, 2016).
En los últimos años, el término “pensamiento computacional” ha emergido con
fuerza asociado a discusiones educativas que se han dado en la educación
básica. Si bien es un término de debate actual, polisémico y aún no sedimentado
(Adell y otros, 2019), en este trabajo vamos a tomar la definición aportada por la
Sociedad Internacional para la Tecnología en la Educación (ISTE) y la Asociación
de Profesores de Ciencias de la Computación (CSTA) quienes han desarrollado
una definición operativa del pensamiento computacional:
“El pensamiento computacional (PC) es un proceso de resolución de
problemas que incluye (pero no se limita a) las siguientes características:
Formulación de problemas de manera que nos permita utilizar un
ordenador y otras herramientas para ayudar a resolverlos. Organizar y
analizar lógicamente los datos. Representar los datos a través de
abstracciones como modelos y simulaciones. Automatizar las soluciones
a través del pensamiento algorítmico (una serie de pasos ordenados).
Identificar, analizar y poner en práctica posibles soluciones con el objetivo
de lograr la combinación más eficiente y eficaz de pasos y recursos.
Generalizar y transferir este proceso de resolución de problemas a una
amplia variedad de problemas.” (ISTE, 2011).
De manera complementaria a la definición anterior, ISTE asocia una serie de
disposiciones o actitudes que constituyen dimensiones esenciales para el
desarrollo del PC. Siendo estas: Confianza en el manejo de la complejidad;
persistencia en el trabajo con problemas difíciles; tolerancia a la ambigüedad;
capacidad de tratar problemas abiertos y capacidad de comunicar y trabajar
con otros para lograr un objetivo o solución común.
Cuando analizamos los problemas encontrados en el relevamiento bibliográfico
para la enseñanza de la programación, y tras presentar la definición del PC,
resulta evidente que se encuentran coincidencias entre ellos. En primer lugar y
desde la misma definición, este pensamiento está orientado a desarrollar
habilidades y estrategias para la resolución de problemas, carencia que es
destacada por las investigaciones referenciadas. Por otro lado, y con mayor
precisión, tales investigaciones hacen referencia al bajo desarrollo de las
mismas capacidades que ISTE señala como propias del PC: pensamiento
algorítmico y lógico, capacidad de abstracción y descomposición de problemas.
Si bien el concepto pensamiento computacional hoy está en debate y no hay
acuerdos firmes sobre sus alcances, entendemos que de manera central se
relaciona con el problema educativo que estamos tratando y por lo tanto amerita
ser parte de nuestra discusión. En este sentido, percibimos que podría colaborar
en la concientización y visibilización, por parte de la comunidad docente, de
alguno de los problemas centrales asociados a un primer curso de
programación; haciendo hincapié en que antes de trabajar con aspectos más
técnicos de la programación es necesario desarrollar capacidades en nuestros
estudiantes en relación a la comprensión y la resolución de problemas.
En la educación argentina, este problema educativo recién empieza a ser tenido
en cuenta en el currículum de la escuela básica, a partir de la aprobación de los
Núcleos de Aprendizaje Prioritarios de Educación Digital, Programación y
Robótica
4
. Los mismos incluyen, dentro de su propuesta de alfabetización
digital, objetivos de enseñanza y de aprendizaje relacionados con la resolución
de problemas y la programación de computadoras. En este momento las
distintas jurisdicciones educativas están discutiendo su modo de incorporación
a los distintos diseños curriculares. Por otro lado, en agosto de 2021, desde el
Ministerio de Educación se ha anunciado el Programa Nacional de Ciencia y
Tecnología en la Escuela el cual, en su punto dos, indica que es importante la
“potenciación y actualización de la educación tecnológica con contenidos de
Ciencias de la Computación"
5
.
4
Resolución Consejo Federal de Cultura y Educación N° 343/18.
5
Registro audiovisual del lanzamiento del Programa Nacional de Ciencia y Tecnología
en la Escuela (20 de agosto de 2021)
https://www.youtube.com/watch?v=gJ_3kMlyWmc
Puede ser que en un futuro cercano las habilidades de resolución de problemas
se desarrollen con mayor intensidad en la educación básica obligatoria y, de
alguna forma, se naturalice el trabajo de estos temas en distintos espacios
curriculares. Seguramente, en ese momento, ya no se necesitará hablar tanto
de pensamiento computacional, no obstante, mientras esto no suceda
entendemos que tal concepto nos ayuda a visibilizar y comenzar a abordar el
mencionado problema educativo.
IV. Consideraciones finales
En el presente, donde el paradigma informacional (Castells, 2002) está
sustituyendo en una buena parte al industrialismo y la aceleración de los
desarrollos científicos y las aplicaciones tecnológicas favorecen un entorno de
cambios constantes, está cada vez más definido que los estudiantes deben ser
capaces de pensar críticamente y resolver problemas complejos. En este
contexto la informática debe verse centralmente como una disciplina de
resolución de problemas con aplicaciones en muchas áreas del mundo real
(Grover, y otros, 2016) . En particular, enseñar a programar, se configura como
uno de los caminos posibles para que las personas se apropien de la tecnología
y la puedan adaptar según sus necesidades e intereses.
Por otro lado, según hemos analizado, aprender a programar implica algo que
va más allá de solo memorizar la sintaxis y conocer la semántica de un lenguaje
de programación. Desarrollar habilidades en esta área es un asunto complejo
que requiere de un conjunto de capacidades y conocimientos que están en
relación con analizar, entender y proponer diferentes soluciones algorítmicas a
problemas. Más aún, entendemos que cada problema (o conjunto de
problemas, estrictamente hablando) se soluciona de una manera distinta y cada
programador tiene su propia forma de hacerlo.
Ante la importancia y necesidad de desarrollo de estas capacidades,
entendemos que la resolución de problemas es una habilidad inicial que se debe
abordar en los primeros cursos de programación y así, hablar de pensamiento
computacional es una forma de ayudar a darle nombre y forma a un problema
educativo.
Las nuevas directivas curriculares que incorporan la enseñanza de la
computación a la educación básica obligatoria nos presentan varios desafíos
educativos, pero también la posibilidad de ser coautores en la construcción de
una nueva didáctica disciplinar. No podemos simplemente transferir la
experiencia acumulada en el nivel superior de enseñanza (la cual efectivamente
es mucha), por lo cual se hace necesario revisar los por qué, los para qué y
también los cómo, a la luz de las nuevas normativas directivas como así también
de las edades de los estudiantes y las realidades de los actores involucrados.
V. Referencias
ACM/AIS/IEEE (2005). Computing Currícula 2005. The Joint Task Force for
Computing Curricula 2005. Disponible en
https://www.acm.org/binaries/content/assets/education/curricula-
recommendations/cc2005-march06final.pdf
Aissa, M.; Al-Kalbani, M.; Al-Hatali, S. y Touq Ahmad A. (2020). Novice Learning
Programming Languages in Omani Higher Education Institution (Nizwa
University) Issues, Challenges and Solutions. En A. Al-Masri y Y. Al-Assaf (eds.)
Sustainable Development and Social Responsibility—Volume 2. Springer
Adell, J.; Llopis, M.; Esteve, M. y Valdeolivas, N. (2019). El debate sobre el
pensamiento computacional en educación. RIED. Revista Iberoamericana de
Educación a Distancia, 22(1), pp. 171-186. doi:
http://dx.doi.org/10.5944/ried.22.1.22303
Babori, A., Fihri, H., Hariri, A. y Bideq, M. (2016). An e-Learning environment for
algorithmic: Toward an active construction of skills. World. En Journal on
Educational Technology: Current Issues, 8(2), pp. 82-9
Baldwin, L. y Kuljis, J. (2001). Learning programming using program visualization
techniques. En Proceedings of the 34th Hawaii International Conference on
System Sciences.
Bosse, Y. y Gerosa, M. (2017). Why is programming so difficult to learn? Patterns
of Difficulties Related to Programming Learning Mid-Stage. ACM SIGSOFT
Software Engineering Notes, 41(6), pp. 1-6,
https://doi.org/10.1145/3011286.3011301
Castells, M. (2002). Epílogo, en P. Himanen, La ética del hacker y el espíritu de
la era de la información. Barcelona: Destino.
Chin Soon, C. (2020). Factors Contributing to the Difficulties in Teaching and
Learning of Computer Programming: A Literature Review. Contemporary
Educational Technology, v.12, n.2
Gomes, S. y Mendes, A. (2007). Learning to program-difficulties and solutions.
En International Conference on Engineering Education – ICEE 2007, Coimbra,
Portugal.
Gomes, A.; Carmo, L.; Bigotte, E. y Mendes, A. (2006). Mathematics and
programming problem solving. 3rd E-Learning Conference–Computer Science
Education.
Grover, S. (2018). The 5th 'C' of 21st century skills? Try computational thinking
(not coding). EdSurge News. Disponible en
https://www.edsurge.com/news/2018-02-25-the-5th-c-of-21st-century-skills-
try-computational-thinking-not-coding
Grover, S.; Pea, R. y Cooper, S. (2016). Factors influencing computer science
learning in middle school. En Proceedings of the 47th ACM technical symposium
on computing science education, doi: 10.1145/2839509.2844564
Insuasti, J. (2016) Problemas de enseñanza y aprendizaje de los fundamentos
de programación. En Revista educación y desarrollo social, 10 (2), pp. 234-246.
doi: org/10/18359/reds.1701)
International Society for Technology in Education (ISTE) y Computer Science
Teachers Association (CSTA). (2011). Operational Definition of Computational
Thinking for K–12 Education. Disponible en https://cdn.iste.org/www-
root/Computational_Thinking_Operational_Definition_ISTE.pdf
Lister, R.; Adams, E.; Fitzgerald, S.; Fone, W.; Hamer, J.; Lindholm, M.;
McCartney, R.; Moström, J.; Sanders, K.; Seppälä, O.; Simon, B. y Thomas, L.
(2004). A multi-national study of reading and tracing skill. SIGCSE Bulletin, V. 36,
I. 4, pp. 119-150
Luxton-Reilly, A. (2016). Learning to program is easy. En Proceedings of the
2016 ACM Conference on Innovation and Technology in Computer Science
Education. https://doi.org/10.1145/2899415.2899432
Luza, C. (2017). La computación y solución de problemas computacionales.
Perspectiv@S, 13(12), 23-27. Recuperado de
http://revistas.uigv.edu.pe/index.php/perspectiva/article/view/208
Mayer, R. (1990). Problem solving. En M. Eysenck (ed.), The Blackwell
Dictionary of Cognitive Psychology, Oxford: Basil Blackwell, pp. 284-288.
OECD. (2013). Problem solving framework, in PISA 2012. OECD Publishing.
Qian, Y. y Lehman, J. (2016). Correlates of success in introductory
programming: A study with middle school students. Journal of Education and
Learning, 5(2), 73. doi: :10.5539/jel.v5n2p73
Savage, S. y Piwek, P. (2019). Full report on challenges with learning to program
and problem solve: an analysis of first year undergraduate Open University
distance learning students’ online discussions. Disponible en
http://oro.open.ac.uk/68073/1/IOC_TM112_Python_Help_Forum_Research.pdf
Susanti, W; Jama, J.; Krismadinata; Ramadhani, D. y Nasution, T. (2021). An
Overview Of The Teaching And Learning Process Basic Programming In
Algorithm And Programming Courses". En Turkish Journal of Computer and
Mathematics Education, Vol.12, N.2, pp. 2934-2944.
Uzunboylu, H.; Kinik, E.; Kanbul, S. (2017). An Analysis of Countries Which Have
Integrated Coding into Their Curricula and the Content Analysis of Academic
Studies on Coding Training in Turkey. TEM J. 6, pp. 783–791.