De hecho, también probé esto en la escuela secundaria, excepto usando Java (para mi club de robótica).
Primer consejo: no uses Java .
El problema con Java es que está demasiado alejado de la esencia de la informática: hay demasiada complejidad adicional. Tienes que agitar un poco con la mano (“oh sí, solo escribe ‘public static void main’ y no te preocupes por lo que significa”), lo que realmente se interpone en el camino de enseñar programación real . Todo es una distracción.
Por esa razón, C ++ y Coq también están fuera.
- ¿Cuáles son algunos temas en lingüística en los que un estudiante de secundaria podría investigar?
- ¿Qué ven los estudiantes de secundaria en el hogar como sus mayores desafíos?
- ¿Qué se siente al tomar el Putnam como estudiante de secundaria?
- ¿Cuáles son algunos entretenidos juegos nocturnos para estudiantes de secundaria?
- Supongamos que el 100% de los estudiantes de secundaria fueron aceptados en la universidad. ¿Qué consecuencias habría?
No estoy diciendo que no puedas enseñar bien la programación con estos lenguajes, sí que puedes, y muchas personas que conozco comenzaron con uno de ellos (bueno, no Coq: P), pero estarías haciendo más trabajo por ti mismo. Todos esos detalles adicionales, muchos de los cuales son caprichos completamente arbitrarios o simplemente históricos, hacen que sea demasiado fácil perder la atención de las personas. ¡Y 1-2 horas a la semana es menos tiempo de lo que piensas!
En cambio, elige un idioma que sea lo más simple posible. Mi preferencia es el esquema. Tiene algunas ventajas:
- básicamente no hay sintaxis : todo está entre paréntesis, separados por espacios. Esto ahorrará muchos dolores de cabeza, sin estropear llaves ni olvidar puntos y comas. La sintaxis es útil una vez que tienes más experiencia en programación, pero es bastante superficial y solo se interpone en el camino del aprendizaje.
- todo es una expresión : no hay distinción arbitraria de expresión / expresión; en cambio, todo se comporta de la misma manera. Otra cosa que no tiene que preocuparse por explicar.
- multiparadigm : Scheme admite la programación funcional e imperativa razonablemente bien, e incluso puede extenderse para enseñar POO.
- enseñanza centrada : Scheme es un lenguaje de instrucción popular, por lo que tiene una cantidad desproporcionada de recursos para principiantes y herramientas para principiantes. Especialmente miraría a Racket, que es una versión particular de Scheme muy adecuada para la enseñanza.
- pequeño : el esquema es pequeño y elegante. Muy pequeña. Esto significa que tiene muchos menos casos de esquina y comportamientos extraños que otros idiomas, lo que significa menos sorpresas y menos confusión. También es lo suficientemente pequeño como para que aprendas tú mismo sin perder demasiado tiempo.
Libros
Hay un par de buenos libros que usan Scheme y están disponibles de forma gratuita en línea. Estructura e interpretación de programas de computadora (SICP) es un clásico, pero podría ser demasiado para una clase de una vez por semana.
Otra alternativa más simple es Simply Scheme . Es un buen lugar para comenzar: fue escrito explícitamente como una introducción al SICP. Este es con el que probablemente iría.
Finalmente, está Cómo diseñar programas , escrito por el equipo detrás de Racket. No lo he leído yo mismo, pero he escuchado cosas buenas al respecto, por lo que probablemente valga la pena echarle un vistazo.
En su lugar, probablemente buscaría estructurar los temas en torno a Simply Scheme , pero agregaré algunos de sus propios ejercicios o proyectos para darle vida a las cosas. Probablemente se divertirá más enseñando si solo usa el libro como guía y hoja de ruta en lugar de seguirlo completamente capítulo por capítulo. También puede buscar ideas e inspiración en algunos de los otros libros.
Consejo general
Lo más probable es que explicar todo tomará más tiempo de lo que piensas. Si no le importa un poco de preparación, intente revisar el material que desea cubrir en un día y hora determinados. Luego presupuesta 1.5-2x más tiempo para la cosa real. Si eres como yo y eres demasiado vago para hacer eso, bueno, solo tenlo en cuenta y limita el alcance de cada día :). Además, creo que es más fácil agregar contenido con gracia que cortar contenido en el último momento.
En la misma nota, en lo que respecta a la velocidad, definitivamente me equivocaría al ir más lento. Por supuesto, eso se basa en cómo trato de explicar las cosas (es decir, demasiado rápido). Como ya estás bastante avanzado, no me sorprendería que tengas la misma actitud. Tendrás que prestar mucha atención las primeras veces para descubrir si estás sesgado demasiado en cualquier dirección, no quieres aburrir o perder a las personas, pero ten cuidado especialmente de ir demasiado rápido.
Es probable que las personas se confundan con cosas que le resulten fáciles o completamente evidentes. Cuando presenté Java por primera vez, resultó que modificar las variables no era intuitivo para todos, lo cual no esperaba. En todo caso, esas preguntas son más probables porque probablemente no pasará suficiente tiempo en estos temas. No te preocupes demasiado por eso. Honestamente, nunca estoy seguro exactamente cómo responder preguntas como esa; Si no puedo pensar en otra cosa, solo trato de reformular mi explicación. Funciona sorprendentemente bien.
Personalmente, no soy un gran admirador de la tarea. Un buen enfoque es tener un problema de programación relativamente pequeño y autónomo en el que las personas puedan trabajar con lo que saben. Idealmente, trate de hacerlo abierto para que cualquier persona realmente entusiasta pueda hacer algo genial con un poco de esfuerzo extra. Sin embargo, no esperaría que todos trabajen demasiado en nada durante la semana, por lo que no pondría demasiado énfasis en ello.
Organizar todo en torno a algunos proyectos pequeños y medianos es probablemente una buena idea. Lo hará más divertido para todos y permitirá que las personas cementen lo que están aprendiendo al usarlo. Si no te importa desviarte de las bibliotecas para hacer cosas como dibujar, puedes hacer algunas cosas geniales.
Para muchos temas, hacer dibujos y visualizaciones realmente ayuda. La mayoría de los maestros y profesores que he tenido no lo hacen lo suficiente. Es una excelente manera de darle vida a un ejemplo. Utilice una pizarra o, mejor aún, mejore con SVG o LaTeX (aunque esto requiere un poco de esfuerzo por adelantado).
No se me ocurre nada más que agregar. Y siga mi consejo con un grano de sal: no tengo mucha experiencia enseñando a mí mismo, y sobre todo no estudiantes de secundaria.
Como comentario, escribí la segunda mitad de esta respuesta cuando estaba realmente cansado, y se nota. Tiene un efecto mucho mayor en mi escritura de lo que pensaba, lo que en su mayoría no noto cuando realmente estoy escribiendo.