Saltar la navegación

IX. Computación y Bimodalidad en la UNQ

Pablo E. “Fidel” Martínez López

La Computación es una disciplina amplia que incluye diversas formas, desde Ciencias de la Computación hasta Desarrollo de Software e Ingeniería, y que se vincula de muchas maneras con el diseño, la comprensión y el uso de la tecnología de información y comunicación modernas. Desde el estudio de los principios lógicos y matemáticos que permiten concebir soluciones automáticas a una multitud de problemas, junto con los límites y posibilidades de esos principios (estudio pertinente de las Ciencias de la Computación), hasta el diseño de soluciones informáticas que involucren tanto hardware como software (estudio pertinente a la Ingeniería de Computación), pasando por la más popular de las formas de la Computación, la programación de computadoras y el desarrollo de software, la Computación está presente en prácticamente todos los aspectos del mundo actual.

En la Universidad Nacional de Quilmes (UNQ), la primera carrera de programación se creó en 2007 con una camada de 60 estudiantes y 3 profesores. Desde entonces, la comunidad Programación Informática y Computación no ha parado de crecer. La creación inicial fue producto de un plan nacional de la Secretaría de Políticas Universitarias dependiente del Ministerio de Educación de la Nación, denominado FOMENI (por FOMento a la ENseñanza de la Informática), fue aprobada por el Consejo Superior en su resolución CS-091/07 y consiguió validez nacional a través de la resolución ministerial 240/09. Tuve el privilegio de ser el primer director de la primera carrera de programación en la UNQ, y también dirigir la versión local del proyecto FOMENI.

Entre 2005 y 2015, estuvo vigente en Argentina la Ley de Promoción del Software, que buscaba expandir la producción de software como industria nacional y la exportación de software. Esta ley resultó altamente exitosa, multiplicando por 2 el número de empresas del sector (de 2000 a 4000), por 3 las exportaciones (de 2.5 millones de dólares a casi 8 millones) y por más de 4 el número de empleados en blanco (de 19300 a 86400). El plan FOMENI fue parte de esta política pública, y su objetivo era contribuir a la formación académica de calidad de profesionales de la Informática y la Programación, sin perder de vista la inclusión.

En la actualidad, existen dos carreras vinculadas a la Programación: la Tecnicatura Universitaria de Programación Informática (TPI) y la Licenciatura en Informática con orientación al Desarrollo de Software (LIDS). Las mismas nuclean a más de 1000 estudiantes y casi 70 docentes. Son presenciales, originalmente diseñadas para durar 3 y 5 años respectivamente, aunque luego de la incorporación del Curso de Ingreso como parte de las carreras en la forma de Ciclo Introductorio, realizada en la modificación de planes que en 2015 promovió la UNQ para todas las carreras, se extendieron medio año. Si bien la cantidad de egresados de TPI supera el centenar, la gran mayoría de los estudiantes de segundo año en adelante, tiene empleo en el sector de Software y Servicios Informáticos, y la UNQ posee una reputación en el mercado laboral de formar profesionales de gran calidad.

Las dos carreras comparten la mayoría de las materias iniciales, por lo que el perfil de Técnico se orienta a la adquisición de conceptos fundamentales en Programación, pero sin el grado de formalidad ni profundidad requeridos para un licenciado; esta formalidad y profundidad se desarrollan luego en las materias avanzadas de la LIDS.

Dentro de este grupo de asignaturas en común, se destaca un tronco de materias orientadas a los conceptos y prácticas fundamentales de la programación: Introducción a la Programación, Estructuras de Datos, Programación Orientada a Objetos I, Programación Orientada a Objetos II, Programación Funcional y Programación Concurrente, pertenecientes al área de Programación. Como todas las materias que se dictan en la UNQ, estas son cuatrimestrales.

Antecedentes de Bimodalidad en las carreras de Programación

La UNQ se caracterizó, desde su creación, por el dictado de carreras poco convencionales. Para lograr tal característica en las carreras de Programación, se buscó una forma novedosa de dictado de las materias. Es usual que las Tecnicaturas se orienten, principalmente, a saberes procedimentales, basando su formación en brindar conocimiento y destreza en el uso de entornos y herramientas de programación específicas, mientras que las Licenciaturas se dirigen, fundamentalmente, a saberes de índole más teórica, con fuerte base en la formalización de conceptos. De esta forma, las materias que se dictan para una Tecnicatura, incluso desde el principio, usualmente focalizan sus programas analíticos en entornos de programación y herramientas acordes al estado del arte, pues es lo que se utiliza más asiduamente en el mercado laboral. En cambio, las Licenciaturas comienzan con un conjunto de asignaturas que brindan mecanismo de formalización teórica (como álgebra, análisis matemático y lógica, entre otras) y luego profundizan en los conceptos propios de la disciplina a través de la formalización. Sin embargo, tanto TPI como LIDS siguen un enfoque diferente.

Las primeras materias se focalizan en brindar los conceptos básicos necesarios para construir un marco conceptual suficientemente rico para poder desempeñarse como programadores (de forma similar a lo que haría una Licenciatura en etapas medias de la carrera), pero sin exigir formalización teórica para ello. Esto es innovador, ya que no hay carreras que lo hagan: las Tecnicaturas usualmente no focalizan en conceptos, y las Licenciaturas no están completas sin formalización. En el caso de la carrera de Tecnicatura de la UNQ, estos conceptos se utilizan luego para el aprendizaje de los entornos y herramientas acordes al estado del arte, con foco en su utilización práctica, mientras que en la carrera de Licenciatura, la formalización se provee en etapas medias de la carrera, con ejemplos en los conceptos que ya manejan.

Estas particularidades de concepción, influyen en las posibilidades de un dictado bimodal completo y deben ser tenidas en cuenta a la hora de desarrollar esta propuesta.

¿La programación de computadoras ya es bimodal?

Una característica interesante de las carreras vinculadas a la programación es que, por afinidad con la disciplina, desde hace más de 20 años, las materias que se dictan en carreras de programación utilizan en su dictado diversos recursos web, tales como listas de correo para comunicación con todos los estudiantes, páginas web para compartir material didáctico, y más recientemente el uso de herramientas de trabajo colaborativo usualmente vinculadas a la programación (como manejadores de versiones de software, herramientas de seguimiento de proyectos y herramientas de reporte de problemas en el software desarrollado).

Esta utilización de herramientas vinculadas a la web puede verse como una manera incipiente de Bimodalidad, pues permiten una forma de trabajo que excede al aula y mantener una comunicación fluida entre estudiantes y docentes (tanto entre estudiantes entre sí y docentes entre sí, como entre estudiantes y docentes entre ellos). Sin embargo, no es una experiencia integrada en una plataforma única y guiada por un objetivo de clases no presenciales organizadas, razón por la cual decimos que es una forma incipiente de Bimodalidad, y no una forma completa o acabada. El camino a la Bimodalidad en programación, pues, es lograr esa integración entre las herramientas ya utilizadas y la provisión de una experiencia integrada y organizada de forma verdaderamente bimodal.

Es interesante destacar el uso de las listas de correo electrónico. Un administrador de listas de correos es un sistema de software que permite formas de utilización del correo electrónico que tiene varios modos de uso posibles:

  • Listas de discusión o de debate (de canal bidireccional).
  • Listas de distribución o boletines electrónicos (de solo lectura para la mayoría de los participantes).
  • Listas de recepción (de solo escritura para la mayoría de los participantes).

En una lista de discusión, cuando una persona escribe un correo electrónico a la lista, el mismo es recibido por todos los participantes (en ocasiones después de haber sido aprobado por un moderador, según la configuración de las características de la lista), permitiendo una comunicación entre todos los miembros de dicha lista. En una lista de distribución, un grupo destacado de miembros (los moderadores de la lista) pueden enviar información que recibirán todos, pero la mayoría de los participantes solo pueden leer el contenido, sin poder contribuir. En una lista de recepción, todos los participantes pueden enviar información, pero solamente el grupo de moderadores recibirá los correos.

En una materia, las listas de correo se pueden usar de diversas maneras. Una forma usual que se utiliza en todas las materias de las carreras de programación desde su creación, fue tener dos listas: una de distribución y una de recepción, donde en cada caso, los docentes operan como moderadores y los estudiantes como participantes. Estas listas se denominaron “de estudiantes” en el caso de la lista de distribución, y “de docentes” en el caso de las listas de recepción. De esta forma, las listas de correo se utilizaron con dos propósitos. Por una parte, las listas de estudiantes se usaron siempre para comunicar a todo el curso y fomentar la interacción entre estudiantes y docentes ( de estudiantes entre ellos y de estudiantes con los docentes); así, se logró generar en los estudiantes mayor sentido de pertenencia al grupo, se pudo generar una comunicación mucho más fluida con los docentes, y proveer resolución de consultas en forma grupal pero fuera del espacio presencial. Por otra parte, las “de docentes” se utilizaron para permitir la entrega de ejercicios y trabajos prácticos, para la realización de consultas específicas (por ejemplo, para la resolución de problemas en una forma personal de encarar la solución de cierto ejercicio, sin afectar las posibles diferencias a la hora de encarar la solución en otros estudiantes), y para la atención privada de problemas personales, en todos los casos, sin la necesidad de esperar al espacio áulico presencial. Estas características, que hoy en día son consideradas propias de un aula virtual, se utilizan en las carreras de programación desde prácticamente la existencia de Internet, incluso antes de su difusión masiva. Personalmente, las he usado como estudiante durante las cursadas, en 1989.En ese entonces, ni siquiera había surgido el término de “Bimodalidad” y era impensable hablar de un “aula virtual”, pues Internet no tenía aún las características necesarias para su concreción actual.

En el caso de la utilización de páginas web para la difusión del material didáctico, las materias de programación también son pioneras: ya desde el surgimiento de los primeros navegadores de Internet y de las páginas web estáticas, muchas materias de programación incorporaron páginas web estáticas a sus dictados. Las primeras páginas web que pude experimentar datan de 1994.

A pesar del uso de estos recursos, no podemos hablar realmente de Bimodalidad si esta experiencia no está integrada y dirigida desde objetivos didácticos y pedagógicos en común. Por esa razón, y pese a la amplia experiencia en el uso de recursos informáticos en línea, creemos que el camino a una verdadera Bimodalidad recién empieza.

La necesidad de formación docente específica para Computación

Otro aspecto fundamental a tener en cuenta a la hora de hablar de Bimodalidad es la formación docente.

Desde el comienzo de las áreas vinculadas a la Computación en la UNQ, la conformación del equipo docente incluyó diversas actividades de capacitación. Los docentes que se incorporaban al venían de universidades tradicionales, donde las carreras o bien comenzaban con fuerte bagaje teórico o bien eran fuertemente técnicas, sin profundizar en temas conceptuales. Por esa razón, la capacitación para incorporarse al equipo UNQ y la propuesta didáctica que estábamos diseñando debía incluir nuevas estrategias didácticas y trabajo en equipo. Esta capacitación se llevó adelante a través de jornadas y cursos específicos implementados mediante el proyecto FOMENI; sin embargo, nunca incluyó capacitación específica en temas de Bimodalidad. Pero la capacitación en Bimodalidad debe ser abordada de forma diferente con docentes de las áreas de Computación.

En la mayoría de las disciplinas, el foco principal de formación docente está puesto en la familiarización y entrenamiento en la utilización de los entornos y herramientas de vinculación remota; si bien también es necesaria una explicitación de estrategias didácticas para un mejor aprovechamiento de la experiencia bimodal, no pueden abordarse sin la familiaridad con los entornos. Y puesto que en la mayoría de las disciplinas, la tecnología de computación se presenta como una gran novedad, el mayor tiempo de la formación docente se focaliza en esta parte.

En el caso de las disciplinas relacionadas a la Computación, y en especial a las vinculadas a la programación, los docentes ya vienen familiarizados con los entornos de trabajo no presenciales e incluso, cuando estos entornos puedan ser nuevos u ofrecer algún tipo de innovación, la formación disciplinar permite que la adquisición de tales habilidades sea extremadamente rápida. Esto conlleva una característica particular para la formación docente para las disciplinas vinculadas a la Computación: no es razonable utilizar el mismo formato de formación docente que para las demás disciplinas.

Los equipos de capacitación de la Secretaría de Educación Virtual están al tanto de esta particularidad, razón por la cual estamos trabajando para la confección de cursos de formación específica, orientados a los docentes de las áreas vinculadas a la Computación.

Gobstones, una creación de la UNQ para enseñar programación

La enseñanza de la programación involucra diversos aspectos que deben ser tenidos en cuenta para que resulte efectiva. Los cursos tradicionales se focalizaron siempre en algunos de estos aspectos (los más operacionales, o sea, vinculados al funcionamiento de la máquina que ejecuta el programa, sin ahorrar en detalles técnicos), y minimizaron otros (los más denotacionales, o sea, vinculados a la forma en que las personas describen y comunican sus soluciones computacionales, y focalizados no en los detalles técnicos, sino en las ideas y conceptos fundamentales) (Kernighan y Pike, 1999), y por eso su efectividad no fue nunca grande, exigiendo a los estudiantes un grado de abstracción importante para ingresar al mundo de la programación. Sin embargo, nuestra idea es que no es razonable pedirle a un estudiante que recién empieza un grado de abstracción tan alto para iniciarse en la disciplina, y por eso decidimos innovar en nuestro enfoque pedagógico y didáctico.

Para expresar con mayor comodidad las ideas didácticas que desarrollábamos, creamos, a partir de 2008, un lenguaje de programación para enseñar a programar: Gobstones (Martínez López, 2013). A pesar de que el lenguaje de programación específico utilizado para programar no es importante, ya que lo importante son los conceptos de programación a comprender, existe una paradoja en el hecho de que sí es importante, pues ese lenguaje es el único vehículo para transmitir los conceptos, y si tiene demasiados detalles o mezcla conceptos, puede dificultar a los estudiantes iniciales(Martínez López, Bonelli, Sawady, de Terramar y Le Guin, 2012).

Por otro lado, una parte importante de la tarea de aprender a programar consiste en probar que las ideas que se escriben en forma de programa efectivamente funcionan en la computadora. Y para esto, es importante contar con un entorno adecuado donde se puedan escribir los programas, ejecutarlos y comprobar que efectivamente funcionan como se espera que lo hagan; y en caso de que no funcionen, puedan descubrir con facilidad cuáles son los errores que cometen, y corregirlos, para volver a probar. Como parte del desarrollo de Gobstones, se desarrollaron a lo largo del tiempo diversos entornos basados en Gobstones. El primero era apenas una aplicación rudimentaria por interfaz de línea, no más allá de un prototipo para experimentar las ideas que estábamos diseñando; el siguiente, si bien ya contaba con una interfaz gráfica, fue diseñado e implementado para ser utilizado en computadoras de escritorio, sin necesidad de ningún tipo de vínculo con internet y para ser trabajado mayormente en un ámbito universitario. Recién en el tercer entorno de trabajo que desarrollamos se comenzaron a incorporar las necesidades de acceso remoto y de enseñanza en diferentes niveles, y así surgió GobstonesWeb, un entorno de aprendizaje de programación basado en Gobstones, pensado para ser utilizado en diferentes niveles y dando la opción de acceso online a través de un navegador, o de descargar la aplicación para su uso fuera de línea. El entorno GobstonesWeb provee 3 formas de utilización según el nivel en el que se lo quiere aplicar: GobstonesJr, GobstonesSr y GobstonesTeacher. GobstonesJr está pensado para su utilización en el nivel secundario y/o no profesional, para dar los primeros pasos en programación; para ello ofrece la posibilidad de programar usando bloques Pasternak, Fenichel y Marshall, 2017). GobstonesSr, por otra parte, está ideado para la iniciación en el mundo de la programación profesional, por lo que en lugar de programar usando bloques, se programa de forma más tradicional utilizando texto. Finalmente, GobstonesTeacher está pensado para que los docentes puedan diseñar sus propias actividades y secuencias didácticas con facilidad (aunque se requiere un nivel básico de manejo de programación para ciertas partes, lo cual no debería ser problemático para docentes que enseñan a programar).

Si bien podemos ver a GobstonesWeb como una aproximación a la enseñanza bimodal, es apenas una aproximación incipiente, pues carece de muchas características que permitan hablar de un aprendizaje bimodal. Por una parte, falta la experiencia integrada. Pero, además, existen muchas características que GobstonesWeb podría tener para que la experiencia resulte realmente bimodal. Por ejemplo, el entorno podría brindar validación automática de éxito sobre los ejercicios propuestos (como lo hacen otros entornos similares, como PilasBloques (Factorovich y Sawady O’Connor, 2017) o Code.org), podría ofrecer sugerencias sobre cuestiones de estilo o técnicas a la hora de escribir el código, como hace el entorno Mumuki (Aloi, Bulgarelli y Spigariol, 2015), Es decir, ambos modos de corrección automática, que hoy son llevadas a cabo en forma manual por los docentes. La corrección automática de código enfrenta dificultades importantes a la hora de corregir código, porque en el aprendizaje de la construcción de programas de calidad no solamente importa que el programa funcione como se espera (lo que resulta fácil de verificar en forma automática), sino que el mismo haya sido construido siguiendo buenas prácticas de diseño y codificación (buena división en subtareas, buena elección de nombres para los diferentes componentes, buena separación de las “responsabilidades” de cada componente, entre otros) (Martínez López, Bonelli, Sawady, de Terramar y Le Guin, 2012) y las propiedades a verificar no son tan sencillas de responder como “sí, las sigue” o “no, no las sigue”, puesto que implican un grado importante de subjetividad. Este aspecto de la problemática se podría abordar con técnicas de ciencia de datos, lo cual constituye una línea de investigación que tenemos planificado explorar.

La Fundación Sadosky, la Iniciativa Program.AR y PilasBloques

En 2009, se crea en la Argentina la Fundación Dr. Manuel Sadosky de Investigación y Desarrollo en Tecnologías de la Información y la Comunicación, dependiente del entonces Ministerio de Ciencia, Tecnología e Innovación Productiva, con el objetivo de favorecer la articulación entre el sistema científico–tecnológico y la estructura productiva en todo lo referido a la temática TIC. Para cumplir su objetivo articula diversos programas de trabajo. Uno de tales programas, creado en 2013, es la Iniciativa Program.AR, cuya misión es que el aprendizaje significativo de Computación esté presente en todas las escuelas argentinas. La razón de esta misión es que los conocimientos que aporta esta disciplina son fundamentales para comprender y opinar sobre el mundo que nos rodea. Y, como vimos, dentro de la Computación, la programación tiene un lugar destacado: al aprender a programar se desarrollan habilidades de pensamiento que sirven para cualquier tipo de actividad tales como la capacidad de abstracción y de planificación, la descomposición de problemas y el trabajo en equipo, entre otras.

Program.AR incluye diversas líneas de trabajo para cumplir con tan ambiciosa misión: difusión, generación de materiales didácticos, formación docente, formalización de estudios y articulación con los diferentes niveles de gobierno nacional y local. La estrategia para conseguir resultados en cada una de las líneas a lo largo de todo el territorio nacional es a través de convenios con las Universidades Nacionales de cada región, para generar una red federal de profesionales vinculados a la iniciativa.

La UNQ participó de la Iniciativa Program.AR desde el principio. Docentes de nuestra institución fueron invitados a los diversos foros en los que se diseñó la misión y el plan para cumplirla, e incluso fuimos anfitriones de uno de esos encuentros. Luego, un egresado de la Tecnicatura en Programación de la UNQ y un profesor de la misma fueron invitados a trabajar para la Fundación dentro de la Iniciativa. Ellos diseñaron el primer curso de formación docente, para lo cual utilizaron muchas de las ideas plasmadas en Gobstones. Posteriormente, la UNQ estableció convenios con la Fundación para el dictado de cursos de formación docente y de confección de materiales didácticos (Martínez López et al, 2019), y docentes de la UNQ colaboraron en el diseño de nuevos cursos (Martínez López, Sanzo y Schapachnik, 2019). Como resultado de esto la UNQ formó a más de 200 profesores de primaria y secundaria, y fue la responsable de diseñar el contenido del manual “Ciencias de la computación para el aula : 1er. ciclo de secundaria” (Martínez López et al, 2019). El efecto de esta colaboración con la Fundación Sadosky en la Iniciativa Program.AR fue un enriquecimiento de las líneas de trabajo en didáctica de la programación, y uno de los motores que nos permiten hoy estar pensando en una integración bimodal de nuestra disciplina.

Introducción a la Programación: nuestro caso de prueba

Como parte del proceso de integración bimodal para todas las carreras que ha comenzado a recorrer la UNQ, desde las áreas de Computación empezamos por pensar los pasos necesarios para avanzar con la misma. Y si bien varias materias han comenzado a realizar cambios e incorporar elementos de Bimodalidad, para la descripción detallada elegimos un caso de prueba que resulta paradigmático: la materia Introducción a la Programación. Las razones de esta elección son múltiples: por un lado es la primera materia de programación plena que enfrentan los estudiantes de TPI y LIDS y es pilar central para la adquisición de conceptos fundamentales que luego serán aprovechados en materias subsiguientes para continuar construyendo el cuerpo de conocimientos necesario para un profesional de la computación; por otro lado, la secuencia didáctica y los entornos utilizados fueron diseñados por nuestro equipo especialmente para el tipo de estudiantes que tenemos, constituyen una propuesta innovadora en enseñanza de programación, y existe evidencia de que la misma es exitosa (como ejemplos podemos mencionar la presencia de nuestra propuesta en Mumuki (Aloi, Bulgarelli y Spigariol, 2015), en los cursos y manuales de la Iniciativa Program.AR de la Fundación Sadosky y en diversas escuelas secundarias de la provincia de Buenos Aires[1]); y finalmente, el equipo docente de esta materia está extremadamente comprometido con la integración de todas las herramientas y entornos que actualmente se utilizan.

Sin embargo, lograr la implementación de una experiencia realmente bimodal requiere trabajar en varios frentes simultáneamente. Ampliamos los puntos principales que consideramos necesarios para conseguir este objetivo: la integración de todas las herramientas y entornos que utilizamos actualmente en un único “lugar”, un aula virtual; la generación de material didáctico complementario al existente actualmente para mejorar la experiencia bimodal en dicha aula; el enriquecimiento del entorno Gobstones en dos aspectos: para poder realizar un registro automatizado de las actividades de programación que realiza cada estudiante, y permitir a los docentes hacer un seguimiento de avance y desempeño, y para poder ofrecer a cada estudiante una primera corrección automática de sus programas; y finalmente, completar la formación del equipo docente para estar a la altura de la tarea.

Todas estas acciones ya se encuentran en curso, y se espera que puedan ponerse en práctica durante el próximo año. Luego de evaluar los resultados, se propondrá a más materias realizar un proceso de similares características, consiguiendo así el enriquecimiento pleno de las carreras de programación de la UNQ con una propuesta bimodal.

Formación y actualización del equipo docente

El primer punto a considerar en el pasaje de Introducción a la Programación a la Bimodalidad plena es la formación docente. Dos tercios del equipo docente ya realizó la capacitación estándar exigida por la reglamentación para poder dictar una materia en formato bimodal, y esperamos que el resto del equipo pueda hacerla en la próxima edición. Sin embargo, aún debemos trabajar en la parte de la didáctica específica utilizando el entorno bimodal.

La formación estándar para Bimodalidad se focaliza principalmente en la utilización de las herramientas y entornos para trabajar en forma no presencial, pero no pone foco especial en las didácticas necesarias para aprovechar este aspecto en carreras con las características que tienen las vinculadas a la Computación. Junto con la Secretaría de Educación Virtual estamos comenzando a trabajar para poder generar un curso adecuado a los docentes de nuestras áreas. El desarrollo de cursos específicos es un trabajo que debe ser abordado en conjunto, puesto que se requiere a la vez el conocimiento de expertos en temas de pedagogía y didáctica aplicadas a la Bimodalidad, y de expertos en temas de computación y programación, para poder aprovechar al máximo las características de cada uno. Esta propuesta deberá ser probada y ajustada antes de poder considerar que está completa, pero es factible avanzar con la misma.

Integración de las herramientas y entornos actuales en un aula virtual única

En secciones anteriores explicamos cómo las materias de las carreras de computación utilizan un montón de herramientas y entornos de trabajo virtual desde hace mucho tiempo: listas de correo, página web, entornos de trabajo para programación (Gobstones), entornos de trabajo para trabajo en grupo ( GitHub, Trello), y otros. Sin embargo, también vimos que la utilización que se hace de estos entornos y herramientas es aislada y muchas veces no coordinada. Por ello, podemos decir que, a pesar de que el uso de estas herramientas provee una incipiente experiencia de no presencialidad, la experiencia no es completamente bimodal.

Para lograr que la experiencia de los estudiantes se constituya en verdaderamente bimodal debemos lograr una integración de todos los entornos y herramientas en un único “espacio”. Típicamente, este espacio único es denominado “aula virtual”, y la UNQ tiene amplia experiencia en la administración de estos espacios. Sin embargo, y dado que los docentes de programación vienen trabajando hace ya muchos años con algunas herramientas, es importante buscar formas de integrar ambas experiencias, y proveer a los docentes con un ambiente en el que se puedan manejar con la familiaridad con la que ya lo hacen. Esto es apenas un ajuste en el caso de listas de correo o páginas web, pero requiere un poco más de trabajo para la integración de los entornos de trabajo específicos. Sin este paso de integración la experiencia continuaría siendo fragmentaria, y se perdería el objetivo principal de Bimodalidad plena.

En el caso de Gobstones, que como vimos, es el entorno de trabajo de la materia Introducción a la Programación, los equipos de desarrollo de Gobstones y de administración de la Secretaría de Educación Virtual de la UNQ estamos trabajando juntos para poder integrar la experiencia de Gobstones a las aulas virtuales. Esperamos que durante el primer semestre de 2020 podamos ya estar lanzando las pruebas iniciales de integración, con miras a que en el segundo semestre de 2020 ya podamos lanzar una primera cohorte verdaderamente bimodal.

Complementación del material didáctico actual para la Bimodalidad plena

El siguiente aspecto para tener en cuenta, con miras a proveer una experiencia completamente biomodal en Introducción a la Programación, es la complementación del material didáctico actual. Al día de hoy, la materia utiliza diapositivas de clases, guías de trabajos prácticos con ejercicios en papel, guías de descubrimiento de los temas en el entorno Gobstones, un libro de texto, una página web con material complementario, y muchos ejemplos desarrollados en clases presenciales; además, el seguimiento de los estudiantes (su asistencia a clase y su avance en el desarrollo de los trabajos prácticos, entre otras cosas) se realiza mediante una planilla compartida entre los docentes.

Todos los materiales mencionados necesitan ser adaptados para su integración en un aula virtual, considerando la provisión de la secuencia didáctica que se espera que los estudiantes recorran; actualmente esto lo van proveyendo los docentes durante las clases presenciales, ajustándolo según la demanda de cada estudiante, pero para que la experiencia bimodal sea completa, esta secuencia debe quedar plasmada en el aula virtual. Además, la utilización de un aula virtual permite incorporar nuevos instrumentos de andamiaje para el aprendizaje, como ser pequeños cuestionarios o mini-desafíos teóricos (que actualmente no se realizan por falta de tiempo y facilidad de evaluación); el objetivo de los mismos sería ir afianzando los conocimientos en los estudiantes y, al mismo tiempo, permitirían que los docentes puedan realizar un seguimiento de los avances. Este afianzamiento y seguimiento se realizan en las clases presenciales de forma poco coordinada; si bien el equipo de docentes dialogamos sobre los estudiantes, y realizamos el seguimiento mediante una planilla compartida con información, la utilización de una herramienta integrada en el espacio áulico bimodal sería un avance importante.

Como parte de la planificación de clases bimodales, debemos considerar esta complementación de materiales didácticos.

Registro automatizado de avances en las actividades de programación

En una disciplina como Programación, es muy importante ir probando los nuevos conocimientos mediante la confección de programas que vayan solucionando problemas cada vez más complejos. Estas actividades de programación se realizan en buena medida en una computadora, aunque también es importante que puedan desarrollarse en papel, ya que al no tener la ayuda de la máquina, los conceptos adquieren mayor relevancia y se favorece así su adquisición y apropiación por parte de los estudiantes, al tiempo que permiten a los docentes encontrar evidencias de tal situación.

En Introducción a la Programación utilizamos muchos ejercicios de programación que son exclusivamente usando la computadora (dentro del entorno de Gobstones), unos cuantos que son exclusivamente en papel (entregados en algunas de las clases presenciales), y una gran mayoría de ejercicios que se piensan en el papel y luego se prueban en la computadora (los que figuran en las guías de trabajos prácticos); sobre el final de la materia estos ejercicios se integran de forma de conseguir una solución a un problema de mayor envergadura (como puede ser la construcción de un pequeño juego con la computadora, o un sistema de gestión simplificado), y así se provee el marco donde todos los conceptos adquieren la relevancia necesaria.

Sin embargo, el registro para poder realizar el seguimiento de estas actividades es casi artesanal, y requiere una cuota importante de trabajo del equipo docente. Por ejemplo, se les consulta permanentemente a los estudiantes su avance en las actividades con la computadora y su avance en las guías de trabajos prácticos, pero es complejo mantener esa información actualizada; en el caso de los ejercicios en papel entregados en clase es más fácil mantener el registro actualizado, pero es información parcial, por tratarse de apenas uno de los medios de trabajo.

Contando con la integración de entornos al aula virtual, se puede pensar en que los ejercicios computarizados se registren automáticamente y permitan a los docentes verificar el avance de los estudiantes; esto requiere modificar el entorno de Gobstones para que permita este tipo de acción, lo cual involucra diversos pasos. Por ejemplo, actualmente el entorno de Gobstones es de uso anónimo; pero para poder llevar registro de avances, hay que pensar que el estudiante debe identificarse, así su trabajo se pueda registrar adecuadamente en su perfil. También se requiere que las actividades informen a un servidor central cuando son realizadas, e idealmente también registren si fueron correctamente realizadas o no.

Finalmente, en el aula virtual pueden agregarse también mecanismos para que los estudiantes registren sus avances en las guías de trabajos prácticos.

Mediante estas modificaciones, el seguimiento de los avances de los estudiantes sería más simple y permitiría contribuir enormemente a su experiencia y a la de los docentes.

Evaluación automática

Anteriormente hablamos de las actividades de programación que los estudiantes deben realizar como parte de su aprendizaje en Introducción a la Programación, y explicamos que hay algunas que son completamente utilizando la computadora, otras solo en papel y están las que comienzan en papel pero deben plasmarse luego en la computadora. Y mencionamos brevemente la necesidad de registrar la corrección de las mismas. Este punto es importante ampliarlo, porque ofrece nuevas posibilidades.

Una actividad de programación se evalúa desde dos puntos de vista diferentes y complementarios. Para comprender esto, debemos entender en qué consiste una actividad de programación: todo programa, por pequeño que sea, expresa la solución a un problema de índole computacional. Es importante, entonces, que efectivamente el programa provea la solución al problema planteado sin errores; a esto llamamos corrección de un programa. Un programa es correcto si soluciona el problema para el que fue diseñado de forma satisfactoria. Sin embargo, la corrección no es lo único importante, ya que los programas también constituyen una forma de comunicar soluciones entre personas. Entonces, además de la corrección, es importante que el programa sea legible, entendiendo por esto la facilidad de lectura para una persona con cierto entrenamiento. Los programas son, así, formas de comunicar soluciones a problemas computacionales, pero de forma tal que puedan ser ejecutados por una computadora, y al mismo tiempo, comprendidos por las personas que trabajan con ellos. Entonces, a la hora de evaluar una actividad de programación entran en juego estos dos aspectos: el programa debe ser correcto y, además, legible.

Una aproximación a la corrección de un programa simple es relativamente fácil de evaluar, pero la legibilidad es problemática.

Para el caso de la corrección de programas sencillos, se prueba el programa con diversos casos (algunos comunes y otros más infrecuentes – llamados “casos de borde”), y si el mismo no anda en alguno de ellos, sabemos que no es el correcto; probar la corrección completa de un programa puede ser un desafío técnico de abordaje complejo, pero para el nivel inicial suele alcanzar con garantizar que no falla en un conjunto de casos bien elegidos. Y este control de funcionamiento puede automatizarse en buena medida, permitiendo ofrecer así una primera devolución al estudiante sobre la corrección de su programa. Hoy en día, diversos entornos de programación para enseñar a programar ofrecen este tipo de apoyo (PilasBloques o Mumuki, pero Gobstones aún carece de la misma.

En cambio, la legibilidad depende de diversas cuestiones subjetivas, influenciadas por la cultura de los lectores, por su formación, por convenciones determinadas por la comunidad de programación en la que se trabaja el programa, y muchas cosas más, todas de difícil cuantificación. Por ello, evaluar la legibilidad es muchísimo más complejo. Para abordar este tema, existen algunas aproximaciones en cuanto a garantizar que ciertas prácticas que se saben malas no sucedan en el código, o que sí sucedan otras que ayudan a la legibilidad; por ejemplo, Mumuki (Aloi, Bulgarelli y Spigariol, 2015) ofrece la posibilidad de que la actividad sea analizada para detectar ciertos patrones de trabajo que impactan contra la legibilidad (los denomina “code smells”, que podría traducirse como “(mal) olor en el código”). Sin embargo, falta muchísimo trabajo para que la legibilidad pueda ser juzgada de forma automatizada; el trabajo actual en ciencia de datos y aprendizaje mecánico podría prometer avances interesantes en esa línea.

Como parte del pasaje a la Bimodalidad para Introducción a la Programación, nos planteamos que Gobstones tenga verificación automática de cierto nivel de corrección, y también que permita incorporar al menos las verificaciones de patrones que atentan contra la legibilidad siguiendo el trabajo de Mumuki. La incorporación de estas características ya se encuentra bajo desarrollo por parte del equipo de Gobstones, y esperamos poder contar con ellas para el segundo semestre de 2020.

Dado que el entorno de Gobstones es también un ambiente de experimentación, esperamos poder explorar en el futuro soluciones más complejas que permitan realizar corrección automática de legibilidad con mayor precisión. La utilización del entorno en un contexto bimodal será determinante para que esto sea posible, ya que proveerá un buen número de casos de estudio, necesarios para esta investigación.

Conclusiones

La enorme conectividad que se ha desarrollado en los últimos 30 años a partir del surgimiento de Internet, permitió el inicio de la educación no presencial. Esta forma de enseñanza, cuando es adecuadamente pensada y utilizada, puede proveer muchas ventajas que complementan a la educación presencial. Por eso, la importancia de la Bimodalidad: permite proveer lo mejor de la educación presencial, con lo mejor de la educación no presencial. Sin embargo, para poder hablar de verdadera Bimodalidad, debe recorrerse un camino largo. No es suficiente con proveer un conjunto de tecnologías de acceso remoto fuera del aula, sino que las mismas deben estar integradas en un modelo pensado para enriquecer la experiencia de estudiantes y docentes.

Como hemos argumentado, en las áreas de Computación de la UNQ contamos con mucha experiencia en utilización de entornos y herramientas de vinculación no presencial. Pero aún falta bastante para poder hablar de una verdadera Bimodalidad: desde el mejoramiento de los entornos de trabajo con tecnologías modernas (como el uso de ciencia de datos aplicado a la educación) hasta la fundamental formación docente para el mejor aprovechamiento de las características de la Bimodalidad. El camino por recorrer aún es largo, pero ya está iniciado y avanza a paso firme.

Deseamos que los próximos años nos brinden el continuo mejoramiento de nuestras prácticas docentes, integrando la tecnología con el saber pedagógico para el mejor aprovechamiento de todas las ventajas a nuestro alcance, sin descuidar que, en educación, siempre, lo más importante son los estudiantes y su experiencia de aprendizaje.

Referencias bibliográficas

Aloi, F., Bulgarelli, F., & Spigariol, L. (2015). Mumuki, una plataforma libre para aprender a programar. Tercer Congreso Nacional de Ingeniería Informática/Sistemas de Información, ser. CONAIISI.

Factorovich, P., Sawady O’Connor, F. (2017). Actividades para aprender a Program.AR, Cuaderno para el docente, Segundo Ciclo de la Educación Primaria y Primero de la Secundaria. Buenos Aires, Argentina: Iniciativa Program.AR, Fundación Sadosky. Recuperado a partir de: <program.ar/>.

Kernighan, B. W., & Pike, R. (1999).The practice of programming. Addison-Wesley Professional.

Martínez López, P. E., Bonelli, E., Sawady, F., de Terramar, U., & Le Guin, U. (2012). El nombre verdadero de la programación.10 Simposio sobre la Sociedad de la Información, 41. Jornadas Argentinas de Investigación Operativa. Recuperado a partir de: <41jaiio.sadio.org.ar/>.

Martínez López, P. E. (2013). Las Bases Conceptuales de la Programación.Una nueva forma de aprender a programar. El autor, Ebook. Recuperado a partir de: <www.gobstones.org/>.

Martínez López, P. E. , Ciolek, D., Arévalo, G. y Pari, D. (2017). El método GOBSTONES para la enseñanza de la programación informática. En XLIII Congreso Latinoamericano de Computación (CLEI). Recuperado a partir de: <ieeexplore.ieee.org/>.

Martínez López, P. E., Sanzo, A. y Schapachnik, F. (2019). Hacia una didáctica de la programación para la secundaria argentina. En 2das Jornadas Argentinas de Didáctica de la Programación (JADiPro2), Córdoba, Argentina.

Martínez López, P. E y otros. (2019) Ciencias de la computación para el aula : 1er. ciclo de secundaria. Fundación Sadosky, CABA, Argentina. Recuperado a partir de: <program.ar/>.

Pasternak, E., Fenichel, R., & Marshall, A. N. (2017). Tips for creating a block language with blockly. IEEE Blocks and Beyond Workshop (B&B).


[1] Por ejemplo, se puede ver en sitio.fameghino.com.ar/ o www.mendoza.edu.ar/.