Voy a estar involucrado con una especie de 'día abierto' en mi universidad en unas pocas semanas. Como parte de este tiempo, a mí (junto con un compañero de trabajo) me dan un montón de estudiantes de secundaria durante dos horas, así como un laboratorio de computación lo suficientemente grande como para contenerlos a todos, y tengo que hacer algún tipo de actividad o conjunto de actividades con ellos para alentarlos a hacer informática (en mi universidad, idealmente, pero en general también). Estoy totalmente perdido en cuanto a qué hacer aquí, y agradezco cualquier sugerencia.
40
Respuestas:
fuente
Echa un vistazo a Computer Science Unplugged . Desde su sitio:
fuente
La mayoría de los estudiantes universitarios de informática que conozco consideran que aprender a programar es la parte más dolorosa y desmoralizante de su educación. Por lo tanto, me mantendría alejado de todo lo que tenga que ver con la programación misma. Como ya señaló scphantm , probablemente tampoco tendrás tiempo para esto.
Lo que buscas es un ejercicio de dos horas que satisfaga dos objetivos:
El primer objetivo es bastante independiente de lo que realmente va a mostrar y tiene mucho más que ver con ser un buen maestro / presentador. Buena práctica didáctica, es decir, mantener a su audiencia alerta, permitiéndoles probar cosas pequeñas en grupos, dándoles un respiro cada 15 minutos, y así sucesivamente.
El segundo objetivo es un poco complicado, y lo que creo que funciona mejor aquí es tomar un problema que se puede explicar con su conocimiento actual, mostrar cómo se puede describir la solución algorítmicamente y luego mostrar cómo se puede analizar esa solución y mejorado
Un buen ejemplo es el problema de la ruta más corta en los gráficos, también conocido como sistema de navegación GPS. No se necesita explicación. Puede darles un pequeño mapa con pesos de borde / longitud dibujados y un montón de lápices de colores para ejecutar el algoritmo tal como lo describe.
Luego puede comenzar una discusión sobre cómo encontraría el camino más corto, y así sucesivamente, deje que intenten formularlo como un algoritmo, etc. Luego describa el algoritmo de Dijkstra , permitiéndoles colorear los nodos como visitados , tentativos y Conjuntos no visitados . Bam ¡Tienes un algoritmo!
fuente
Si solo tiene 2 horas, no obtendrá mucha codificación. Solo aprender la sintaxis será difícil en ese momento, pero hay muchas cosas que se pueden hacer en su lugar.
Como sugerencia, intente enseñarles a controlar el flujo y la importancia de ser específicos:
Como tarea de ejemplo, instale algunas cubetas de bolas de diferentes colores, con tiras de papel de colores correspondientes en otros lugares y suficientes cubos pequeños para cada par de robot / programador. La tarea es hacer que el robot llene el balde con bolas, sin embargo, para hacerlo solo pueden tomar bolas que coincidan con una tira de papel específica. Si no hay más bolas de ese color en una tina, entonces el robot debe devolver su tira de papel y recoger una nueva.
Esta tarea requiere ramificación condicional, bucles, manejo de errores y pensamiento continuo. Todas las cosas en las que un programador necesita ser bueno, independientemente del idioma o la actividad.
Ejecute algo como esto dos veces para que los "robots" y "programadores" puedan intercambiar. En el medio, dé una pequeña lección sobre los patrones de pensamiento anteriores, y se desempeñarán mucho mejor en el segundo, cierre con una pequeña charla sobre los grandes eventos en la programación: derrotar a los nazis, ir a la luna, a Internet y ¡tendrás una sala de programadores potenciales y comprometidos!
fuente
He entrenado a muchos programadores. Si todo lo que tiene son 2 horas, no se moleste en enseñarles cómo codificar. El laboratorio de computación también es innecesario. Para ir de cero a hola mundo, perderás la mitad de la clase y pasarás una hora y media de tus 2 horas lidiando con problemas técnicos y no harás nada.
Es posible que tenga más suerte mostrándoles lo que es pensar como un programador. Déles a cada uno un bloc de papel y un bolígrafo y pídales que escriban un programa en su propio idioma sobre cómo levantar su teléfono celular del escritorio y hacer una llamada telefónica. Camina a través de sus respuestas. Si te gusta mucho el código, puedes pasar por sus programas y decirles cómo mejorarlos y cómo acomodar los detalles que necesitas tener. Luego pídales que escriban un programa en sus propias palabras para hacer algo más mundano. ponte los pantalones, cepíllate los dientes, abre una puerta, lo que sea. Haz lo mismo con ese programa.
Dales una idea de lo que es PENSAR como un programador. Ciertamente obtendrán más de eso que tratar de enseñarles Python en 2 horas.
fuente
Podrías probar con Alice . Es un IDE y API para animación 3D. Tiene todo tipo de objetos incorporados (conejos, extraterrestres, árboles, edificios, ...) que puedes colocar en una escena inicial, con métodos de muy alto nivel: como
walk(north)
(que anima los brazos y las piernas mientras el personaje se mueve) ysay("my name is Winky")
que podría hacer que salga una burbuja de dibujos animados de la boca de los personajes.Le permite conectar eventos de teclado y mouse para que pueda hacer cosas que sean interactivas.
El lenguaje de programación subyacente es Java, pero el IDE le ofrece una variante gráfica en la que arrastra y suelta partes de expresiones en una ventana del editor. (No le permitirá crear un error de sintaxis).
Creo que se puede configurar todo con una escena para que alguien sin experiencia en programación pueda hacer algo interesante en solo un par de horas.
fuente
La codificación, incluso en un juguete o lenguaje gráfico, parece descabellada en el transcurso de una hora. Demonios, no estoy seguro de poder volver a buscar a Alice y hacer algo que valga la pena en 2 horas. Tal vez un fin de semana, pero no 2 horas.
Sugeriría reducir CS a lo esencial: resolución de problemas y análisis. Divide al grupo en equipos. Tómese 10 minutos para describir algunos problemas computacionales de alto nivel. Estos deberían ser problemas fáciles que pueden explicarse fácilmente a las personas con poca experiencia matemática o CS. Ejemplos incluyen:
Tómese otros 10 minutos para más discusión y para explicar la tarea. A cada grupo se le asigna un problema, para el cual deben realizar una lluvia de ideas de soluciones. El equipo tendrá media hora para resolver en colaboración una solución o soluciones para el problema asignado. Luego, tómese una hora para repasar las soluciones en todo el grupo y deje que los niños descubran si funcionan o no, si hay una manera más rápida / mejor de resolver el problema, etc.
Si los niños no llegan a una solución correcta / óptima, está bien. Sin embargo, no solo dé las respuestas, esto es absolutamente crítico. La razón por la cual los niños ya no hacen STEM es porque los educadores les dan la impresión de que todo ya está resuelto. Se necesitarán consejeros muy maduros para permitir que los niños intenten resolver estos problemas y tengan éxito o fracasen solos. Obtener la respuesta correcta no es el punto. El punto es darles a los niños problemas interesantes y mostrarles de qué se trata la informática: resolver problemas y evaluar soluciones para su corrección y eficiencia. Permitir que los niños presenten sus propias respuestas les dará un sentido de propiedad y les ayudará a sentirse comprometidos.
Por supuesto, si los niños preguntan si obtuvieron una respuesta correcta / buena / mejor conocida, diles la verdad. Pero no solo revele las respuestas, a menos que surjan orgánicamente como resultado de discutir las soluciones de los estudiantes. Para resumir:
fuente
Ahora tengo 17 años y comencé a programar en el momento en que cumplí 16. Voy a contar mi historia y luego hacer algunas sugerencias: mi interés en la programación comenzó cuando estaba viendo a un técnico en informática al que llamé con mis registros y el símbolo del sistema ( a pesar de que quería 500 $ para arreglar mis BSOD y no pagué, los arreglé por mi cuenta) Así que busqué en Google "lenguaje de símbolo del sistema" y descubrí que había algo llamado "código fuente" y me permitió programar . En ese momento no tenía idea de qué era C ++, ni siquiera creo haber oído hablar de él. Así que entré en cpp.com (tutoriales muy malos, aprenderás prácticas malas y desactualizadas) y comencé a aprender lo básico. Mi mente se volvió loca y realmente aprendí que el virus con el que estaba infectado causando mis problemas estaba escrito en c ++, lo que me interesó aún más. Más tarde comencé a leer, aprender ensamblaje y otros idiomas de alto nivel. Primero comencé a querer aprender sobre el malware y la programación de Gráficos y lo hice.
Lego Mindstorms es una gran idea. Si no desea tomar la ruta larga y usar un idioma principal, viene con un lenguaje de programación de estilo de bloque que puede usar. Descubrí el idioma en unos 30-40 minutos, todo se alinea cuando lo piensas
Puede desarrollar rápidamente una aplicación y mostrarla, hablar con ellos sobre el $$ que puede provenir del desarrollo de la aplicación.
fuente
algunos de mis favoritos
generando fractales . tienen un fuerte vínculo con las matemáticas profundas y los gráficos por computadora, y también son naturalmente aptos para el paralelismo. ilustra la complejidad y el comportamiento emergente , especialmente cuando se acerca a escalas arbitrarias, y tiene fuertes vínculos con la ciencia y los fenómenos naturales. No es difícil escribir un código fractal paralelo que se ejecute en varias máquinas. un experimento es hacer que cada máquina muestre las líneas aleatorias que procesó (por ejemplo, máquinas "esclavas" que procesan líneas desde una cola) y luego una máquina central muestra los resultados combinados.
robótica de lego (u otros kits de robótica, por ejemplo, sello ). Mindstorms es un juguete, pero puede ser uno muy avanzado que sirve como una demostración tangible de conceptos abstractos. el software que se puede ejecutar en ellos puede ser muy complejo y pueden tener complicados bucles / algoritmos de sentido-pensar-actuar. Hay muchos buenos libros de construcciones. También son impresionantes los solucionadores de cubos Rubik , que recientemente rompieron el récord mundial.
raspberry pi es una nueva plataforma económica que está teniendo mucho interés y uso. se puede utilizar para demostrar la programación de Linux, la robótica, etc., y tiene salida HD, etc. Véase, por ejemplo, la supercomputadora Southhampton raspberry pi con un bastidor Lego.
El logotipo como se menciona en la otra respuesta es un viejo clásico. Otro ángulo nuevo es la programación de juegos, por ejemplo, con un nuevo lenguaje popular emergente llamado Scratch (inventado en el MIT ). Puede enseñar muchos temas de CS naturales / avanzados.
fuente
Heres otro ángulo. Hay tantos problemas abiertos interesantes o tecnologías emergentes en informática en las fronteras de la comprensión científica que pueden despertar curiosidad / asombro, es decir, la exploración de terra incognita cercana . Si plantea los problemas y luego hace que la clase participe en una discusión sobre las ramificaciones de las soluciones, eso puede despertar un gran interés / inspiración. [dado que usted menciona la disponibilidad del laboratorio de computación, también sería posible idear creativamente algunos ejercicios prácticos relacionados con estas áreas.]
Esto puede asumir una sensación de ciencia ficción, pero en CS como ningún otro campo, convierte lo que una vez fue ciencia ficción en realidad en un corto período de tiempo. También pueden ser controvertidos y oportunos, conectarse con los titulares de hoy, y los estudiantes pueden comenzar a comprender cuán ubicuo es CS en nuestro mundo / sociedad, y cuán significativo es, cuando se interpreta de manera amplia. Aquí hay algunos grandes:
Problema de plegamiento de ADN a proteína . ¿Hay un algoritmo para calcularlo con precisión?
inteligencia artificial en general. ¿Es posible? ¿hay ética involucrada?
La robótica tiene varias áreas emergentes clave. por ejemplo, autos autónomos / conducción . Está en el horizonte nearterm. ¿Cómo afectará esto a la sociedad? El video del concurso DARPA de hace no mucho tiempo es impresionante. La escritura de Kurzweil tiene muchas cosas en las que entrar. Los drones son un tema complicado que rara vez se discute abiertamente y se usarán cada vez más en el país. Los rovers de Marte son una tecnología extraordinaria y hay historias asombrosas detrás de esto, como la forma en que los sistemas tuvieron que ser depurados remotamente, interplanetariamente cuando fallaron.
Los sistemas de vigilancia basados en TI para detectar delitos / terrorismo están en las últimas noticias.
el bosón de Higgs no podría haberse descubierto y el supercollider no puede funcionar sin grandes sistemas basados en CS para analizar los "grandes datos".
La ley de Moore . ¿Hasta dónde va a continuar? ¿Cuánto ha afectado ya a la sociedad / humanidad?
Computadoras cuánticas . son posibles? ¿serán más rápidos? ¿serán de bajo costo o siempre desaliñados? Dwave es un estudio de caso colorido, hay un gran artículo de SciAm de Aaronson, etc.
El algoritmo de pagerank de Google es una de las maravillas multimillonarias de la informática moderna. ¿se extenderá? ¿Cómo funciona el filtrado de spam? la empresa parece estar avanzando hacia el análisis de imágenes, etc.
El comercio algorítmico / de alta frecuencia ahora mueve cantidades masivas de volumen / valor comercial. ¿Es bueno / malo? ¿Está aumentando / disminuyendo? ¿Será regulado en el futuro? ¿Qué tipo de carrera armamentista computacional está involucrada?
Las supercomputadoras son enormes, resuelven problemas asombrosos y se hacen más grandes. ¿hay límites? ¿Qué calculan y qué calcularán en el futuro? algo relacionado, Big Data y minería de datos .
Los sitios de redes sociales han tenido enormes implicaciones en menos de una década de crecimiento. están involucrados en alimentar levantamientos populares, por ejemplo, la primavera árabe y la calle Occupy wall . cual es su futuro
fuente
Tengo una proposición que
Hemos estado realizando pequeños talleres con estudiantes de secundaria sobre Buscaminas . El taller sería más o menos así:
Juguemos un poco al juego (la mayoría lo sabe).
¿Qué acabamos de hacer? ¿Cuál es el problema que intentamos resolver? ¿Podemos formular reglas generales?
Esto generalmente tomará un tiempo. Los niños no están acostumbrados a formular problemas en términos de entrada y salida, no sea por reglas generales para resolverlos. Aquellos que hayan programado antes apreciarán el esfuerzo; hacer referencia al "código de espagueti" puede ayudar. Sin embargo, las reglas serán simples la mayor parte del tiempo, considerando solo una celda a la vez.
Exhibir problemas con las reglas.
En este punto, desea presentar un simulador de Buscaminas . El de Bayer, Snyder y Chouiery no es perfecto, pero le permite exhibir escenarios cuidadosamente diseñados.
Mejore el conjunto de reglas para cubrir más escenarios.
Esto generalmente llevará a los estudiantes a investigar más y más células juntos. También puede empujarlos hacia enfoques de "resolver todos", como expresar la información en cuestión como un sistema de ecuaciones lineales; esto surge si intenta expresar la información disponible en términos matemáticos. ¡Los estudiantes ya saben cómo resolver tales sistemas!
Tenga en cuenta las limitaciones.
Primero, hay escenarios que no tienen una solución (determinista). Además, podemos contrastar la fuerza bruta con nuestras estrategias desarrolladas. ¿Podemos intercambiar velocidad contra potencia? Si aparece el enfoque del sistema de ecuaciones, tenga en cuenta que solo podemos resolver esto de manera eficiente sobre los reales, pero necesitamos respuestas binarias. No es demasiado difícil construir escenarios que conduzcan a tiempos de ejecución enormes (utilizamos el álgebra computacional para ilustrar).
Dependiendo del grupo, este enfoque permite cubrir múltiples principios de la ciencia de la computación de una manera natural: definir problemas, describir algoritmos generales, resolver problemas iterativos, así como también problemas de computabilidad y complejidad.
La retroalimentación de los estudiantes ha sido en general positiva; se sienten comprometidos y expresan interés en los conceptos. Es importante dejar que hagan la mayor parte del trabajo, solo empujándolos cuidadosamente en la dirección deseada haciendo preguntas puntuales.
fuente
tienes muchas cosas que hacer ... pero una cosa que parecería tan emocionante como "dinero", así que presenta la pregunta "P ≠ NP" y el premio de los siete milenios, cuando estaba en la escuela secundaria lo leí, aunque no sabía las anotaciones lo único que entiendo: ¡hay un gran premio y una pregunta! otras cosas serían presentar la conexión de las matemáticas y la informática como: resolver ecuaciones, verificar soluciones usando computadoras.
Otras cosas que sugeriría es presentar a Alan turing "el padre de la informática" y contar su historia. Lo último que sugiero es cero pruebas de conocimiento y el juego "¿Dónde está Waldo?" y jugando sin trampas y criptografía y ataques cibernéticos.
fuente
Haz cualquier cosa con Facebook, les encanta. Tal vez esto sea demasiado difícil para los principiantes, pero podría permitirles dibujar gráficos de conexiones, que muestren cómo sus perfiles están conectados entre sí. Recomendaría Javascript como lenguaje de programación.
fuente