Cuando los alumnos aprenden a programar en cursos introductorios de informática, muchos tienen problemas para aplicar los conceptos básicos. Cay Horstmann, profesor de informática de la SJSU, quería ayudar a los alumnos a practicar la programación por cuenta propia, de modo que pudieran mejorar sus habilidades con mayor rapidez. Lamentablemente, dado que los problemas de codificación se solían reutilizar año tras año, los alumnos podían buscar fácilmente las soluciones en línea. El profesor Horstmann necesitaba una forma de proporcionar más práctica sin que las respuestas fueran fáciles de detectar.
La Universidad Estatal de San José alienta a los alumnos a que aprendan por su cuenta los conceptos básicos de programación
Dado que contaban con una capacidad de máquinas virtuales limitada, el Departamento de Informática de la SJSU necesitaba una forma de expandir los recursos para que los alumnos de informática pudieran acceder a ejercicios de programación ilimitados.
"El domingo por la noche, mientras los alumnos hacen los deberes, es probable que se ejecuten 20 máquinas virtuales. Por lo tanto, a medida que cambia el volumen de trabajo, las máquinas pueden iniciarse y detenerse automáticamente".
Cay Horstmann, profesora de Informática, Universidad Estatal de San José
Habilitamos una capacitación práctica y real para todos los alumnos
La creación de sistemas que permiten que los alumnos aprendan solos se ha vuelto muy importante, ya que los alumnos de campos ajenos a la informática, como la biología o el derecho, se interesan por la programación como método para realizar sus investigaciones o aumentar la productividad. En otras palabras, la programación ya no es solo para los aspirantes a desarrolladores.
"Los departamentos de informática necesitan prepararse para este nuevo interés por las habilidades de programación", afirma Horstmann. "Muchos alumnos toman clases de informática para volverse más eficaces en sus propios campos. Dado que existe una escasez de instructores de informática, los alumnos deben poder aprender mediante prácticas autodidácticas".
Cay escuchó hablar del programa de Becas de educación de Google Cloud Platform por medio del Special Interest Group on Computer Science Education (SIGCSE) y solicitó una beca de investigación para recibir créditos de Google Cloud. De esta forma, obtuvo los créditos para utilizarlos con cualquier producto de Google Cloud y usó las herramientas para desarrollar CodeCheck, un calificador automático con cientos de ejercicios para que los alumnos practiquen programación.
CodeCheck es un programa basado en la Web que está diseñado para enseñarles a los alumnos a programar en diversos lenguajes. Los profesores pueden personalizar los problemas de programación a fin de que los alumnos tengan que crear sus propias soluciones y no puedan encontrar las respuestas en línea. Dado que el nivel de funcionamiento de los servidores del Departamento de Informática ya se encontraba al máximo, Cay desarrolló CodeCheck por medio de Google Compute Engine, que son máquinas virtuales con una potencia de computación ilimitada. Además, eligió Stackdriver para la supervisión, el registro y el diagnóstico, y escogió Cloud SQL debido a su escalabilidad y conveniencia.
"El domingo por la noche, mientras los alumnos hacen sus deberes, es probable que se ejecuten 20 máquinas virtuales. Por lo tanto, a medida que cambia el volumen de trabajo, las máquinas pueden iniciarse y detenerse automáticamente", afirma Horstmann.
Ahora, los profesores de informática de SJSU pueden utilizar las herramientas de computación en la nube para enseñar programación sin tener que preocuparse por la capacidad de los servidores de la universidad. Esto facilita la participación de una mayor cantidad de alumnos, incluidos aquellos que estudian otras carreras que no son de informática. Los alumnos aprenden sobre la administración de sistemas remotos, la escalabilidad del volumen de trabajo, las implementaciones automatizadas y los registros.
Alentamos a los alumnos a que aprendan solos
CodeCheck les proporciona a los alumnos comentarios en tiempo real sobre la codificación, por lo que pueden saber al instante si sus soluciones son correctas o no. CodeCheck no les señala a los alumnos lo que hicieron mal, sino que deben descubrirlo solos. En el pasado, los alumnos no recibían comentarios sobre sus trabajos hasta semanas después de haberlos enviado. Para ese entonces, ya no solían recordar qué proceso habían seguido para llegar a la respuesta.
Los resultados de las encuestas demuestran que a los alumnos les resulta importante tener un recurso de práctica en línea. No tienen vergüenza de cometer errores y no se sienten presionados a finalizar las tareas en un plazo específico.
Según Horstmann, CodeCheck también mejora el aprendizaje de los alumnos y el rendimiento en los exámenes. En un curso de Java para alumnos de otras especialidades que estaba dividido en dos secciones, la sección a la que se aplicó CodeCheck experimentó un rendimiento un 50% mayor que el grupo de control. En una clase sobre lenguajes de programación, la sección que utilizó CodeCheck obtuvo una puntuación un 20% más alta en las preguntas de programación de esquemas que el grupo de control. Cabe destacar que ambos grupos obtuvieron la misma puntuación en una pregunta que no figuraba entre las de práctica. Por último, en una clase sobre C++ para alumnos transferidos en la que todos tuvieron que resolver problemas de práctica, la cantidad promedio de intentos por problema disminuyó un tercio entre el principio y el final del curso, y el tiempo de resolución promedio se redujo a la mitad.
Les enseñamos programación a todos
Los alumnos se están convirtiendo en usuarios nativos de la nube, por lo que las herramientas educativas necesitan evolucionar para satisfacer no solo las necesidades de los alumnos de informática, sino también las de aquellos que estudian otras disciplinas. Por ejemplo, cuando los alumnos pasan de problemas básicos basados en fotos a la creación de bucles, hay un enorme salto conceptual, ya que el bucle debe funcionar para todas las entradas. Si bien muchos alumnos comprenden el concepto, su aplicación es mucho más difícil. Una vez que aprenden un patrón, comienzan a comprender cómo pueden aplicar ese concepto al código.
Con el calificador automático, los alumnos pueden comenzar de a poco con cinco líneas de código. Cuando los alumnos necesitan escribir 200 líneas de código para un deber asignado en clase, es probable que cinco líneas parezcan poco, pero el objetivo es lograr que aprendan de forma paulatina y que apliquen gradualmente lo que aprenden a deberes más complejos.
"La programación es una habilidad del siglo XXI que necesitarán los empresarios, los científicos, los abogados, los periodistas… cualquiera que trabaje con datos", explica Horstmann. "Si las tasas de fracaso son muy altas cuando les enseñamos a los alumnos de informática con el modelo tradicional de clase-laboratorio-deberes, los resultados no serán muy distintos con los alumnos de otras especialidades. Es por eso que utilizo el enfoque de 'enseñanza por repetición', que el tiempo ha demostrado que es muy eficaz".
"La programación es una habilidad del siglo XXI que necesitarán los empresarios, los científicos, los abogados, los periodistas… cualquiera que trabaje con datos".
Cay Horstmann, profesora de Informática, Universidad Estatal de San José
Ejecutamos un calificador automático con sencillas operaciones de backend
Stackdriver proporciona excelentes funciones de supervisión y diagnóstico que permiten que Cay solucione los problemas y se asegure de que los alumnos utilicen correctamente el calificador automático. Por ejemplo, si un alumno intenta ejecutar un programa que borra otros programas o apaga la máquina, la configuración del calificador automático bloquea ese comando. Anteriormente, Cay solía tener que pasar horas depurando los programas para descubrir la causa de un problema.
El objetivo principal de CodeCheck es reducir los problemas para todos los alumnos que deseen practicar la programación. No es necesario que los alumnos se registren o accedan para usar el calificador automático. Los profesores pueden integrar CodeCheck al sistema de administración de aprendizaje (LMS). Los alumnos trabajan directamente en el LMS y el calificador automático proporciona las puntuaciones que obtuvieron. Cloud SQL hace un seguimiento del tiempo que les lleva a los alumnos trabajar en los deberes y crea una copia de seguridad automática de esos datos. Con esta integración, los alumnos pueden hacer clic en "Registrar mi puntuación" para enviar los deberes, lo que simplifica el proceso de envío para los profesores y los alumnos que utilizan el programa.
"A medida que la programación deja de ser una habilidad para los desarrolladores y se convierte en una habilidad para el futuro, los departamentos de informática necesitan adaptarse para que los alumnos puedan aprender a su propio ritmo", afirma Horstmann. "Con CodeCheck, los alumnos pueden plantearse el desafío de seguir aprendiendo fuera del aula".