¿Cómo hacer que las conferencias de programación sean más efectivas y estimulantes?

Me han asignado el puesto de asistente de enseñanza para la parte de programación de mis cursos universitarios en inferencia bayesiana, a nivel de maestría. Previamente dicté un curso, hace unos meses, en Estadística Computacional. Mi experiencia haciendo esto, sin experiencia docente previa, no ha sido tan buena debido al bajo rendimiento general de los estudiantes, probablemente debido a la falta de familiaridad con el lenguaje de programación utilizado (R).

Estoy preparando diapositivas conferencia por conferencia, con código incrustado que ejecuto y comento sobre la marcha. De vez en cuando propongo ejercicios, pero la ejecución suele ser incompleta y encuentro que muchas personas no pueden usar las construcciones básicas del lenguaje con suficiente fluidez para crear código que se ejecute "en el acto". Dado que tengo un programa que cubrir y no sabría qué más proponerles a los estudiantes además de ejercitar más y estudiar la sintaxis del idioma, yo mismo soy, en la mayoría de los aspectos, autodidacta sobre esto, lo que significa que mi Las habilidades de programación tienen poco que ver con el trabajo de curso que hice durante mis estudios. ¿Tiene algún consejo sobre cómo hacer que mis conferencias sean más efectivas y estimulantes?

¿Tiene horas de oficina además de la conferencia? Creo que con muchos programadores primerizos, el tiempo uno a uno es muy importante.
Apuesto a que hay una gran cantidad de literatura sobre la pedagogía de las ciencias de la computación; este es ciertamente el caso en todos los demás campos de la ciencia/ingeniería que conozco. ¿Has investigado esto? Estoy seguro de que existen muchas técnicas excelentes. Si estás en los EE. UU., también apostaría a que tu universidad tiene un servicio de "consultoría" docente con personas a las que les encantaría ayudar.
Lamentablemente, no estoy en horario de oficina. Actualmente tengo un trabajo de tiempo completo, por lo que incluso la carga de trabajo del curso no es tan fácil de manejar. Re. Pedagogía de CS, encontré algunos documentos, pero tenga en cuenta que este no debería ser un curso de programación sino uno de análisis, donde el objetivo principal es ilustrar de manera práctica los temas tratados en las lecciones de teoría. El problema, en pocas palabras, es que los antecedentes de los estudiantes son tan variados que simplemente no tienen los conocimientos básicos necesarios (los estudiantes de MS en estadística deben tener una experiencia previa con R, mientras que una parte significativa de mis estudiantes no la tienen)
Considere pedir sugerencias a los TA anteriores de este curso.

Respuestas (3)

Re: El deseo de ejercicios en clase (código "en el acto"): una cosa que descubrí este semestre (enseñando C ++ introductorio del libro de texto de Gaddis) es la idea de ejercicios de laboratorio con programas en su mayoría completos, donde los estudiantes solo necesitan agregar algunas líneas que involucren las nuevas estructuras del lenguaje sobre las que acaba de hablar. En comparación con los ejercicios de "escribir un programa completo ahora mismo" que había usado en el pasado, esto funciona notablemente bien; encaja en el intervalo de tiempo correcto para todos, consigue que sus manos/ojos hayan escrito esa estructura al menos una vez, plantea los puntos/dificultades sobresalientes de exactamente ese tema, etc.

Los ejercicios de laboratorio de relleno que estoy haciendo provienen directamente de los materiales del instructor de Gaddis, por lo que alivia mucho mi carga de trabajo. Francamente, no hubiera esperado que funcionaran tan bien como lo hacen, pero todos los días hay un momento de aprendizaje importante que surge orgánicamente. No es una bala de plata para todos, pero ha sido una especie de revelación este semestre.

La codificación en vivo (en particular, como se hace en los talleres de Software Carpentry ) es excelente para transmitir la programación. Lo he usado en conferencias universitarias estándar durante tres años y es muy popular entre los estudiantes. Las ventajas clave son

  1. Te ralentiza, por lo que te mueves a un ritmo más cercano al nivel de los estudiantes;
  2. Cuando comete errores, y lo hará, y debería hacerlo, demuéstreles a los estudiantes que esto no es un problema y también muéstreles cómo corregirlos sobre la marcha.

Estas ventajas tienen sus desventajas incorporadas: consume más tiempo en una conferencia ocupada y necesita práctica para poder prepararse sin prepararse demasiado. También debe hacer que el código esté disponible junto con las diapositivas para su lectura posterior: combinar la captura de conferencias con la codificación en vivo funciona, pero tener los archivos disponibles es mejor.

He estado en un barco similar, dando clases de economía en las que se utilizó una pieza de software que la mayoría de los estudiantes no conocían al principio. Encontré algunas cosas que funcionaron bien:

  • ¿Tu escuela tiene un laboratorio de tecnología? El mío tenía uno y ofrecía seminarios regulares y ayuda individual sobre el uso de software común. A menudo estaban felices de coordinarse con los profesores para clases específicas. Búscalo, y si existe habla con ellos.
  • A continuación, dedique tal vez una clase completa al principio a repasar el software. Como alternativa o suplemento, ofrezca una sesión adicional que no sea de clase. Es posible que esto no sea práctico dado que trabaja a tiempo completo fuera del campus, pero si tiene un laboratorio de tecnología, es posible que haya alguien más que pueda hacerlo. Sin embargo, en particular dado que no ofrece horarios de oficina, esto podría ser apropiado para que usted haga tiempo.
  • Enfatice desde el principio que aprender este software es crucial para aprobar, y que no podrán aprenderlo solo con verlo hacerlo en clase.
  • En ese sentido, envía un correo electrónico a los estudiantes antes de que comience la clase para que estén plenamente conscientes de que necesitan conocer el programa para seguir el curso, y solo estarás dedicando un tiempo mínimo a enseñárselo.
  • En el caso de R, hay una miríada de otras fuentes para aprender a comenzar. ¡No hay necesidad de reinventar la rueda! Verifique la calidad de algunos de ellos y luego recomiéndelos a los estudiantes. Es posible que esto no funcione tan bien con piezas de software más oscuras, obviamente.
  • Minimice el código que muestra en las diapositivas. Analizar el código de otra persona es difícil en el mejor de los casos, y un lenguaje desconocido en una presentación de diapositivas está lejos de serlo.

La conclusión, en realidad, es que es imposible aprender un lenguaje de programación sentado en clase. Los alumnos deberán dedicar tiempo fuera de clase a practicarlo. Puede orientarlos en la dirección correcta y mostrarles los recursos, pero no puede tomarlos de la mano todo el camino; en algún momento solo tienes que esperar que puedan seguir lo que requiere el curso.