¿Cuáles son algunas ideas únicas sobre cómo los niños aprenden a codificar, y cómo pueden esas ideas ayudar con la enseñanza?

Aporto un punto de vista semi-único a este problema, creo, debido a las siguientes razones:

  • Como tutor, enseño a personas que simplemente no obtienen programación, ya sea por falta de interés o por un estilo de aprendizaje que no se alinea con los métodos de enseñanza actuales.
  • Como tengo problemas de aprendizaje, el sistema educativo me rechazó, lo que me consideró incapaz de comprender algo tan complejo como la programación, aunque aprendí a programar antes de aprender a leer debido a los mismos problemas de LD.

Me pregunto si los “niños” menores de 10 u 11 años deberían aprender a codificar y, de la misma manera, si la programación debería ser necesaria en el nivel K – 12. Discutiré estos dos temas al final de mi respuesta, que se centrará en cómo enseñar a los alumnos “lentos” mayores de 11 años. A continuación se presentan algunas razones por las cuales a muchas personas les resulta difícil aprender a programar:

  • Bloques mentales sobre qué es la programación, qué no es y los requisitos previos para la programación
  • Demasiada automatización de algunas materias académicas (p. Ej., Uso de una calculadora para hacer matemáticas) y poco énfasis en el pensamiento crítico riguroso.
  • La creencia errónea de que aprender “cómo programar” es un reemplazo para las 3 R y la alfabetización informática básica (saber cómo, cuándo y por qué usar computadoras y para qué)
  • Confundir datos en bruto para obtener información
  • Falta de vincular la abstracción de la programación con la vida real

Muchos creen erróneamente que debido a que las computadoras piensan en números en los niveles más bajos, la programación requiere matemáticas, aunque la mayoría de las tareas de codificación de nivel de entrada no requieren matemáticas.

La informática hardcore está realmente orientada a las matemáticas. Pero al escribir un programa para consultar o actualizar la base de datos de Quora, por ejemplo, las matemáticas no tienen casi nada que ver con eso.

La programación requiere el tipo de pensamiento lógico que se encuentra en las matemáticas, pero no las matemáticas en sí. A nivel universitario, es completamente incorrecto decir que la programación requiere cálculo, cuando de hecho el cálculo se usa solo en “cálculo de números” (computación científica) y gráficos. Vea la respuesta de Marcas Neal a ¿Cuál es la forma más rápida para que un estudiante de informática moleste a un programador / ingeniero de software que trabaja?

Todo lo que se necesita para ser un programador es pre-álgebra, es decir, la comprensión de fórmulas simbólicas. Esta es la razón principal por la que digo que la mayoría de la gente no está lista para ser programadora antes de los 10 u 11 años. Incluso aquí, la idea esencial es que puede usar símbolos para representar valores concretos.

Uno de los problemas a los que me enfrento a menudo al dar clases a estudiantes universitarios, específicamente en los niveles de segundo / tercer nivel de cuatro años y en colegios comunitarios, es el conocimiento general de matemáticas que es suficiente para la aritmética, pero insuficiente para comprender realmente cómo funciona la matemática.

En los niveles superiores, la racionalización de algunas matemáticas de la escuela secundaria causa problemas. Por ejemplo, enseñé a alguien que aprobó AP Computer Science en x86 Assembly pero, sin embargo, no pudo convertir decimal a hexadecimal y luego a binario.

Después de 15 minutos de intentar todos los métodos de enseñanza que conocía, descubrí que el estudiante no tenía el concepto de los restos de una división larga. El estudiante nunca había hecho la división a mano, sino solo en una calculadora.

Debido a que el estudiante no tenía idea de que el dígito para cualquier posición dada era el módulo (resto) después de dividir el número decimal por 16 (o cualquier base a la que se esté convirtiendo), tuve que pasar los siguientes 15 minutos enseñando la habilidad de largo división a mano.

Otro problema común es un esfuerzo por incluir el cálculo en el plan de estudios de la escuela secundaria. Esta es una mala idea, en mi humilde opinión. Se han descartado conceptos importantes de otras clases, como descartar geometría basada en pruebas en favor de clases que enseñan los resultados de las pruebas, pero no las pruebas en sí mismas.

Si bien las pruebas en sí mismas no son tan importantes, el riguroso pensamiento lógico que requieren es la piedra angular de la programación y es, quizás, la lección individual más importante para toda la vida que la programación tiene que enseñar.

Otro problema con la enseñanza de la programación aislada es la idea errónea de que construir un programa para ejecutar alguna tarea es el fin de todo, cuando saber cómo y cuándo debe automatizar es más importante.

Por ejemplo, un énfasis excesivo en los algoritmos de enseñanza puede ocultar el problema de para qué sirven los algoritmos y cuándo.

Por esta razón, lo principal que debemos enseñar en todos los niveles de grado es cómo pensar sobre el mundo: cómo buscar patrones. También es muy importante: pensamiento crítico sobre qué puede y debe automatizarse versus qué no puede y no debe automatizarse.

Esta es la razón por la cual la mayoría de las instrucciones de programación no deben realizarse frente a un teclado o incluso con una computadora a la vista. En cambio, deberíamos enseñar a los estudiantes a buscar patrones comunes en el mundo real, y una vez que decidan que estos patrones son “fáciles” de automatizar, deberíamos enseñarles cómo traducir ese patrón en un algoritmo.

Codificar ese algoritmo es relativamente fácil; Es el algoritmo el que es más difícil de entender.

Ayude a los estudiantes a mirar las cosas que les interesan desde un ángulo diferente. Si a él le encantan las Torres de Hanoi, algo que se puede traducir directamente en un algoritmo elegante, deje que su estudiante juegue con un modelo real de las Torres, utilizando 5 o 6 discos. Deje que el estudiante lo aborde con la solución que considere mejor.

Pídales a los alumnos que piensen por qué hacen cada movimiento, asignándoles la tarea de redactar un conjunto de reglas: una “hoja de trucos” para usar como referencia cuando intenten resolver el rompecabezas.

Si los estudiantes se quedan atascados, pregúnteles cómo resolver el problema con menos discos, hasta que puedan hacerlo mientras duermen. Luego reescalar. Estoy seguro de que propondrán alguna variante del algoritmo estándar.

Dígales a los estudiantes que investiguen cómo otras personas resolvieron el problema. Finalmente, pídales que escriban el código, mostrándoles que solo se trata de escribir y depurar en el último momento, ya que todo el trabajo duro ya se ha hecho. Vea la respuesta de Marcas Neal a ¿Cómo funciona el diseño de algoritmos?

Entonces, ¿por qué me pregunto si deberíamos enseñar programación, en lugar de enseñar a los estudiantes cómo ser usuarios avanzados?

No estamos a fines de la década de 1970, una era en la que había una grave falta de software. Ahora tenemos lo contrario: un exceso de software. No necesitamos 8 mil millones de programadores, especialmente teniendo en cuenta lo fácil que es usar la mayoría de las computadoras en este momento.

Necesitamos personas que puedan pensar críticamente sobre la informática.

El conocimiento del proceso subyacente de la programación ayuda, pero no es obligatorio. Aquí está lo fundamental para enseñar: hasta que llegue a la persona adecuada, específicamente en una forma en la que pueda actuar, los datos sin procesar son solo datos sin procesar. Entonces y solo entonces se convierte en información.

Para responder a esta pregunta, creo que es importante considerar esto primero: ¿por qué es importante que los niños aprendan a codificar en primer lugar? Agregar un tema completamente nuevo al plan de estudios principal es una tarea enorme y requerirá un nivel tremendo de inversión: no tenemos una infraestructura real para la capacitación de los maestros, el plan de estudios, las pruebas, etc. ¿Por qué esto es tan importante que las ciudades están comenzando a exigirlo? como Nueva York y Chicago), y ¿por qué el presidente Obama ha dedicado $ 4 mil millones a ampliar el acceso a la informática en todo el país? Seguramente no necesitamos una nación entera de ingenieros de software.

Hay dos razones principales por las que puedo pensar que, cuando se consideran, deberían dictar cómo abordamos la enseñanza de los estudiantes.

  1. Pensamiento crítico : los beneficios de la educación van desde lo social a lo cultural, etc. Pero, en lo que respecta a la educación, lo más importante que debemos enseñar es el pensamiento crítico. Y la mayor parte de lo que hacemos conduce a eso de diferentes maneras, desde la escritura hasta las matemáticas. Pero la codificación nos brinda la oportunidad de impartir habilidades de pensamiento crítico al tiempo que involucra a los estudiantes de maneras completamente nuevas y convincentes. Los niños se involucran naturalmente con la tecnología ( léase: aman Internet) . Nuestra mejor esperanza para la educación es conectar las lecciones con las pasiones de los estudiantes. La codificación abre esa puerta si no es por otra razón que no sean atraídos por la tecnología.
  2. Empleo: si bien no necesitamos una nación de ingenieros de software, estamos entrando en un mundo en el que cada trabajo se está volviendo de naturaleza técnica. Los periodistas tienen una tremenda ventaja si pueden visualizar datos en la web. Los contadores y profesionales de finanzas que pueden construir sus propias macros son significativamente más productivos que otros. Es difícil imaginar que habrá muchos especialistas en marketing que no puedan lanzar una página web simple, personalizar una plantilla de correo electrónico o consultar una base de datos SQL. La exposición a la codificación no se trata necesariamente de un futuro en la ingeniería de software, sino de un futuro en cualquier cosa.

Dados estos objetivos principales, o los beneficios de codificar la educación a una edad temprana, la forma en que debemos abordar la enseñanza se vuelve clara.

Primero, necesitamos cambiar el currículo. El plan de estudios más ampliamente aceptado para enseñar codificación en K-12 es AP Computer Science. El AP cubre conceptos que son críticos para una carrera en ingeniería de software. Es esencialmente el primer 5% de un título en informática. Pero nuestro objetivo no debería ser crear el 5% de una especialización en informática en la escuela secundaria. Nuestro objetivo debe ser inspirar a los estudiantes a enamorarse de este oficio. Desafortunadamente, la AP falla miserablemente a ese respecto. Haga una búsqueda rápida en la imagen de Google para “Hoja de trucos de AP Computer Science” y encontrará resúmenes de un plan de estudios que probablemente asuste a más estudiantes de la informática de lo que atrae.

Si buscamos inspirar a los estudiantes mientras nos enfocamos en el pensamiento crítico y les damos una base para futuras carreras, lo que deberíamos enseñar es claro: la web. Los lenguajes de programación modernos como python y ruby ​​nos permiten enseñar conceptos clave como el looping y las estructuras de datos, pero conllevan algunas ventajas distintas:

  • Lógica sobre sintaxis: aprender a codificar es difícil. Para lo que esperamos lograr, deberíamos centrarnos en enseñar a los estudiantes cómo pensar como programadores, en lugar de hacer que se preocupen por los espacios y los corchetes. Así es como se escribiría un simple programa “Hello World” en Java

clase pública principal {
public static void main (String [] args) {
System.out.println (“¡Hola, mundo!”);
}
}

Este es “Hola Mundo” en Ruby-

pone “¡Hola, mundo!”

Si queremos que los estudiantes adquieran habilidades de pensamiento crítico, debemos dejar que se concentren en el pensamiento, no en la sintaxis.

  • Relevancia: una pregunta bastante común de los estudiantes en cualquier clase sobre casi cualquier tema es “¿por qué tengo que aprender esto? Nunca lo voy a usar”. Es uno que los maestros tienen que trabajar duro para superar con el uso de metáforas, analogías, historias. Al aprovechar la web, podemos crear un ciclo de retroalimentación inmediata en el que los estudiantes pueden ver el resultado de su trabajo y cómo se traduce en habilidades relevantes.

En segundo lugar, necesitamos capacitar a los maestros para que enseñen código. En Flatiron School siempre hemos tenido el mantra de que es más fácil enseñarle a un maestro cómo codificar, que enseñarle a un programador cómo enseñar . Esto no debería ser una gran sorpresa: no buscamos matemáticos, novelistas y químicos para enseñar matemáticas, inglés y química en la escuela secundaria. Sin embargo, en lo que respecta a la codificación, por defecto buscamos ingenieros e intentamos reclutarlos para que sean voluntarios o enseñen a tiempo completo. Es probable que esto no solo sea ineficaz (para empezar, compare los salarios de los docentes con los de los ingenieros de software), toda la noción devalúa el oficio de enseñar hasta el punto de faltar el respeto. Esperar que un ingeniero de software pueda recibir un poco de capacitación y llenar los zapatos de un maestro profesional tiene tanto sentido como que un maestro reciba horas equivalentes de capacitación y voluntariado como ingeniero de software profesional. La enseñanza es una profesión increíblemente difícil que requiere años de capacitación y dedicación. Si bien no podemos esperar que los maestros dominen la codificación suficiente para comenzar carreras como ingenieros, sí podemos proporcionarles la capacitación técnica necesaria para enseñar de manera efectiva en las aulas. Esto requerirá una tremenda inversión no solo para crear estos cursos, sino también para dar a los maestros el tiempo y los recursos necesarios para aprender. Pero si no estamos dispuestos a invertir en maestros, hemos perdido la batalla antes de que comenzara.

Tercero, deberíamos estar optimizando para una experiencia de aprendizaje colaborativo . Hay muchos argumentos excelentes para esto en muchos temas, pero hay una enorme cantidad de complejidad inherente en cambiar un sistema existente. En lo que respecta a la codificación, comenzamos con una pizarra en blanco. Podemos diseñar un entorno de aprendizaje desde cero. Y al pensar en esa experiencia, deberíamos considerar más cómo enseñamos arte y música que cómo enseñamos matemáticas y ciencias .

Si nuestro objetivo es preparar a alguien para una especialización en ciencias de la computación, podemos estar más inclinados a reflejar esa experiencia. Pero ese no es el caso. Queremos construir un sistema que inspire a los estudiantes a aprender de manera que adquieran habilidades relevantes y agudicen sus habilidades de pensamiento crítico. Ambas cosas se hacen mejor en equipos. Abordarlo como algo más que un deporte de equipo sería como preparar a una estudiante para tocar en una sinfonía haciendo que practique el violín sola en su habitación.

Finalmente, sería negligente no mencionar los desafíos existentes para atraer a diversos estudiantes al tema. Hay problemas claros y sistémicos que alejan a los estudiantes, especialmente a las niñas, de los campos de STEM a una edad temprana. Esos problemas deben abordarse desesperadamente (intentamos hacer nuestra parte en la escuela Flatiron con programas como la beca Kode con Karlie). Pero siempre que tratemos la codificación como una variante de las matemáticas centrándonos más en los algoritmos que en la resolución creativa de problemas, infundiremos este tema nuevo y potencialmente interesante con todo el equipaje que actualmente aleja a ciertas poblaciones de STEM.

Esta respuesta es una repetición de mi respuesta a la respuesta de Jayesh Lalwani a ¿Por qué algunas personas muy inteligentes apestan en la programación? que apareció en la Antología Quora. La respuesta realmente pertenece aquí, así que voy a reescribirla aquí

Me enseñé a programar cuando era niño. La programación fue muy natural para mí. Intentaba enseñar programación a otros niños y no podía entender por qué no podían hacerlo. La programación parece ser una extensión natural de cómo pienso. ¿No todos piensan lo mismo? No, ellos no. Me tomó solo unos 25-30 años más darme cuenta de lo que hace que un programador, y parte de eso vino cuando traté de enseñarle a mi hijo a codificar cuando tenía 6 años.

Code .org tiene este programa llamado Hora de código. En este sitio, un niño puede ir y básicamente hacer su propio juego. En este momento, tienen juegos temáticos de Star Wars y Disney. En aquel entonces, tenían un juego temático de Angry Bird. El objetivo del juego es hacer que el personaje principal haga algo … usando código. En el caso de los pájaros enojados, el pájaro tenía que alcanzar el huevo. El juego tiene etapas, y cada etapa introduce un nuevo concepto y también se vuelve progresivamente más difícil. Entonces, en la primera etapa, haces que el pájaro vaya recto unos pocos pasos. En el siguiente, lo haces ir a la izquierda. En el siguiente lo haces a través de una curva en S. Sigue progresando hasta que entiendes los bucles. Qué maravillosa manera de aprender programación. ¡Todo lo que tenía era ZX Spectrum Basic y declaraciones Goto!

Ahora, mi hijo no es el más inteligente de la clase. Pero él es bastante inteligente. Obtuvo el percentil 74 en las pruebas estandarizadas que realizó en la escuela. No es un genio, pero está en el grupo inteligente. La primera etapa fue bastante fácil. El pájaro tiene que avanzar 5 pasos. ¿Cómo puedo hacer eso? Ahh hay un comando mover 1 paso. Envía el comando mover 1 paso 5 veces. ¡Bueno! Luego, el siguiente nivel fue que el pájaro tenía que avanzar 3, girar a la izquierda y luego mover 2. ¿Cómo giro a la izquierda? Ahh hay un comando de giro a la izquierda. Envíe el comando mover 1 paso 3 veces, gire a la izquierda 1 vez y mueva 1 paso 2 veces. ¡Éxito! Una de las cosas importantes que un programador tiene que aprender es dividir una tarea en pasos más pequeños . Estaba bastante claro que podía hacer eso.

Ahora, el pájaro tenía que moverse 3 pasos, a la izquierda y luego 2 pasos. ¡Pero, no había un comando de paso a la izquierda! Se quedó atascado. ¿Cómo puede dar un paso a la izquierda cuando no hay un comando para hacerlo? Mira, sabía que podías dar un paso a la izquierda haciendo girar a la izquierda + avanzar + girar a la derecha . Simplemente no quería darle la respuesta. Entonces, le di una pista. Le pedí que intentara usar los comandos de girar y mover para dar un paso a la izquierda. Giró a la izquierda, avanzó 1 y luego se quedó atascado. Le pregunté por qué se quedó atascado. Me dijo que sigue diciéndole al pájaro que avance, pero el pájaro no avanza. Esto se debía a que el pájaro miraba hacia la izquierda y, desde la perspectiva del pájaro, avanzaba más hacia la izquierda. Sin embargo, desde su perspectiva en adelante estaba subiendo la pantalla. ¡Mira, estaba bien siempre que su perspectiva coincidiera con la del pájaro! Pero cuando diferían, estaba atrapado. Y es entonces cuando me di cuenta de que cada “tecnólogo”, que aunque comprende la tecnología, no puede programar tiene, en el fondo, el mismo problema, y ​​eso es …

Tienes que ponerte en el lugar de la computadora. Tienes que pensar como una computadora. Debe poder ver lo que ve la computadora, no lo que ve. Para los programadores, parece que muchos no programadores quieren que las computadoras lean sus mentes … y, en esencia, eso es lo que estaba haciendo mi hijo. Esperaba que el pájaro supiera que el delantero estaba arriba, no el izquierdo, porque pensaba que el delantero estaba arriba. Esto se debe a que no pudo cambiar su perspectiva hacia el pájaro, al igual que todos los que no son programadores no pueden cambiar su perspectiva hacia la computadora.

Los jugadores de videojuegos han experimentado esto de primera mano. Cuando juegas un juego de primera perspectiva, y en el juego un personaje te lanza algo, ¿qué haces? ¡Pato! Eso es lo que haces que haga el personaje. ¿Pero qué es lo que haces? Alguien que lo observe notará que su lenguaje corporal comienza a imitar lo que siente su personaje en pantalla. Los jugadores de Mario comienzan a saltar en sus asientos cuando realizan saltos difíciles. Los jugadores de juegos de carreras se inclinan inconscientemente hacia la izquierda cuando giran a la izquierda. Esto sucede porque la inmersión en el juego te hace cambiar tu perspectiva hacia tu personaje en pantalla. Sientes lo que siente tu personaje. Eres uno con el personaje. Tu eres el personaje.

Esto es exactamente lo que tiene que hacer cuando programa, también. Tienes que sentir lo que siente la computadora. Tienes que ser uno con la computadora. Eres la computadora *

* Bueno, técnicamente, nadie programa en un lenguaje que sea lo suficientemente bajo como para que realmente necesites ser la computadora. Está operando en una abstracción que está muy por encima de la CPU desnuda. Sin embargo, como parte del aprendizaje del idioma, debe crear un modelo mental de una computadora abstracta que comprenda los comandos en el idioma en el que está trabajando. Luego, debe poder cambiar su perspectiva hacia esa computadora abstracta.

A riesgo de sonar contrario, diría que no puedes aprender esta habilidad codificando. ¡No puedes estar bloqueando el código todo el día y entender esto! Ser capaz de cambiar su perspectiva en otra cosa viene como resultado de tener una imaginación. Y eso viene de leer libros, mirar televisión y jugar con muñecas y jugar videojuegos. Es todo lo que tus maestros te dicen que hagas. Leer libros. Piérdete en los libros. Cuando puedes ubicarte dentro del personaje de Harry Potter o Buzz Lightyear o Alice o Elsa, ¡aprendes a colocarte dentro de la computadora!

Un error que cometen muchos intentos de programar pedagogía es confundir la alfabetización de programación con las habilidades comercializables. La curva de aprendizaje asociada con la alfabetización de programación contiene muchos baches, correspondientes a puntos en los que los estudiantes deben dominar ideas que son varias veces más abstractas y matizadas que todo el material anterior para poder continuar. Las escuelas que intentan producir graduados capaces de realizar tareas específicas solicitadas por la industria pueden tener la tentación de permitir que los estudiantes salten obstáculos posteriores, con el resultado de que muchos graduados tienen un conocimiento superficial de tecnologías específicas pero carecen de una comprensión profunda que los ayudaría a tener éxito con cualquier tecnología (incluidas tecnologías que no están relacionadas con la computadora, como la retórica y la ley).

De la misma manera que las escuelas enseñan álgebra como ayuda para enseñar razonamiento simbólico, deberíamos enseñar programación como ayuda para enseñar la amplia variedad de habilidades con las que los programadores serios se sienten cómodos: seguir progresiones lógicas estrictas, pensar con precisión sobre problemas, planificar, identificación de reglas generales y sus excepciones, resolución de problemas, aprendizaje autodirigido y razonamiento sobre el comportamiento de mecanismos complejos. Dichas habilidades son comunes entre los programadores pero aplicables a casi cualquier carrera, e incluso dentro del dominio de la programación son mucho más importantes que los detalles de cualquier lenguaje o conjunto de software en particular.

Debido a que estas habilidades son sutiles y tardan tanto en desarrollarse, recomiendo que el material relacionado con la programación se enseñe de manera consistente durante todo el curso de la escuela primaria (de la misma manera que cualquier materia básica). Debido a que es fácil para los estudiantes y los maestros caer en la trampa de no generalizar las lecciones, recomiendo que cada año de instrucción se centre en un idioma diferente. (Durante los primeros años de instrucción, es razonable que el enfoque permanezca en acostumbrar a los estudiantes a la idea de escribir programas de computadora y que se sigan sus instrucciones. En los años 70, Jean Piaget tuvo buena suerte enseñando LOGO de primer y segundo grado. , y esta es la forma en que comenzaría también.)

Es importante que no subestimemos las habilidades de los jóvenes estudiantes de tal manera que eliminemos las oportunidades de aprendizaje e integración con otras materias. Como resultado, evitaría el uso de lenguajes de programación visual. Incluso los estudiantes jóvenes cuya capacidad de lectura es limitada pueden beneficiarse de la práctica de lectura y escritura asociada con un lenguaje de programación tradicional basado en texto, y dichos idiomas abren la puerta a los estudiantes que piensan e investigan la gramática y el lenguaje.

En la breve historia del campo, se ha creado una amplia variedad de lenguajes de programación, muchos de ellos específicamente destinados a niños. Pocos de estos idiomas se usan en la industria, pero esto puede ser algo bueno: los idiomas que aprendemos primero están asociados con hábitos tempranos de los que deberíamos salir, por lo que aquellos pocos estudiantes que terminan ingresando a la industria tecnológica estarán mejor preparados por exposición a doce o trece idiomas que nunca volverán a usar de lo que hubieran sido escribiendo código en el mismo idioma desde la primera infancia hasta su primer trabajo. Deberíamos aprovechar el rico dominio de los lenguajes explícitamente pedagógicos.

Así es como me imagino el curso perfecto de “introducción a la programación”: ¡cinco computadoras, diez niños, un instructor y cientos de páginas de código de juego roto!

  • ¿Por qué dos veces más niños que computadoras?
  • Esto se conoce como “programación de pares”: la idea de que dos personas que trabajan juntas en el mismo problema son más productivas que dos personas que trabajan de forma aislada en dos problemas.
  • Otra variación se llama “depuración del pato de goma”, donde explica el programa a un pato de goma en lugar de a una persona. El punto principal es que intentas articular tu razonamiento, lo que guía tu comprensión.
  • Enseña trabajo en equipo, que es una gran parte de la programación.
  • ¿Qué quieres decir con “páginas”? Árboles muertos?
  • Si. En realidad, escribir el código, incluso si aún no lo comprende, al menos le ayuda a tener una idea de dónde se encuentra. Simplemente copiar y pegar los ejemplos o incluso simplemente abrir un archivo no es lo mismo.
  • Para hacerlo más interesante, las hojas de papel se pueden ocultar debajo de los teclados, en la parte superior de los estantes, etc., por lo que primero debe encontrarlas.
  • ¡Permítales intentar averiguar si hay alguna conexión entre las palabras en el papel y qué tipo de juego será este!
  • ¿Por qué código roto ?
  • Debido a que los archivos vacíos dan miedo (a todos, no solo a los principiantes), mientras que un juego que casi funciona proporciona a ambos un punto de partida y un objetivo inmediato (arreglar el juego). Los juegos pueden ser de complejidad variable, y también pueden ser los errores que contienen; Si alguien se frustra con algo, debería tener la oportunidad de tratar de encontrar otro papel, potencialmente con un desafío más fácil.
  • Enseña responsabilidad social: cuando algo se rompe, comienzas a creer que probablemente puedas arreglarlo, ¡si lo intentas lo suficiente!
  • ¿Roto cómo?
  • De maneras que son inmediatamente obvias en la pantalla, y con suerte con efectos divertidos: por ejemplo, deje que el puntaje de un juego de dos jugadores baje en lugar de subir (usando menos en lugar de más), ¡así el mejor jugador pierde!
  • Tal vez arreglen el error, tal vez inventen diferentes estrategias para “ganar” la menor cantidad de puntos, tal vez incluso cambien el juego. Todas esas respuestas son válidas.
  • ¿Por qué el código del juego ?
  • Las ventajas son que es divertido y proporciona un fuerte bucle de retroalimentación, ¡pero el código del juego y la programación del juego son difíciles !
  • Sin embargo, esto puede compensarse parcialmente teniendo abstracciones excepcionalmente buenas. Creo que vale la pena inspirarse en Arduino IDE o Processing (o MIT’s Scratch).
  • Un sistema de ayuda intuitivo es imprescindible: señalar sobre algún elemento del programa debería proporcionar una muy buena explicación de lo que hace.
  • ¿Cuáles son los siguientes pasos?
  • Los documentos pueden permanecer en el aula y ser reutilizados por todos los estudiantes. Tal vez alguien dibuje algo en el suyo, o incluso escriba la solución, eso está bien, es parte de la historia del programa, ¡y no hay nada de malo en tener una pequeña posibilidad de encontrar un juego cuyo error está resuelto!
  • Si este “juego” continúa solo durante las primeras semanas o meses, puede seguir un curso tradicional de programación de computadoras (o ejecutarlo en paralelo), donde los componentes básicos de la programación se explican uno por uno.
  • La principal diferencia estará en la motivación de los estudiantes: si antes estaban aprendiendo porque pensaban que sería interesante o porque tenían que hacerlo, ahora es personal , ¡saben lo que quieren obtener del material y por qué!

La educación sobre códigos más impactante que he visto en mi carrera como instructor de programación y entrenador de maestros de CS no tiene nada que ver con el código . Tiene que ver con la cultura . Los maestros que pasan una cantidad significativa de tiempo desarrollando la cultura correcta en sus aulas son exponencialmente más efectivos una vez que llegan a enseñar contenido. Aquí hay algunas pautas prácticas para la cultura que he observado de los mejores maestros de todo el país:

Brinde a los estudiantes una hoja de ruta

Los estudiantes deben sentirse involucrados en los objetivos y la estructura del curso; muchos maestros sin experiencia se olvidan de hablar sobre la trayectoria de la clase por completo. Aprender CS es mucho menos desalentador una vez que sabes a dónde vas, por qué irás allí y cómo llegarás allí. Los sistemas y procedimientos deben desarrollarse temprano: ¿Cuándo deben cerrarse las pantallas de las computadoras portátiles? ¿Cómo se ve realmente la programación de pares? Cuando entro al aula todos los días, ¿qué debo hacer cuando me siento? Pase el primer día de clase repasando pautas, expectativas y objetivos.

Siempre conteste el¿ por qué?’

Un refrán común de los estudiantes en cada clase (independientemente de la materia) es “¿Por qué estamos aprendiendo esto?” O “¿Cuándo voy a usar esto en el mundo real?”. Los maestros de CS y codificación deben tener respuestas disponibles y deben incorporarlas en su lección. Cuanto más pueda mostrar a los estudiantes que lo que están aprendiendo está directamente relacionado con lo que los desarrolladores, investigadores y científicos de la computación están haciendo, en todas las industrias, obtendrán más aceptación. Cuando enseño matrices, por ejemplo, creamos y manipulamos un feed de Twitter, el por qué está integrado en la tarea.

Estamos todos juntos en esto

Los maestros que adoptan el enfoque de “Sé todo esto” para enseñar CS están condenados desde el principio. Esto se debe a que invariablemente alcanzarán una brecha de conocimiento (una pregunta, un error, etc.) y se avergonzarán frente a sus estudiantes. Siempre hay ese estudiante que puede codificar círculos. Animo a los maestros a declarar por adelantado que están aprendiendo junto con los estudiantes y explicar que la programación no se trata de conocer todas las respuestas, sino de hacer las preguntas correctas y saber dónde buscar para obtener respuestas. Si bien esto es aterrador para muchos maestros, parece que estás renunciando a la autoridad o el control, es muy efectivo. Los estudiantes se emocionan cuando sienten que están aprendiendo ‘con’ (en lugar de ‘de’) el maestro, y son mucho más indulgentes cuando el instructor llega a un obstáculo.

Celebra el fracaso y la colaboración

La construcción de una cultura en la que se celebra la toma de riesgos y el fracaso conduce a las aulas donde los estudiantes están más comprometidos y se desafían a sí mismos, en lugar de ser desafiados por el maestro. Eso significa un aprendizaje más reflexivo e impactante. Los estudiantes deben comprender que cada error que cometen es una oportunidad para mejorar, cada error es un regalo. Desarrollar una cultura de “mentalidad de crecimiento” es muy útil.

Los descansos cerebrales son importantes

Después de unos 30 minutos de intensa concentración, nuestros cerebros necesitan un descanso. Incluso si es solo por tres minutos, sacar a los niños de sus asientos y alejarlos de sus pantallas hará que su comprensión y amor por el código sea mucho más fuerte . Como un medio para construir cultura en Upperline, mejoramos con todos nuestros estudiantes: se ven obligados a abandonar sus zonas de confort, tienen que apoyar a sus compañeros y ver que cometen errores en un entorno donde ‘estamos todos en esto juntos ‘en realidad puede ser muy divertido. Todo esto en un descanso cerebral de 3 minutos.

Piensa en pensar

La codificación es un tema interesante para enseñar, porque nos lleva a pensar en pensar. Nos vemos obligados a desarrollar metacognición: ¿en qué lenguaje estoy programado? ¿Cuáles son mis palabras clave? ¿Cuáles son los paradigmas de mi lenguaje interno? Esto puede ser una madriguera de conejo, pero hace que los estudiantes piensen en cómo aprenden . Animo a los estudiantes (y profesores) a evaluar constantemente en qué “zona” se encuentran: ¿está descansando en su “zona de confort”, enloqueciendo en su “zona de pánico” o sintiéndose apoyado y desafiado en su “zona de aprendizaje”. Y si no estás en tu zona de aprendizaje, ¿qué necesitas hacer para volver allí?

Es un momento interesante para la educación del código, y estoy emocionado de que se hagan preguntas como esta. Al enseñar código, debemos pensar tanto en la cultura y la pedagogía como en el contenido y el plan de estudios.

Es difícil leer un blog o sitio de noticias en estos días sin tropezar con un artículo sobre por qué todos deberían aprender a codificar. Es un grito de guerra que ha dado lugar a organizaciones como Codecademy y Code.org: Cualquiera puede aprender. Incluso ha roto la agenda política nacional, ya que el ex líder de la mayoría de la Cámara de Representantes de los Estados Unidos, Eric Cantor, ha declarado que “aprender a leer y escribir en código es tan esencial para aprender a escribir en lenguaje y matemáticas”.

La guinda del pastel fue un artículo sobre ScratchJr, una nueva aplicación para iPad descrita como “codificación para el jardín de infantes”. Al igual que Cantor, los creadores de la aplicación creen que la codificación es un nuevo tipo de alfabetización que debería estar disponible para todos, comenzando a una edad temprana. . Sí, ahora incluso su hijo de 5 años puede participar en la acción de codificación y construir sus propias historias y juegos interactivos.

EL SOFTWARE “COME AL MUNDO”, PERO NO HAY SUFICIENTES PROGRAMADORES PARA MANTENER

No me malinterpreten: creo que la intención de todas estas iniciativas de “aprender a codificar” es buena. Después de todo, la capacidad de crear aplicaciones nunca ha sido una habilidad más deseable y crítica.

Solo mira a tu alrededor. Las aplicaciones ahora administran casi todos los aspectos de nuestras vidas, personal y profesionalmente. Tenemos docenas de aplicaciones en nuestros teléfonos inteligentes y tabletas para nuestras finanzas, estado físico y todo lo demás; y confiamos en casi la misma cantidad para hacer nuestro trabajo. Además de eso, las aplicaciones se están apoderando rápidamente de nuestros termostatos, automóviles y casi todos los dispositivos que poseemos. La declaración de Marc Andreessen de que “el software se está comiendo el mundo” suena más cierto que nunca.

Es por eso que enseñar a todos a crear aplicaciones es una búsqueda tan noble y necesaria, especialmente en los negocios. Las industrias que han existido durante cientos de años están siendo radicalmente interrumpidas y transformadas por las aplicaciones. La demanda de software personalizado nunca ha sido tan alta, y la idea de que los departamentos de TI tradicionales podrán mantener el ritmo es ridícula. Según un estudio reciente de McKinsey, el 87 por ciento de los líderes de TI se califican mal en términos de su capacidad para llevar nuevas ideas al mercado rápidamente.

Si las empresas realmente quieren convertirse en empresas innovadoras de aplicaciones, deben convertir cada departamento en un departamento de TI y hacer que cada empleado forme parte del proceso de innovación. Si alguien en marketing o finanzas o RR.HH. tiene una idea para una nueva aplicación, debería poder tomar el asunto en sus propias manos.

HACER QUE TODOS APRENDAN A CODIFICAR ES EL EQUIPO APLICABLE DE CREAR UN “CABALLO MÁS RÁPIDO”

Si bien todo el mundo necesita ser un desarrollador de aplicaciones, ¿está aprendiendo a codificar realmente la respuesta? Henry Ford dijo que, “Si hubiera preguntado a la gente qué querían, habrían dicho caballos más rápidos”. Veo a todos aprendiendo a codificar como la versión de desarrollo de aplicaciones de un caballo más rápido. Lo que todos realmente queremos, y necesitamos, es un automóvil.

La industria está recurriendo al código porque para la mayoría de las personas, es lo único que saben. Si desea crear una aplicación, debe codificarla. Y si quieres crear más aplicaciones, entonces tienes que enseñar a más personas a codificar, ¿verdad?

En cambio, ¿no deberíamos preguntarnos si la codificación es realmente la mejor manera de crear aplicaciones en primer lugar? Claro, el código siempre tendrá un lugar en el mundo, pero ¿es el lenguaje para las masas? ¿Es lo que deberíamos enseñar a todos, incluidos nuestros hijos? ¿O hay otras formas más fáciles e intuitivas de crear aplicaciones? Con el fin de capacitar a todos para crear aplicaciones, debemos centrarnos en brindar una mayor abstracción y automatización al proceso de desarrollo de aplicaciones. Necesitamos eliminar el código, y toda su complejidad, de la ecuación.

¿Mi consejo? No les enseñe a todos a codificar. Enséñeles a identificar y comprender las necesidades, así como a expresar la lógica visualmente. Enséñeles cómo funciona la tecnología, para que puedan comprender el reino de las posibilidades y luego imaginen innovaciones que cambien el juego. Y luego cree un entorno en el que ni siquiera tengan que pensar en escribir código, donde crear buenas aplicaciones sea tan fácil como usar iTunes. Solo arrastra y suelta.

Una vez que eliminemos la fricción de la construcción de la próxima aplicación asesina, finalmente daremos el salto de un caballo a un automóvil. Y entonces la carrera de innovación continuará.

Es cierto que la cantidad de habilidades que posees juega un papel importante para sobrevivir en la competencia 21

siglo. Y “codificar” es seguramente una de esas habilidades esenciales.

A continuación se muestra la lista de empresas que nos están ayudando a enseñar a los niños a codificar desde los primeros días para que puedan destacarse.

¡Echale un vistazo!

1. Code.org

Code.org: Anybody Can Learn es una fundación sin fines de lucro dedicada al crecimiento de la educación en programación de computadoras. Lanzada en 2013, esta compañía está ampliando el acceso a la informática y aumentando la participación de mujeres y estudiantes de color poco representados. Con la visión de que cada estudiante en cada escuela debería tener la oportunidad de aprender informática, creen que la informática debería ser parte del plan de estudios básico, junto con otros cursos como biología, química o álgebra. Después de su lanzamiento en 2013, Code.org: Anybody Can Learn organizó la campaña Hora del Código, que hasta la fecha ha presentado a más de 100 millones de estudiantes de ciencias de la computación, y se asoció con 70 distritos escolares públicos de todo el país para expandir los programas de ciencias de la computación.

Varios programas que ofrecen para que los niños aprendan a codificar son:

– Star Wars: Construyendo una galaxia con código (edades 6-10)

– MineCraft Hour of Code: Use bloques para codificar (edades 6-10)

– Código con Anna y Elsa (edades 8-10) y mucho más.

Lo mejor de Code.org: cualquiera puede aprender ofreciendo varios programas para que los niños aprendan es que los programas son atractivos y están en forma de juegos interactivos para mantener a los niños interesados ​​e involucrados en todo momento.

2. Scratch

Creado específicamente para niños de 8 a 16 años. Originalmente una descarga multiplataforma, Scratch ahora está basado en la web y es más accesible. Los estudiantes usan un lenguaje de programación visual compuesto por ladrillos que arrastran al espacio de trabajo para animar sprites. Varios tipos de ladrillos activan bucles, crean variables, inician la interactividad, reproducen sonidos y más. Las guías de enseñanza, las comunidades y otros recursos disponibles en el sitio web ayudarán a los instructores a comenzar. No es necesario ser un experto en programación para presentar Scratch, ¡puede aprender junto con los estudiantes!

3. Codecademy

Codecademy es una plataforma interactiva en línea que ofrece clases de codificación gratuitas en 9 lenguajes de programación diferentes, incluidos Python, Java, PHP, JavaScript y Ruby, así como lenguajes de marcado HTML y CSS.

Este sitio web interactivo es muy fácil de usar y enseña a los niños el código básico a través de ejercicios divertidos y simples que parecen juegos. Conozca más sobre “Cómo los niños pueden aprender a codificar”.

4. Hackety Hack

Después de una descarga rápida a su computadora, los niños pueden aprender Ruby, un lenguaje de programación de código abierto que es fácil e intuitivo. Hackety Hack proporciona instrucciones de programación claras y bastante fáciles de entender. Los usuarios aprenden general

Consejos de programación y descubra cómo escribir algunos tipos de instrucciones de codificación con Ruby. Los niños probablemente no podrán crear su propio sitio web después de usar el sitio o la aplicación, pero la información que aprendan se puede usar para ayudarlos a comprender un poco sobre la programación y mejorar su lectura, lógica y otras habilidades de pensamiento crítico.

5. Code Monster de Crunchzilla

Particularmente bueno para los niños, Code Monster presenta dos cajas adyacentes. Uno muestra el código, el otro muestra lo que hace el código. A medida que juegas con el código con ayuda de un indicador, aprendes lo que hace cada comando.

6. Code Avengers

Code Avengers es otra gran plataforma web educativa que introduce a los usuarios a HTML, JavaScript y CSS. Estas tres plataformas se utilizan para crear juegos, páginas web y aplicaciones. El diseño de Code Avengers es limpio y estéticamente agradable. Simplemente tiene sentido. Si bien algunas partes están un poco saturadas de texto, en su mayor parte las lecciones son fáciles de seguir. Según la página de introducción, cada lección se divide en 5 tareas. Una característica asombrosa de la plataforma Code Avengers es su característica Sugerencias.

7. LightBot

Integra un juego divertido con lecciones de codificación, principios de enseñanza y conceptos de codificación, como declaraciones if-then. Lo mejor de todo, es un formato de juego divertido y adictivo. Si bien el juego no enseña un lenguaje específico per se, como Java o Python, sí enseña las ideas abstractas de codificación que pueden ser difíciles de entender. Estas ideas son comunes en diferentes lenguajes de programación.

8. Código de combate

Una plataforma web que ofrece algunas características bastante sorprendentes. Los gráficos en el juego Code Combat son increíbles. Está muy claro que los desarrolladores de este curso pusieron un fuerte énfasis en la capacidad de enseñanza del juego, así como en el aspecto del juego. En segundo lugar, los usuarios producen líneas de código para mover a sus personajes a través de laberintos y en la batalla. En tercer lugar, Code Combat ha proporcionado una plataforma multijugador en la que los usuarios pueden enfrentarse cara a cara contra otros jugadores.

9. Tynker

Tynker es una gran herramienta para enseñar programación. La herramienta presenta planes de lecciones iniciales, herramientas de gestión del aula y un escaparate en línea de programas creados por estudiantes. Las lecciones son autodidactas y simples para que los estudiantes las sigan sin ayuda.

10. Fractus Learning

Creado para educadores y padres que desean comenzar a programar a sus hijos, este curso en línea repleto de 1 hora, se enfoca en las herramientas, técnicas e ideas que puede usar para inspirar diversión y creatividad en la programación. Cubriendo juegos, ejercicios, aplicaciones y más, el curso se aleja de la sintaxis de código o las convenciones de cualquier lenguaje específico y se enfoca en hacer que la codificación sea divertida.

11. Gamestar Mechanic

GameStar Mechanic enseña a los niños de 7 a 14 años a diseñar sus propios videojuegos. A tus alumnos les encantará completar diferentes misiones a tu propio ritmo mientras aprenden a construir niveles de juego. El sitio integra el pensamiento crítico y las tareas de resolución de problemas.

Lo más importante que pueden hacer los programas de “enseñar a los niños a codificar” es llevar a los niños al lugar donde pueden codificar. La parte más difícil es llevar un caballo al agua. Beberán o no, pero muchos ni siquiera llegan al agua para tomar esa decisión.

Muchos, muchos niños no se preocuparán por la programación, no importa cuánto lo intenten. Creo que hay una idea errónea de que a todos los niños les gustará. A mis hermanos no les importó. Conozco a niños que fueron obligados por sus padres ingenieros de software a hacerlo, y todavía no están interesados. A la mayoría no le gustará. Pero desea obtener los que sean lo suficientemente lejos como para que se enganchen.

Recuerdo que cuando era niño, mi madre me consiguió un libro sobre cómo hacer páginas web. Seguí los pasos, abrí el Bloc de notas, guardé un archivo HTML e intenté abrirlo. El libro no cubre eso si lo guarda como un archivo .html en el Bloc de notas, automáticamente agregará un .txt al final. El efecto es que el archivo se abrió nuevamente en el Bloc de notas.

Intenté los pasos nuevamente y obtuve el mismo resultado. Entonces me di por vencido.

Porque no podía llegar al lugar donde podía beber.

Afortunadamente, mi madre recibió un segundo libro poco después, y este cubrió ese problema .txt al decirme que lo guardara como “helloworld.html” con citas a su alrededor. Eso funcionó, abrí el archivo en Internet Explorer, y luego me fui a las carreras.

He notado esto nuevamente al probar nuevos lenguajes y marcos. La parte más difícil de ingresar a PHP fue simplemente instalarlo y poner en marcha un servidor. La mayor barrera para ingresar a Scala era simplemente instalarlo y ponerlo en funcionamiento. La parte más difícil del desarrollo de iOS y Android para mí fue simplemente hacer que los IDE funcionen y que las aplicaciones se carguen y se ejecuten en los teléfonos.

La parte más difícil siempre es llegar al punto donde puedes codificar.

Esta sigue siendo la parte más difícil. La cuestión es que los niños no saben que esta parte es superable . Es su primera vez. Por lo que a ellos respecta, si luchan con él, puede estar fuera de su alcance.

Los programas tienen que abordar esto y llevarlos allí para que se den cuenta de que pueden resolver las cosas. Así que llevarlos allí la primera vez es clave.


Dicho esto, ¿por qué son realmente conducidos los niños?

Cosas que pueden ver.

Yo diría que esto es lo # 1 a lo que recurrir. Los codificadores experimentados tienen una comprensión intuitiva de las estructuras y marcos subyacentes. Los niños, y cualquier persona que ingrese a la programación, no lo hacen. Entonces, todo lo que tienen que hacer es lo que pueden ver, hasta que desarrollen ese tipo de intuición.

Los niños pueden disfrutar de juegos que les enseñan cómo programar, pero en algún momento, los que se quedarán con él preguntarán “OK, pero qué puedo hacer realmente con él. ¿Qué puedo hacer ?” Tiene que haber una respuesta clara para eso. Creo que comenzar con la línea de comando, o centrarse en el desarrollo de la línea de comando durante años es un error y disminuirá el interés y evitará que la gente se quede allí.

Recuerdo que me atrajeron las GUI. Quería hacer páginas web. Me encantaron las formas. JavaScript fue una forma increíble de hacer que esos formularios funcionen. Podría relacionar eso con mi experiencia cotidiana.

Necesitas cosas con las que puedan relacionarse. Cosas que podrían verse haciendo y otras personas usando.

Me metí en VisualBasic por esa misma razón. Podría hacer un navegador web o un editor de texto o algún programa concreto que existiera en mi marco de referencia. La lógica subyacente comenzó como una forma de permitir ese tipo de cosas, y gradualmente se convirtió en un interés propio cuando me di cuenta de otras cosas prácticas que podía hacer con ella, y desarrollé una intuición para ello.

En el mundo de hoy, la cosa con la que los niños pueden identificarse más probablemente sean las aplicaciones. Aplicaciones móviles, específicamente. Ahí es donde existe su mundo. Juegan Minecraft en su teléfono, usan WhatsApp y Facebook. Eso es con lo que se pueden identificar, eso es lo que hay en su marco de referencia. Eso es lo que podrían mostrar a sus amigos, lo que podrían imaginar vendiendo.

Entonces, personalmente, probablemente me concentraría en mostrarles cómo hacer aplicaciones. Escogería algunas cosas concretas que podrían hacer. Tal vez un juego de tres en raya. O un temporizador, o una aplicación que agrega filtros o sombreros divertidos a las imágenes.

Puede crear bibliotecas súper fáciles de usar solo para este propósito y proporcionarles un proyecto de demostración.

Luego llévelos al lugar donde pueden codificar y guíelos a través de él.

Así es como lo abordaría en el mundo de hoy.


Finalmente agregaré: no subestimes lo lejos que llegarán los niños solos. El tipo de niños que lo mantendrán probablemente no necesitará que diluyas todo. Explique los términos exhaustiva y repetidamente, pero no sienta que tiene que tratarlos como niños pequeños.

Solo quieres que tengan hambre, y ellos (como lo han hecho generaciones de codificadores antes que ellos) lucharán a través de algunos obstáculos increíbles para saciar esa hambre cada vez mayor de conocimiento, creación y exploración.

No creo que haya algo particularmente único en el código de enseñanza que no se aplique a ninguna otra materia. La razón de ser de los niños es aprender, por lo que existen principios fundamentales que pueden aplicarse a todas las situaciones de aprendizaje.

– El conocimiento es lo que sucede entre las personas, así que enséñeles a colaborar. La colaboración es una habilidad que necesita ser enseñada como cualquier otra y viene con un lenguaje propio. Esto requiere que los niños aprendan las reglas básicas donde se escuchan las ideas y cuando un niño está hablando, todos los demás están escuchando. Se alientan las preguntas de los demás y se exploran ideas juntos. Solo se toman medidas cuando todo el grupo ha acordado lo que va a suceder. A los niños se les enseña a usar cómo, por qué y qué preguntas: cómo funcionará, qué hará y por qué piensas eso, por ejemplo.

Para más información ver Ann L Brown (Harvard) – Transformando las escuelas en comunidades de pensamiento y aprendizaje sobre asuntos serios.
Procesos y consecuencias de la colaboración entre pares: un análisis vygotskiano
Andamiando el desarrollo de una colaboración y aprendizaje efectivos

            • – Asegúrese de que lo que está enseñando sea relevante para su vida cotidiana. Si no pueden ver de inmediato su uso o hacer una conexión con el tema, no se molestarán en aprenderlo.

          Por ejemplo, haga que lo que sea que estén codificando sea relevante para ellos para que puedan ver cómo pueden aplicarlo. Poner ropa de diferentes colores en sus personajes de dibujos animados favoritos o cambiar el fondo, etc.

          Asegúrese de que puedan hacer en lugar de escuchar. Hacer es aprender, así que muéstrales lo básico y luego permíteles explorar entre ellos.

          Estos principios se aplican a niños de todas las edades: en teoría, debería ser mucho más fácil para los niños aprender a codificar porque no aman nada más que ver las consecuencias que tienen sus acciones en el mundo; piense en los bebés pequeños que constantemente arrojan cosas de sus tronas y cómo mucho disfrute de eso. La retroalimentación de sus acciones es instantánea con la codificación, por lo que debería ser muy agradable para ellos.

          Me presentaron a la programación aproximadamente 6 años a través de ‘Logo’. Recuerdo haberme preguntado al principio: ” ¿Por qué estamos tan interesados ​​en mover una supuesta tortuga que no se parece en nada a una tortuga? ” Sin embargo, eventualmente, la misma tortuga se convirtió en una amiga de juego que confiaba en mí para ayudarla. llegar a donde debe estar. La (s) pregunta (s) de programación fueron claves que usó para buscar mi ayuda ya que no podía hablarme directamente. Entonces, si la pregunta decía: “Escribe un programa para dibujar este triángulo ABC en la pantalla” realmente fue un discurso de tortuga “, de A a CI debe recorrer este camino pero no sé cómo, por favor habla con tu computadora y haz que suceda ahora.

          Durante esta fase, recuerdo haber pensado: “¡La programación es tan fácil y divertida!


          Algunos años después, me vi luchando miserablemente con BASIC. Un ambiente diferente, una edad diferente, un maestro diferente y un estilo de enseñanza aún más diferente. No pude entenderlo . Cuanto más lo intentaba, más nervioso me ponía. Que el lenguaje se llamara “básico” lo hacía más vergonzoso. Se suponía que la programación era fácil y divertida, no confusa y compleja. Estaba confundido.

          Entonces, un día, un nuevo maestro fue asignado a nuestra clase. En las siguientes sesiones, ella alivió mis temores y muy pronto, ¡me vi divirtiéndome una vez más!


          Ahora que miro hacia atrás, hubo una sorprendente coincidencia entre las dos experiencias anteriores, o más bien, entre los dos estilos de enseñanza que me ayudaron a apreciar la programación durante las dos fases diferentes. El maestro que enseñó programación con Logo usaría oraciones como, ” La tortuga necesita avanzar ” o ” cómo la llevarás de aquí para aquí “.

          La segunda (y sorprendente) maestra que enseñó programación a través de BASIC hizo algo similar: dibujaba en la pizarra el resultado deseado, luego comenzaba a rastrearlo desde el principio y pedía a la clase comandos línea por línea que ayudaran a producir La salida deseada o necesaria. La maestra anterior que tomó esta clase, como más tarde me di cuenta, hizo algo mal : estaba enseñando BASIC, no programando.


          Al aprender a codificar, los lenguajes de programación realmente funcionan como el maestro. Entonces, observarlos, cómo están diseñados, qué idiomas tienden a ser más fáciles de aprender para los principiantes, puede dar una gran idea de cómo se debe enseñar la programación.

          Cabe señalar que los idiomas más populares para los niños tienden a ser menos sobre instrucciones, código, sintaxis y mucho sobre pensamiento visual, resolución de problemas, pensamiento creativo.

          Las ideas importantes, al menos para mí, son que:

          • El código tiene mucho más sentido (y la codificación es mucho más divertida) cuando está diseñado y estructurado al 100% de acuerdo con la salida / resultados deseados

          • Cualquier lenguaje de programación es solo un medio para lograr un objetivo mayor: el de resolver problemas. La programación de enseñanza o aprendizaje debe, por lo tanto, ser lo menos posible sobre sintaxis o idiomas

          • El enfoque debe estar en desarrollar una gran curiosidad para abordar, diseccionar y resolver problemas a través del pensamiento creativo.

          • Hay una fórmula que se encarga de todo lo anterior y la programación de la enseñanza realmente debería ser acerca de la enseñanza de esa fórmula. Es lo que llamamos pensamiento algorítmico.

          • La programación de enseñanza para inculcar en los alumnos un pensamiento algorítmico se trata de ayudarlos a desarrollar un ojo para los patrones en los problemas y apreciar, aprender y desarrollar estrategias genéricas para abordar estos problemas a través del código

          • El pensamiento algorítmico es amigo cercano del pensamiento visual.

          En primer lugar: solo porque quieras que una persona aprenda algo no significa que quiera o esté listo. Para entender cómo enseñar programación, enseñé a niños de 4 a 14 años a programar hace tres años ( https://www.youtube.com/channel/ …). Constantemente pruebo cosas con mi hijo mayor (ahora pronto 8 años y todavía no compilo C ++ sin banderas de advertencia). Esto es lo que he aprendido y probado (los enlaces son cosas que hemos probado).


          Poder codificar requiere que comprenda tres partes:

          1. Lingüística : cómo se escribe este idioma en particular. Al igual que un lenguaje escrito de persona a persona, un lenguaje de programación tiene reglas. Qué palabras existen y cómo encajan entre sí. For-If-When-Struct-Class-Assert y todas las demás cosas. ¿Las variables son globales y existen espacios de nombres? ¿La memoria está bien liberada o es algo de lo que tengo que ocuparme? Algunas partes de estas cosas son sintaxis, pero algunas son solo cosas que debemos saber sobre este lenguaje.

          La mejor forma de aprender lingüística es de memoria. Ahí: lo dije. Cuando aprendí a codificar, copié una página de texto. Luego escribí un comando (RUN) y el nombre del archivo después de la solicitud y vi lo que sucedió. Y después de mirar la maravilla, volví y vi por qué hizo eso y lo cambié. Pero de alguna manera todas estas cosas pasaron por mis manos y mi cabeza, así que fue fácil cambiarlo. Lea Guitar Zero si no cree en la importancia del aprendizaje de memoria: Guitar Zero: The Science of Becoming Musical at Any Age: Gary Marcus: 9780143122784: Amazon.com: Books. Creo que hay otras formas, pero llegaré a eso en la parte que llamo “Falta de progreso y meta”.

          Pero en general creo que todos estamos demasiado fascinados con la enseñanza de Lingüística y que las buenas lecciones de programación deberían guardar esto para el final. La mejor manera en que pienso en aprender Lingüística (cuando has aprendido el resto) es hacer algo como CodeAcademy (o similar). Pero espere mostrándoles esto a los niños, ya que perderán la esperanza.

          2. Alfabetización informática : comprender cómo una computadora ve el mundo. Algo que la mayoría de la gente sabe muy poco francamente. Este es el arte de entender lo que es no saber.

          En realidad, hay juegos bastante agradables para este, mi favorito es “programar a tus padres”. El juego tiene dos niveles: uno directo y otro planeado. Comience con directo. Los padres se paran en una habitación y el niño le ordena al padre uno de los siguientes pasos hacia adelante, girar a la izquierda, girar a la derecha, recoger, dejar en el suelo. Y el objetivo es mover una pelota de fútbol de una silla a otra. Cuando el niño haya dominado esto (y puedo prometerle que les gusta mandar a mamá o papá), te mudas a Planned. Ahora el niño escribe los comandos antes y luego guía al padre a través de ellos. Por lo general, terminas en absoluto donde esperabas y te das cuenta de que no te estabas dando cuenta de que la izquierda se convirtió en otra cosa después de un par de turnos. Hay juegos que intentan hacer esto, compramos y probamos RoboTurtles (El juego de mesa que enseña programación a niños), pero nos cansamos rápidamente, así como Robot School (Robot School. Programación para niños en la App Store) incluso si la complejidad aumentó un poco demasiado rápido allí.

          La segunda parte de Computer Literacy es ser el código. Para ver una declaración if y darse cuenta de que podría necesitar un segundo if u otra cosa para captar lo que podría suceder si las cosas no salen según lo planeado. Poder ver en qué se convierte una variable dentro de un ciclo for es lo mismo. El mejor juego que he jugado para esto es Code Monkey Island.

          3. Soluciones de estructuración : aprender a abordar el problema. Al igual que la física, no comienzas con números en bruto, sino que tienes que descubrir cómo convertir esta pregunta en algo tangible. Si desea que un robot camine hacia una linterna, debe desglosarla en “dónde está la linterna”, “cuál es la dirección”, “cómo moverse”, etc.

          Lo mejor que he visto aquí es LEGO. Hay LEGO WeDo2.o (Compre productos WeDo 2.0) y Mindstorms (Inicio – LEGO® MINDSTORMS® – LEGO.com – Mindstorms LEGO.com). Ambos son utilizables para un niño de 7 años con algo de ayuda. Y lo bueno de LEGO es que hay instrucciones para llegar al campamento base y luego puedes modificar y trabajar hasta la cima del Monte Everest.

          Me gusta lo que LittleBits (bloques de construcción electrónicos para crear invenciones grandes y pequeñas) hacen con sus pequeños proyectos, pero es difícil cuando algunos de los problemas terminan siendo por falta de cables o porque una conexión se rompió físicamente. Vi que las versiones más recientes de LittleBits tienen tableros para mantener las cosas en su lugar. Y creo que Dash and Dot de Wonder workshop es agradable, pero no sé por qué, pero los niños terminan conduciéndolos como robots controlados a distancia (Wonder Workshop | Home of Dash and Dot, robots que ayudan a los niños a aprender a codificar).


          Falta de progreso y objetivo

          Pero el mayor problema de la programación de aprendizaje suele ser porque no sabes por qué. No tienes un problema que resolver. Te sientas allí y juegas un poco, pero sin ningún objetivo. El “aprendizaje exploratorio” puede ser divertido, pero no te lleva a lugares. Por lo tanto, debe adoptar un proyecto para aprender a codificar.

          LEGO Mindstorms es de nuevo sorprendente para esto, y especialmente por el libro de Daniele Benedettelli: El Laboratorio LEGO MINDSTORMS EV3: ¡Construye, Programa y Experimenta con Cinco Robots Wicked Cool !: Daniele Benedettelli: 9781593275334: Amazon.com: Libros. Mi futuro hijo de ocho años nos ayudó a superar esto y lo pasó increíble (incluso si no es muy amigable para los niños con su complejidad).

          Me gusta Kano (especialmente con la pantalla: Kano) ya que todo aquí es un progreso de programación, incluso el programa de dibujo es programación. Pero al mismo tiempo, encuentro que es demasiado de una computadora y una computadora significa juegos. Así que al menos mis tres hijos buscan juegos en él más que disfrutar cómo codificar.

          Otra forma de hacerlo, si eres mayor y no necesitas la tangibilidad de LEGO o los juegos, recomendaría Code4Startup (Learn Ruby on Rails, AngularJS, NodeJS, Ionic, HTML5, CSS3 clonando Startups de la vida real) donde simplemente copie una startup famosa y cree la suya propia. Increíble forma de poseer un proyecto de extremo a extremo.

          En general, construir algo que funcione, incluso si no lo comprende todo (o casi nada al principio) sigue siendo una gran sensación y lo hace retroceder. Al igual que la experiencia de compartir tu trabajo.


          Soy uno de los cuatro yorkshiremen

          Aprendí una raza de BASIC (AMOS encantador) cuando era niño, luego programé Pascal, luego C ++, que pasé algunos años haciendo, luego el ensamblador A11, luego Java y luego (de vuelta al nativo) ANSI C. Y luego me detuve.

          Recientemente probé Swift y Javascript, pero pasé casi un día configurando SDK y compilando antes de ver que todo, absolutamente todo, tiene una biblioteca y función únicas. Me encantaría que Swift no tenga una función dedicada para agregar dos números, y una para agregar tres.

          Parece que la gran cantidad de hombros de gigantes maravillosos para pararse son más paralizantes para alguien que está aprendiendo.


          Conclusión

          Mi plan para mis hijos (y lo que creo que la mayoría de las personas que crecen hoy debería hacer) es permitirles disfrutar construyendo cosas. Construir cosas para sentirse empoderado y resolver sus propios problemas (y los de otros). Quiero que aprendan cómo ser Soluciones Estructurales sobre todo, y sería feliz si entendieran cómo funciona una computadora con algo de “Alfabetización Informática”.

          Por supuesto, me encantaría que disfruten de la programación real, porque es increíble. El código es la única forma en que he visto a la raza humana colaborar en el espacio y el tiempo. He trabajado con personas del otro lado del mundo (“¡Comprométete!”) Y he usado bibliotecas de códigos de personas desaparecidas hace mucho tiempo. La programación es una forma de multiplicar nuestros pensamientos, algo que no le importa el tiempo lo hace por usted, ya sea cortando el césped o encontrando el punto de inflexión de una curva de silla de montar. Pero, sinceramente, creo que la mayoría de las personas pueden sobrevivir sin esto. Si quieren aprender, llévelos a CoderDojo (CoderDojo) para que puedan conocer la codificación de otros niños.

          Desearía que hubiera más juegos en los que sería mejor si pudiera codificar para que la codificación se convirtiera en el medio para un fin y no en un objetivo demasiado obvio.

          Creo que voy a tomar una ruta diferente, a lo largo de mi experiencia de codificación:

          • En primer lugar, a los niños les gustan los resultados. Resultados rápidos que pueden ver. No es un “buen trabajo”, la mayoría de los niños aprenden a codificar para hacer juegos o divertirse. Haga que el código de aprendizaje sea divertido y ponga pequeños proyectos en el curso o muchos niños dirán “meh” y perderán interés.
          • Los niños son increíbles al aprender idiomas de codificación relacionados. A menudo comenzarán con uno y luego elegirán otro parcialmente, y dado que muchos lenguajes de codificación son similares, esto hará que el segundo sea más fácil y permita una visión más profunda del primero. Intente comenzar con un lenguaje de codificación fácil y común que esté relacionado con muchos lenguajes (piense en JavaScript o Python), para que los niños puedan usar esta estrategia si así lo desean.
          • Muchos niños no querrán hacer un curso de codificación sin una razón, y no todos los niños pasan mucho tiempo en línea o quieren aprender suficiente código para hacer un juego o algo increíblemente complicado. Muéstreles cómo la codificación puede valer la pena incluso con la comprensión básica del curso. Por ejemplo, hice un conjugador de verbos en español para mi clase de español usando principalmente declaraciones if / elif / else, ¡y he recibido ofertas de dinero que superan los cincuenta dólares! Ser creativo.
          • Los niños odian la tarea. Odian la tarea. Asigne algunos proyectos pequeños aquí y allá, pero trate de darles tiempo en clase para completar lo que necesita completar. Esto mejorará su actitud sobre la clase. Esto funciona para cualquier clase, no solo para la codificación.
          • Muchos niños son muy competitivos. Los pequeños juegos y las competencias son otra forma de mantener a los niños motivados. Intente que los niños hagan un juego de elección con if if y la entrada del usuario y vote por el mejor (elija los cinco mejores y luego pídales que voten o de lo contrario todos votarán en sus propios proyectos).
          • Además de todo, asegúrese de enseñarles material nuevo. Puede que se sorprenda o no al escuchar cuántos maestros se desperdician al volver a enseñar material de un plan de estudios espiral. Una vez pasé 3 meses en una clase de arte digital que nos enseñó cómo hacer una presentación de diapositivas y crear códigos qr. ¡SÉPTIMO GRADO! Esta era una clase de preadolescentes expertos en tecnología también. Tenga cuidado con el plan de estudios espiral. Pondrá a los niños a dormir.

          (Tl; dr: participar en juegos, concursos y proyectos y no asignar demasiada tarea. Además, no volver a enseñar material).

          Ok, entonces no todos estos están directamente relacionados con la codificación, pero todos se aplican. Simplemente haz tu mejor esfuerzo y sé identificable y debería funcionar bien.

          Como una persona que comenzó a trabajar en algoritmos y programación desde una edad temprana y asistió a The Computer Olympics, creo que las tecnologías de software deberían enseñarse a los niños como una ciencia fundamental.

          Me alegra ver algunos productos especiales desarrollados para educar a los niños hoy en día y creo que los niños tendrán cierta infraestructura técnica para ser productivos sin confundirse gracias a estos productos cuando alcancen las edades en que generan ideas innovadoras.

          Comencé a estudiar algoritmos y c ++ en 1998 llamado “Estructuras de datos prácticas en C ++” por Bryan Flamig. Esa fue una mala elección para comenzar a estudiar cuando era niño, pero sigue siendo un gran recurso para comprender la estructura de la máquina.
          Amazon.com: Estructuras de datos prácticas en C ++ (9780471558637): Bryan Flamig: Libros

          La formación académica tiene efectos positivos en la mejora, independientemente de la disciplina, soy consciente de este hecho y también sé que el aprendizaje sistemático juega un papel crucial en la creatividad cuando se combina con el talento.

          • Es importante que los niños estudien la programación de software después de trabajar en los conceptos básicos del algoritmo durante un cierto período. También recuerdo que tuve algunas dificultades para comprender conceptos abstractos en ese momento. Las operaciones que no sean cuatro operaciones y pasos de solución que son difíciles de poner en papel fueron complicadas para mí. Por esta razón, cuando enseñamos programación de software a niños, podría ser beneficioso dar ejemplos de la vida misma.
          • En lugar de las prácticas de algoritmos sobre el funcionamiento de un sistema eléctrico, podríamos simular algo concreto, como los pasos para preparar una taza de café y enseñar a los niños cómo enumerar esos pasos del proceso más adelante.
          • Después de esta etapa, lo único que tenemos que hacer es enseñarles cómo usar variables en un lenguaje de programación general y otras operaciones básicas. Cuando estén avanzados en el algoritmo, necesitarían aprender lenguaje de software a nivel intermedio y luego podrán crear nuevas ideas sobre los productos tecnológicos. De esta manera se especializarán en lenguaje de programación de acuerdo con sus intereses.

          Los ejemplos dentro de la vida serán los mejores recursos para los niños. Todos pueden aprender cualquier cosa cuando estudian. Puedes aprender o memorizar todo cuando estudias, pero ¿es persistente? He leído muchos documentos y libros durante años después de mi reunión con la codificación y la mayoría de ellos incluyen información similar, pero si me pregunta cuáles fueron los mejores recursos para comprender la codificación y los algoritmos. La respuesta es videos de animación. Encontré mi archivo y recuerdo cada detalle de los videos sobre codificación después de 15 AÑOS .

          Estos videos sobre tecnologías de red y codificación en un sistema operativo creado por Cisco para principiantes. Estas animaciones hablan sobre una ciudad y todos tienen una misión en esta ciudad. Las abstracciones te recuerdan la codificación en la vida, cuando tomas el autobús y el tren puedes imaginar las mismas misiones para una tecnología de computadora / software para que sea más fácil resolver el aprendizaje.

          Aquí hay un punto que se pasa por alto, “Sistemas operativos”. Antes de enseñar algoritmos y codificación, debe haber educación a corto plazo para OperatingSystems, esto será mejor para los niños.

          el libro en la parte superior escrito por Michael Morrison sobre programación de juegos fue genial, pero tenía una tarjeta gráfica de 1 MB (está a la derecha, tarjetas VGA y programación de juegos 🙂), y probablemente O / S fue el mayor error, me he encontrado con SO OpenSource muchos años después, todavía lo siento porque descubrí el mundo OpenSource demasiado tarde. Libro verde sobre las Olimpiadas Internacionales a las que me he unido.

          Así que aquí está mi algoritmo para enseñar codificación para niños:

          1. Enseñe tecnologías de computadoras y redes mediante videos animados (los niños se adaptarán mejor cuando CORRAN o CONSTRUYAN algo)
          2. Enséñeles algoritmos con ejemplos de la vida (esto creará un efecto persistente)

          3. Dar pequeños proyectos mensuales. Las ficciones son mejores que los problemas de frío. No enseñes a hacer calculadora. El juego de adivinanzas atraerá su interés y este tipo de pequeños proyectos realistas desarrollarán un estado de ánimo

          4. No se concentre en ejecutar código o construir un proyecto. Enfoque el uso de algoritmos y cultura porque pueden aburrirse cuando cometen errores de sintaxis, pero serán más felices cuando resuelvan un problema mediante un algoritmo

          No trabajo como desarrollador hoy en día, pero es genial aprender nuevos idiomas fácilmente después de años y es genial encontrar errores y contribuir en los proyectos en los que he trabajado como hacker de crecimiento o analista.

          1. Bucle de retroalimentación corto

          2. Hacer algo que les guste y con lo que puedan jugar

          3. Simplicidad primero, y luego profundizar. (abstraiga todo al principio. nivel superior abajo)


          Creo que aprender a codificar debería ser como hacer algo con legos . Obtiene un conjunto, sigue las instrucciones y luego, una vez que haya terminado, puede cambiarlo como desee. Y eventualmente se convierte en su propio trabajo único.


          Los niños deberían poder ver cómo cada acción que realizan afecta los resultados. Una manera de hacer esto es lo que hace Swift: ves lo que sucede en la pantalla en vivo con cada línea que escribes . Quizás escriban todas las líneas y apenas entiendan algo. Pero ahí es cuando les enseñas lo que cada línea realmente significa.

          ball.color = red;

          Diles que lo cambien a su color favorito.

          ball.color = blue;


          Woah! Ahora miran su pantalla y ven con alegría que se está convirtiendo en su elemento.

          A los niños les encantan los juegos. Haga que el tutorial sea algo en lo que puedan cambiar la dinámica del juego y crear sus propios niveles. Es interactivo y hay mucho espacio para la creatividad y la imaginación.


          Y, por supuesto, hágalo simple y legible en inglés . Esto significa ocultar la complejidad y tal vez incluso crear su propio lenguaje más simple en el momento. El propósito es aprender conceptos, no sintaxis.

          createBirds(2);

          Diles que cambien este número. ¡Boom, más enemigos en la pantalla! Luego, una vez que tengan esa comprensión inicial, sumérgete más profundo .

          createBirds(int x) {

          for (int enemyNumber = 1; enemyNumber <= x; enemyNumber++) {

          createBird();

          }

          (Probablemente quiera simplificar eso y hacer que el bucle for sea más comprensible como python)


          Esto es lo que creo que es el mejor método para mantener a los niños comprometidos y no cargarlos demasiado a la vez. Huirán si piensan que es demasiado complicado al principio. Haz que entiendan las cosas fáciles antes de enseñarles las cosas difíciles.

          Ahora mismo soy un estudiante de 14 años. He estado tratando de aprender a codificar por un tiempo ahora, probablemente durante los últimos 3 años cuando hice mi Hora del Código en Code.org. He usado muchos sitios web como Khan Academy, CodeCademy, Code.org y otros. También tomé una clase de codificación patrocinada por Cerner (compañía) y Sprint Products and Services aquí en el área de Kansas City (donde vivo). Estas clases fueron clases de 6 horas de duración que fueron muy deliberadas en su enseñanza. Todavía no he tomado ninguna clase a través del sistema de escuelas públicas, pero parece que serían similares a este tipo de clase. Lo que voy a hacer es darle un informe objetivo sobre lo que he encontrado en estas clases y cuál me ha ayudado más a aprender.

          Sitios web

          Los sitios web son una excelente manera de aprender a codificar. Ofrecen muchas clases y pueden ayudarlo a comprender los conceptos básicos increíblemente rápido. Sin embargo, hay un par de problemas con los sitios web. Por lo general, son muy amplios con su enseñanza y no parece haber un beneficio exacto. Además, si se atasca o el código no se compila correctamente, no funcionan. Esto puede frustrar a un niño. No pueden salir de él y no hay nada allí para decir “Oye, ¿por qué no intentas esto?” Me ha sucedido antes en múltiples ocasiones y es muy frustrante, por lo general me hace abandonar el sitio y no regresar por un tiempo. Por lo tanto, para que los sitios web funcionen, realmente necesita tener una comprensión básica de la codificación para comprender completamente los conceptos.

          Tengo otro problema con un sitio específico: Code.org. Me encanta lo que están haciendo y este fue el sitio donde hice mi primera hora de código; fue muy emocionante. Mi problema con esto es que está en la codificación de estilo de bloque y las funciones suelen ser bastante fáciles. Quiero aprender más de este gran sitio, pero no puedo porque está limitando mi capacidad de desafiarme a mí mismo.

          Por lo tanto, para que un sitio web funcione, debe ofrecer un desafío a los niños, pero también debe ser informativo y algo simple. Es necesario que haya algo para ayudarlos cuando se atascan. Esta es la única forma en que realmente van a aprender a codificar. Están aprendiendo, recuerden, no pueden resolverlo solos. Por lo tanto, si les permite aprender a codificar, pero los ayuda cuando se atascan, comenzarán a comprender los conceptos cada vez más. Mientras más regularmente los obtenga en el sitio, mejor estará.

          Code Camps

          Adoro los campos de codificación. Son mi forma favorita de aprender a codificar. He hecho dos campamentos de codificación; uno que usó MIT App Inventor, que es un lenguaje basado en bloques para ayudarlo a crear aplicaciones de Android y el otro que usó Codea. donde codifica aplicaciones iOS en Lua. Estos fueron extremadamente beneficiosos y al final de la segunda clase (que fue impartida por dos estudiantes de segundo año de CS), dijeron que habíamos completado básicamente todo lo que habían hecho en su primer año de codificación en esa clase de 6 horas al día. por una semana.

          Estos campos de código realmente nos permitieron aprender. Comenzaron con días en los que codificaríamos aplicaciones básicas y aprenderíamos cómo funcionaban. Luego, durante los últimos 2 días y medio codificamos nuestra propia aplicación y se la presentamos a los padres. Nos permitió seguir nuestros intereses y al mismo tiempo poder pedir ayuda si nos quedamos atrapados, el equilibrio perfecto para trabajar solo y obtener ayuda. Estos niños no son programadores profesionales, solo están tratando de aprender y necesitan ayuda para poder hacer esto. La otra gran cosa es que están moldeados a su capacidad, lo que le permite ir tan rápido o tan lento como desee una vez que se suelte.

          Clases de código

          Estas son generalmente sesiones de una hora repartidas en un largo período de tiempo. Por lo general, tienen un plan de estudios establecido para seguir. Sin embargo, cubre muchas cosas importantes en estas clases y repasan el aprendizaje fundamental, lo que le permite avanzar a medida que avanza.

          El principal problema con estas clases es que tienen un plan de estudios muy estricto. No permite que los estudiantes piensen fuera de la caja y realmente aprovechen la clase y sus oportunidades. Tiene a alguien allí para ayudarlo si se atasca, pero no le permiten aprender tanto. Los cortos períodos de clase no le permiten simplemente sentarse y codificar durante horas, lo que disminuye la productividad. En general, esta no es una excelente manera de aprender a codificar.

          ¿Cómo aprenden los niños a codificar?

          Los niños aprenden a codificar a través de entornos desafiantes que pueden relacionar con sus propias vidas que les permiten interactuar con el producto y les permite codificar. Es posible que algunos no entiendan todos los términos técnicos, pero es beneficioso que comprendan el proceso. Si no están interesados ​​en él, no participarán en él. Si es demasiado difícil o demasiado fácil, simplemente se lo quitarán del hombro y no prestarán atención. Tenemos que encontrar ese equilibrio. Siempre es útil si algo puede ayudarlos si se atascan. Veo esto una y otra vez. Aprender a codificar es extremadamente beneficioso para los niños y les permitirá obtener mejores carreras en STEM y otras áreas técnicas. Aprender a codificar será un requisito solo por las increíbles habilidades de resolución de problemas que recibes. Sin embargo, debe involucrar al niño con el aprendizaje y la única forma de hacerlo es hacerlo divertido, fácil, desafiante, relatable y de ayuda. Si haces esto, los niños querrán codificar todo el tiempo y lo considerarán algo divertido. Si no hace esto, o lo implementa incorrectamente, nunca querrán codificarlo y pensarlo como algo que no necesitan aprender. Entonces, salgamos y hagamos que los niños piensen que la codificación es divertida y algo que todos están haciendo. Una vez que vean los resultados, estarán asombrados.

          He estado enseñando a mucha gente en los últimos 4 años. Desde estudiantes universitarios, profesionales de TI hasta niños de 7 años.

          Recibí muchos comentarios al estudiar el comportamiento de los niños y descubrí que el mejor aprendizaje ocurre cuando:

          • Ellos no “trabajan” . Tienen una capacidad de atención increíblemente corta y cualquier cosa que implique un esfuerzo voluntario y deliberado los alejará.
          • Ven efectos inmediatos: “¡Hice esto!” . Si hacen clic en algo y se mueve, son asombrosos. No importa cuán simple o elegante sea el efecto, si hacen algo simple que hace que algo se mueva o desaparezca, o dispare, los tienes.
          • Aprenden por intuición. Esto es critico. No necesitan saber que están aprendiendo “programación” . Ni siquiera necesitan saber los nombres de los conceptos. Ya saben “al mismo tiempo”, “de esa manera”, “rebotar”, “bloquear”, “envolver”, “repetir”, “decir”, “escuchar”, “preguntar”, “clonar”, “mover” . Usa esas palabras para decirles lo que quieres de ellos, y te sorprenderá lo bien que lo hacen.

          Utilicé los 3 principios anteriores para enseñar a los niños en vivo, con gran éxito, y ahora los he puesto en línea:

          Programación para niños y principiantes: aprenda a codificar desde cero

          Bueno, en primer lugar, hay muchos factores que pueden influir en cómo un niño aprende a codificar, especialmente porque yo soy un niño que aprendió a codificar y ayudó a otras personas a codificar, por lo que sé.

          De todos modos, creo que lo primero que todos deben saber es que no puedes comenzar a enseñarle a un niño a codificar. Eso es como decirle a algunos: “¡Debes comer estas frutas!” Necesita que se interesen en la codificación. Para mí, fue el descubrimiento de cómo se hicieron los juegos flash. Para algunos otros, era el hecho de que podías hacer lo que quisieras con tu corazón contento. Una vez que hayas ganado su interés, ¡vamos!

          Ahora es el momento de un paso crucial para aprender, elegir cómo enseñarles. Puede parecer fácil al principio, solo inscríbalos en Code.org o similares y ya está listo, pero no. Tienes que encontrar la plataforma adecuada para enseñarles. Para algunos, simplemente comience a enseñarles directamente desde el código. Para algunos, opte por un enfoque simplificado de codificación como BASIC. Para algunos, es posible que desee enseñarles los conceptos básicos y las implicaciones de la codificación a través de LEGO Mindstorm. Puedes ver a dónde voy con esto, ¿verdad?

          Ahora es el momento para el paso final, después de elegir la plataforma que tenga, vaya con ella y luego llegue a la codificación real. Si comenzaste con la codificación casual, ¡buen trabajo! Sin embargo, hay un componente clave que todos deben comprender. Deje que los niños elijan qué idioma quieren aprender, no los obligue a aprender algo que cree que les gustará. Tienes que dejarlos elegir. Explíqueles cada idioma que crea que les interesará y, si no les interesa, dígales otros. Esto es algo que la gente falta, y es por eso que a los niños no les gusta la codificación (a veces).

          Di mis pasos y consejos allí, y gracias por leer.

          En un sentido amplio, si tuviera que definir qué significa exactamente la codificación, está explicando que una máquina haga las cosas que usted quiere que haga.

          Ahora, la tarea puede variar en términos de complejidad, pero incluso si tuviera que tomar el ejemplo de la tarea más simple, por ejemplo, si un niño quiere que la máquina lo ayude con su tarea de matemáticas. Lo primero y lo más obvio que le vendría a la mente de los niños sería tener un GENNIE a quien el niño solo le da la orden y el gennie hace el trabajo por usted.

          El punto a tener en cuenta en este caso es que los medios o el idioma a través del cual se comunica el comando al gennie es simplemente INGLÉS.

          Más allá de cualquier duda, el niño habría podido hacer su trabajo requerido de la máquina, que en este caso era hacer el trabajo de casa de matemáticas. Ahora, llegando al escenario actual en el mundo real, se puede derivar una analogía similar.

          En este caso, la computadora moderna es ANALÓGICA para el Gennie. Pero el punto donde enfrentamos el obstáculo es el MEDIO o el método que usamos para comunicarnos con el sistema informático.

          Las computadoras modernas han recorrido un largo camino en términos de su poder de procesamiento y, según los estándares actuales, son capaces de manejar y procesar tareas a gran velocidad y, a menudo, simultáneamente, sin embargo, estas máquinas realmente poderosas deben explicarse incluso lo más simple que los humanos tomamos por supuesto y eso es COMENSENSE.

          En lo que respecta a los lenguajes de programación modernos, son muy capaces de manejar los obstáculos que enfrentamos, pero al explicar el método de codificación a un niño, es muy importante incluir el método de involucrar el proceso de pensamiento. Lo que eso significa es acercarse a un problema en términos de STEPS.

          El niño que directamente hizo aprender solo la SINTAXIS de un lenguaje de programación dado puede no estar muy interesado en aprender eso, sino más bien si se le explica cómo abordar un problema dado y romper pequeños pasos para que pueda manejarse fácilmente.

          Como dice el dicho “La necesidad es la madre de la invención”, y lo que debe enfatizarse primero es explicar el propósito o la necesidad de aprender algo antes de aprender un idioma.

          La educación a menudo se basa en aprender primero sobre todos los conceptos básicos (aburridos) antes de poder seguir adelante. Está bien, siempre y cuando comprenda bien por qué tiene que aprender estos conceptos básicos.

          Me gustaría revertir esto y comenzar activando la imaginación.

          • Muestra todas las cosas geniales que puedes hacer con las herramientas que usarás.
          • Divídalo en todos los elementos que se usaron y muestre cómo interactúan.
          • Pase a las partes donde personaliza el código
          • Explicar los conceptos básicos de codificación (siguiente / if / while) en ejemplos
          • Pase a funciones y clases, etc.

          La codificación también podría significar SQL y las bases de datos y el modelado de datos deberían estar entre las primeras cosas para enseñar. Eso también puede ser emocionante, ya que hay tantas aplicaciones en la vida diaria.

          Mi hija comenzó un pequeño club de codificación en su comunidad para enseñar a los niños más pequeños (principalmente sus hermanas y sus amigos) cómo codificar. Aquí hay algunas cosas que ella y yo hemos notado durante todo el proceso:

          1. A la mayoría de los niños de las escuelas públicas se les enseña a través de la memorización: la codificación es muy difícil de entender. Kaya, mi hija, hace que sus alumnos hagan algo abstracto con cartón / cinta / pajitas / cuerdas / revistas / etc. antes de cada clase. El objetivo es hacer que los niños piensen en “otras” formas de llegar del punto a al punto b.
          2. Encontrar una manera de mostrar a los estudiantes lo que están haciendo en tiempo real es clave. La mayoría de los niños quieren ver lo que están haciendo en cada paso del camino. Les gusta ver paso a paso lo que hace cada personaje, lo cual es bastante imposible. Scratch y algunos otros son geniales para esto.
          3. Kaya creó un superhéroe de codificación que hace buenas obras a través de la codificación a la que los niños responden y para los niños mayores: sugiere libros de codificación “geniales” como Genius de Leopoldo Gout y algunos otros libros de “codificación es el nuevo negro”.