Aprendiendo a programar en 2015: ¿Cómo puede mi brillante de 10-13 años aprender a programar, una vez que haya terminado Scratch?

Como puede imaginar, no voy a dar las respuestas convencionales (CodeAcademy, Python, etc.). Considero que la pedagogía detrás de sitios como CodeAcademy es horrible, y conozco lo suficiente sobre JavaScript (el sitio de mi grupo de investigación: JavaScript y herramientas web) para pensar que es una forma terrible de aprender hábitos de programación. Además, creo que la programación no se trata de aprender un lenguaje moderno moderno (lo que está de moda cambia cada siete años, de todos modos; tome un número).

Entonces, en lugar de partir de las soluciones supuestas, seamos buenos ingenieros: empecemos por lo dado y centrémonos en los objetivos . Se nos da este niño. Ella es brillante, lo que es genial. Pero ahora, déjame preguntarte: ¿tiene enfoque y persistencia? ¿Y ella tiene el deseo de hacer las cosas bien?

Si la respuesta es sí (¡esto se parece mucho a mi hija!), Permítame darle una respuesta partidista. Muchos de los padres de los que he oído hablar han usado la primera o la segunda edición de Cómo diseñar programas. La primera edición es más formal; La segunda edición utiliza la creación de juegos interactivos como motivación. Pero ambas ediciones enseñan numerosas cosas que un currículo tradicional de informática no cubre bien, o incluso en algunos casos:

  • Una forma metódica de diseñar programas.
  • Una comprensión del papel que juegan los ejemplos en el diseño del programa.
  • Una introducción ligera al pensamiento acerca de las pruebas y especificaciones.
  • Una introducción al pensamiento acerca de la capacidad de revisión y la capacidad de supervivencia del software.
  • Una comprensión superior de las pruebas.
  • [ Segunda edición ] Una excelente introducción a la descomposición del modelo-vista-controlador y su interacción con las pruebas, pero hecha sin la “religión” que rodea estos términos en la comunidad de ingenieros de software.

Como esta lista debe dejar en claro, todas estas son preocupaciones bastante “adultas”. Pero son accesibles para un niño, porque en realidad son nociones bastante simples; simplemente se enturbian en verborrea y aceite de serpiente en conceptos de ingeniería de software tradicionales. HtDP quita toda esa basura.

Sin embargo, el HtDP no está realmente diseñado para niños de 10 a 13 años, a menos que tengan un padre que trabaje con ellos en cada paso del camino. Afortunadamente, hay una versión accesible de 10-13 de HtDP, y se llama Bootstrap. Está diseñado para estudiantes de secundaria; hay libros de trabajo y todo el material que uno necesitaría para ejecutar su propia clase. Mientras que HtDP está diseñado para “adultos”, Bootstrap está diseñado para “niños”. Utiliza los mismos principios, pero lo que hace es simple: los estudiantes diseñan un juego el primer día; pasan nueve semanas implementando el juego (comenzando sin experiencia previa en programación); y luego, tienen una fiesta de lanzamiento donde muestran el juego. Sencillo, nada complicado, tan divertido como puedas imaginar. Los estudiantes obtienen una camiseta de “Programo mis propios videojuegos” y me encanta.

Sin embargo, en el proceso, en lugar de solo piratear, aprenden la mayoría de los principios anteriores. Y, de hecho, también aprenden bastante álgebra; de hecho, en la mayoría de las escuelas de los EE. UU. Que lo utilizan, Bootstrap se enseña en clases de álgebra , no en clases de programación (que apenas existen). Hace un trabajo suficientemente bueno enseñando álgebra (por sigilo) que los maestros de matemáticas lo enseñan. Ha sido especialmente bueno para los estudiantes que tienen problemas con el álgebra, lo han fallado antes, etc., porque les permite centrarse en el juego y los aspectos de la programación y aprender álgebra a escondidas.

Para las personas que piensan que los planes de estudio de computación deberían ser “divertidos” y que pueden aprender de la “manera correcta” más adelante: caracterizaría esto como una epidemia. Ninguna otra materia se enseña de esa manera. ¿Dice el inglés a nivel de la escuela: “Reúna algunas palabras, no se preocupe por la gramática, puede aprender de la manera correcta más tarde”? ¿Dice la química a nivel de la escuela “Simplemente mezcle estos líquidos, obtendrá algunos colores bonitos, cómo y lo que hace no es relevante, puede aprender” lo real “más adelante? Por supuesto no. Más bien, todas las demás asignaturas estructuran sus planes de estudio como una revelación gradual : se combinan la motivación y los principios en una buena proporción, pero se tienen en cuenta los principios al crear la motivación. Entonces, ¿por qué permitimos que los currículos de computación tengan expectativas tan bajas?

Un descargo de responsabilidad obvio: soy coautor de todo este material, así que, por supuesto, soy parcial. Por otro lado, todo lo anterior es gratuito: los libros de texto, los libros de trabajo, el software, etc.

Enseñale basico

Comencé a aprender programación con BASIC y, a lo largo de los años, me di cuenta de que era el lenguaje adecuado para aprender sobre computadoras. Así que voy a proponer BASIC como el lenguaje de programación inicial para su hijo. Me doy cuenta de que la mayoría de las personas lo consideran un lenguaje arcaico, pero permítame justificar mi afirmación.

Aprender a programar implica aprender una larga lista de conceptos, desde los detalles más bajos de la computadora, como la memoria y la CPU hasta los niveles más altos de abstracción, como la herencia y los tipos que los programadores utilizan para simplificar sus programas. Diferentes idiomas eligen diferentes niveles de abstracción.

Si comienzas demasiado bajo en la capa de abstracción, las cosas se vuelven realmente difíciles de entender porque ahora tienes que aprender un montón de cosas sobre cómo funciona la computadora. Si, por el contrario, subes demasiado, debes comprender conceptos realmente abstractos que tienen poco que ver con la forma en que la computadora está haciendo lo que le dijiste que hiciera.

Creo que BASIC ocupa el punto medio perfecto aquí. La mayoría de los comandos BASIC tienen una correspondencia directa con el código de máquina que la computadora realmente entiende. Entonces, si escribes el código BÁSICO, la estructura de tu programa generalmente coincide con lo que realmente está haciendo la computadora. Por ejemplo, la instrucción GOTO corresponde directamente a la instrucción JMP, que se utiliza para implementar bucles en el código de máquina. Alguien que ha usado declaraciones GOTO entiende de inmediato cómo funcionaría un bucle FOR o WHILE bajo el capó.

Cuando más tarde aprendí lenguajes de nivel superior como C ++, Java y Python, me di cuenta de que los lenguajes más populares que se usan en la actualidad son demasiado altos para que los principiantes tengan sentido, lo que a menudo los lleva a un patrón de aprendizaje por memorización en lugar de aprender. como algo realmente funciona Esta es una razón común que hace que las personas dejen de programar porque les resulta demasiado arbitraria y difícil.

Si necesita más justificación, vea cómo se ve un programa simple en BASIC [1]:

10 INPUT "What is your name: ", U$
20 PRINT "Hello "; U$
30 INPUT "How many stars do you want: ", N
40 S$ = ""
50 FOR I = 1 TO N
60 S$ = S$ + "*"
70 NEXT I
80 PRINT S$
90 INPUT "Do you want more stars? ", A$
100 IF A$ = "Y" OR A$ = "y" THEN GOTO 30
110 PRINT "Goodbye "; U$
120 END

Incluso si nunca has escrito un programa, probablemente puedas decir cómo funciona esto. El mismo programa en otros lenguajes populares como Java, C ++ o Python implica aprender muchos más conceptos (funciones, ámbitos, sintaxis, etc.) solo para comenzar.

Mi única preocupación sería que BASIC haya perdido popularidad tanto que será difícil encontrar un buen tutorial para niños. Puedo encontrar uno para ti si quieres probar esto. Aquí hay un editor de BASIC en línea, si lo quieres ver: Applesoft BASIC en JavaScript.

[1] a través de BASIC

Aprendí a programar cuando tenía unos 14 años. En realidad no tenía demasiado interés en las computadoras en ese momento.

La “instrucción” en mi escuela secundaria era casi inexistente.

Durante las primeras semanas, hubo algunos tutoriales / ejercicios que me enseñaron lo básico, pero incluso esos fueron auto-impulsados. No había “tiempo de clase”. Simplemente seguí los ejercicios y había un profesor para hacer preguntas cuando lo necesitaba.

Después de eso, estaba por mi cuenta. Pasé los siguientes años aprendiendo muy poco. Esto fue antes de los días de tutoriales en Internet, y no teníamos libros de texto. No tenía idea de lo que no sabía. Nunca escuché sobre clases o punteros hasta que llegué a la universidad.

Pero lo que hice fue pasar mucho tiempo creando programas y juegos. Estoy muy agradecido por ese tiempo. Podía construir cosas que quería y podía ver realmente lo que estaba haciendo. Eso fue emocionante y lo hizo totalmente diferente de las clases de matemáticas y ciencias.

No estaba, por ningún lado de la imaginación, conocedor de la programación. Pero lo que sabía era que me encantaba la programación. En última instancia, ese conocimiento era mucho más importante que cualquier cosa que pudiera haber aprendido en la escuela secundaria.

Cuando llegué a la universidad, conseguí algunos buenos profesores y algunos terribles. Recibí algunas clases que parecían relevantes e interesantes, más un grupo que no lo hizo. Mi universidad era altamente teórica y conceptual, y no estaba tan centrada en darnos un montón de experiencia en programación. No estoy seguro de haberme quedado con él si no hubiera descubierto en la escuela secundaria (y realmente, realmente sabía) que me encantaba programar.

A su hija le queda mucho tiempo para descubrir la manera “correcta” de crear programas y aprender los conceptos importantes. Lo que es importante ahora es captar su interés. (Y, francamente, si no capta su interés ahora, aprender los conceptos correctos no importará ya que renunciará).

¿Qué la excita?

¿Es ella como yo, y le encanta construir cosas? Si es así, olvídate de cuál es el “mejor” idioma y elige un lenguaje para lo que quiera hacer: aplicaciones iOS, un juego, una aplicación web, etc. Encuentra un tutorial que le enseñará lo básico (para bucles, clases). , etc) y cómo construir su primera aplicación. Déjala ir desde allí.

¿Le encanta estudiar y aprender todos los detalles a su alrededor antes de comenzar? (Tenga en cuenta que mucha gente dice que les encanta aprender. Pocos lo hacen de manera profunda y sincera). Si es así, aprender los conceptos subyacentes podría ser el camino correcto.

Captar su interés. El resto seguirá.

Como alguien que comenzó muy temprano en la programación de la vida, lo que me mantuvo en marcha fue la gratificación instantánea de los programas orientados a gráficos.

El lenguaje o la plataforma no es muy relevante (evite lenguajes obviamente defectuosos como PHP)

Todo lo que un niño necesita es una etiqueta HTML y conocimientos básicos de JavaScript. Haz que entienda la geometría 2D básica y la trigonometría, déjala crear programas visuales que no hagan más que verse bonitos.
Después de un tiempo puede intentar hacer juegos simples como Pong o Meteor.

A medida que ella progresa, también hágale estudiar las cosas formales (soy parcial a algunas de estas), así como las cosas del mundo real.
Los siguientes libros y lineamientos.

  • Algoritmos + programas = Estructuras de datos de Niklaus Wirth – Sí, Pascal es el lenguaje ideal para principiantes.
  • Haz que aprenda Delphi o la herramienta gratuita similar Lazarus, para aprender a crear GUIs y a programar eventos.
  • Haz que aprenda Esquema o Raqueta y resuelva pequeños desafíos de programación.
  • “HTDP” y la serie “Little Schemer” son muy buenas.

En un par de años podrá ver en qué rama de la informática o de la programación en general está interesada. Si es seria, pídale que haga algunos MOOC sobre algoritmos, etc.

Entonces ella puede tomar ciencias de la computación o disciplinas relacionadas en la universidad.
¡O tal vez pueda crear una aplicación increíble incluso antes de que llegue a la universidad!

Yo tengo 13.
1.tienes que darte cuenta, ella tiene que aprender ella misma, investigar y jugar con la programación, no preguntarte cada hora
2. Deje que elija un idioma, investigue a sí misma, cuando lo decida, lo discuta con ella, le daré una pista, python para que sea más fácil, factible para un niño y buena para scripting, c ++ para juegos de gama alta (esto tardaré muchos años en dominarlo y será difícil, ya que la primera lengua será c para la programación general, buena para aprender estructuras de datos, pero nuevamente no es la mejor para principiantes, la lista continúa pero no entraré en batallas de lenguas ( ehm enojado c el programador no me grite en los comentarios;)).

, déjala elegir un objetivo, no uno como “trabajar como desarrollador de software cuando sea mayor”
Más como un pequeño objetivo que le gustaría alcanzar, por ejemplo, cuando comencé a programar, me interesé mucho por el cifrado, así que decidí hacer un script de encriptación (disfruté mucho al hacerlo).
Después de eso, ella misma lo logrará, si alcanzó su meta la dejó en libertad, en ese momento probablemente sepa investigar, preguntar, leer antes de preguntar realmente bien.
La mejor de las suertes

Necesitas encontrar lo que le interesa. Me enseñé a mí mismo a programar a los 13 años, y una de las razones por las que me encantaba era porque podía construir lo que quisiera. Era un lienzo en blanco. Me encantaba jugar videojuegos. Entonces, comencé a hacer un clon de Mario. Mi hermano y yo podríamos hacer medio nivel más o menos. Pero fue divertido

Uno de los inconvenientes de aprender a programar cuando era niño era que era imposible compartir tu creación con alguien más. Podría hacer un gráfico o un juego, pero solo lo vi mi hermano y yo. No podía salir de los confines de la pantalla. Afortunadamente, el siglo XXI tiene muchos avances que permiten a los niños compartir lo que han construido.

La robótica es uno de esos grandes avances. Tienes Mindstorms. Tienes Raspberry Pi. Su hija podría programar un robot y luego compartir lo que ha creado con el mundo. La robótica convierte lo abstracto en lo físico. Esa es una poderosa herramienta de enseñanza. Cuando ves que las cosas pasan, puedes entenderlas mejor.

Minecraft es otro de esos avances. Es legos programable. Si a su hijo le encantan los Legos, puede usar la misma parte de su cerebro que hace los Legos para construir en Minecraft y luego programarlos.

Tiene que ser intrínsecamente divertido.

Eso es lo que obtengo cuando leo sobre personas que se engancharon temprano a la programación. Fue divertido. Se perdieron en ello. Se involucraron en un circuito de retroalimentación positiva temprano y siguieron viendo la siguiente mejor cosa que podrían construir.

Deja que codifique las cosas que le gustan. Dale lo suficiente para que se ponga en marcha, guíala un poco, pero luego retrocede y deja que se divierta con ella sola. Ella realmente nunca aprenderá mucho ni obtendrá tan bien a menos que sea impulsada por su propio deseo / interés.

Lo siento si estabas buscando ejemplos específicos como Raspberry Pi, Angular, diseño de juegos o algo así.

A mi hijo de 6 años no le gustó Scratch, pero a él le gustan los rompecabezas y las matemáticas. No ha resquebrajado, todavía, el Hoberman Brain Twist o el cubo de Rubik.
Siento que ayuda más que él comienza a ver el mundo a través de las matemáticas y está interesado en descubrir cómo y por qué funcionan las cosas. Todavía estamos haciendo cosas que están fuera del alcance de Coputers y debemos dar un paso adelante para mantener nuestro liderazgo sin importar qué tan buenas sean las computadoras.

Me tomó 15 años entender lo que dijo uno de mis maestros. Es sorprendente que se aplique a la vida, así como al desarrollo de software y la ingeniería de sonido:
Sudas ahora para ser bueno. Pero tenga en cuenta que en las artes marciales la diferencia entre lo bueno y lo grande reside en la comprensión de la anatomía humana. La estrategia es la más difícil de dominar porque actúa como el pegamento y da cohesión. Tienes que tener todas las piezas correctas en todos los lugares correctos para que se mantengan en armonía. Ejercita tu kung fu diariamente para que nunca necesites usarlo.

Si tienen entre 10 y 13 años de edad, entonces asumo que están en la escuela intermedia. Por ahora, recomiendo que vayan a Code Academy, u otro sitio web del tipo, y aprendan los conceptos básicos de Python y Java. Pídales que descubran los conceptos básicos de la programación, y permítales explorar cómo aplicar la programación a lo que les apasiona (juegos, programas prácticos, robots de construcción, etc.). Puede (y debe) también inscribirlos en algunos campamentos de codificación durante el verano.

Si aún lo disfrutan cuando llegan a la escuela secundaria, pídales que se inscriban en una clase de programación (suponiendo que su escuela ofrezca una).

¡Buena suerte!

Voy a recomendar el siguiente lenguaje de programación, que fue mi introducción a la programación. Lo bueno del lenguaje de este niño es que es similar a C / C ++, y proporciona capacidades gráficas simples y agradables como dibujar círculos de colores / rectángulos, etc. y, por lo tanto, poder emocionar a los niños.

JUDO – Java IDE para niños y programadores principiantes

Solo déjala hacer lo que quiera.
Déjala decidir.
Ella debe elegir los libros, los tutoriales, los IDE.

Así lo aprendí (tenía como diez años y ahora tengo 14).

Comencé con el peor lenguaje que pude, C ++.
Pero mi fracaso realmente me ayudó.

Y luego aprendí php, java y finalmente actionscript 3, que todavía utilizo para hacer juegos flash.

Nuevamente, si tiene una pregunta, no solo responda, en vez de eso, pídale que lea un libro o algo así.

Estoy de acuerdo con el comentario de que tiene que ser intrínsecamente divertido .

Este objetivo se puede lograr de varias maneras.

Algunas personas solo necesitan una idea para un proyecto pequeño alcanzable que codifican. Así es como muchas personas aprenden a programar.

También estoy de acuerdo en que la pedagogía en la codecogía es … bien … defectuosa. De hecho, es por eso que creamos Learn python with Penjee, un juego interactivo para que los niños aprendan su primer lenguaje de programación escrito a mano, que muchas personas y escuelas usan como su primera parada después del rasguño u otras aplicaciones de arrastrar y soltar. Obviamente, estoy realmente sesgado, pero hicimos el sitio con el objetivo de facilitar la codificación de texto de los niños de una manera intrínsecamente divertida.

Enséñale a java

Estoy seguro de que voy a sentir mucho odio por esto, pero Java es algo que tiene una curva de aprendizaje, pero con el tiempo y la práctica, lo que aprendes en Java puede llevarse a otros lenguajes como C ++.

En esencia, si ella se toma el tiempo y el esfuerzo para aprender Java, entonces no debería tener un shock al ir a lenguajes más duros, además, es una buena oportunidad si continúa con la AP Ciencias de la Computación, tendrá que tener un Comprensión de Java.

Bueno, primero tendrás que definir qué significa rasguño para ti. Entonces, si ella sabe lo suficiente, puede intentar construir sus propias ideas y hacerlas (probablemente usará google y aprenderá mucho). Además, hay muchos motores de juego que puedes elegir y comenzar a construir juegos con ellos. Creo que construir juegos sería una experiencia maravillosa para ella.