¿Las mejores formas de enseñarle a programar a un principiante? [cerrado]

Resuelto Justin Standard asked hace 16 años • 0 respuestas

Pregunta original

Actualmente me dedico a enseñarle a programar a mi hermano. Es un principiante total, pero muy inteligente. (Y él realmente quiere aprender). He notado que algunas de nuestras sesiones se han estancado en detalles menores y no siento que haya estado muy organizado. ( Pero las respuestas a esta publicación han ayudado mucho ) .

¿Qué puedo hacer mejor para enseñarle eficazmente? ¿Existe un orden lógico que pueda utilizar para analizar concepto por concepto? ¿Hay complejidades que debería evitar hasta más tarde?

El lenguaje con el que estamos trabajando es Python , pero se aceptan consejos en cualquier idioma.


Como ayudar

Si tiene buenos, agregue lo siguiente en su respuesta:

  • Ejercicios para principiantes e ideas de proyectos
  • Recursos para enseñar a principiantes.
  • Screencasts / publicaciones de blog / libros electrónicos gratuitos
  • Imprima libros que sean buenos para principiantes

Describa el recurso con un enlace para que pueda echarle un vistazo. Quiero que todos sepan que definitivamente he estado usando algunas de estas ideas. Sus envíos se agregarán en esta publicación.


Recursos en línea para enseñar a principiantes:

  • Una suave introducción a la programación con Python
  • Cómo pensar como un informático
  • Alice: un programa 3d para principiantes
  • Scratch (Un sistema para desarrollar habilidades de programación)
  • Cómo diseñar programas
  • Estructura e interpretación de programas informáticos.
  • Aprende a programar
  • Cómo ser programador de Robert Read
  • MicrosoftXNA
  • Generando la próxima generación de hackers
  • COMP1917 Conferencias de Computación Superior impartidas por Richard Buckland (requiere iTunes)
  • Sumérgete en Python
  • Wikilibro de Python
  • Proyecto Euler : problemas de muestra (principalmente matemáticos)
  • pygame : una biblioteca de Python sencilla para crear juegos
  • Inventa tus propios juegos de computadora con Python
  • Fundamentos de programación para un siguiente paso más allá de lo básico.
  • Chirriar con el ejemplo
  • Disputa de serpientes para niños (¡no es sólo para niños!)

Libros impresos recomendados para enseñar a principiantes.

  • C++ acelerado
  • Programación Python para principiantes absolutos
  • Código de Charles Petzold
  • Programación Python: Introducción a la informática, segunda edición
Justin Standard avatar Aug 06 '08 12:08 Justin Standard
Aceptado

Tuve que trabajar con varios programadores principiantes (nunca escribí una línea de código) y este otoño haré un taller extracurricular con estudiantes de secundaria. Esto es lo más parecido que tengo a la documentación. Todavía es un trabajo en progreso, pero espero que ayude.

1) FizzBuzz. Comience con programas de línea de comando. Puede escribir algunos juegos o herramientas divertidos muy rápidamente y aprender todas las funciones del lenguaje muy rápidamente sin tener que aprender primero las herramientas GUI. Estas primeras aplicaciones deberían ser lo suficientemente simples como para que no sea necesario utilizar ninguna herramienta de depuración real para que funcionen.

Al menos cosas como FizzBuzz son buenos proyectos. Sus primeras aplicaciones no deberían tener que lidiar con bases de datos, sistemas de archivos, configuración, etc. Estos son conceptos que confunden a la mayoría de las personas, y cuando recién estás aprendiendo la sintaxis y las características básicas del marco, realmente no necesitas más complejidad.

Algunos proyectos:

  • ¡Hola Mundo!
  • Tome el año de mi nacimiento y calcule mi edad (solo (ahora - entonces) sin correcciones de mes). (matemáticas simples, entrada, salida)
  • Solicite una dirección (arriba, abajo, izquierda, derecha), luego dígale al usuario su destino (caer en un agujero, encontrar un pastel, etc.). (Lógica booleana)
  • FizzBuzz, pero cuenta una vez por segundo. (Bucles, temporizadores y más lógica)
  • Dependiendo de su edad, a algunos les gusta mucho una aplicación que insulta a los usuarios al azar en algún intervalo. (Bucles, matrices, temporizadores y aleatorios si el intervalo es aleatorio)

2) Proyecto simple Una vez que comprendan bien las características del lenguaje, puede comenzar un proyecto (los juegos simples y divertidos funcionan bien). Debe intentar que el primer proyecto pueda completarse en un plazo de 6 a 12 horas. No pierda tiempo diseñándolo temprano. Déjalos diseñarlo incluso si apesta. Si fracasa, hable sobre lo que sucedió y por qué falló, luego elija otro tema y comience de nuevo.

Aquí es donde comienza a presentar las capacidades de depuración de sus herramientas. Incluso si puedes ver el problema leyendo el código, debes enseñarles cómo usar las herramientas y luego mostrarles cómo puedes verlo. Esto tiene el doble propósito de enseñar las herramientas de depuración y enseñar cómo identificar errores sin herramientas.

Una vez que el proyecto se vuelva funcional, puede usarlo para introducir herramientas de refactorización. Es bueno si luego puedes ampliar el proyecto con algunas características simples que nunca planeaste. Esto generalmente significa refactorización y depuración significativa, ya que muy pocas personas escriben incluso un código medio decente la primera vez.

Algunos proyectos:

  • juego del ahorcado
  • Experimentar con robótica ( Vex y Mindstorms son opciones)

3) Proyecto Real Inicie un proyecto real que puede llevar algún tiempo. Utilice un control de fuente adecuado y asegúrese de tener un cronograma. Ejecute este proyecto como un proyecto real, al menos es una buena experiencia tener que lidiar con las herramientas.

Obviamente necesitas ajustar esto para cada persona. Lo más importante que he encontrado es hacer que incluso las primeras aplicaciones simples se apliquen a lo que le interesa a la persona.

Algunos proyectos:

  • Tetris
  • Motor de blog basado en archivos de texto
  • Trabajos de robótica más avanzados
Eric Haskins avatar Aug 06 '2008 06:08 Eric Haskins

Podrías intentar usar Alice . Es un programa 3D diseñado para usar en clases de introducción a la programación.

Los dos mayores obstáculos para los nuevos programadores suelen ser:

  • errores de sintaxis
  • motivación (escribir algo significativo y divertido en lugar de artificial)

Alice utiliza una interfaz de arrastrar y soltar para construir programas, evitando la posibilidad de errores de sintaxis. Alice te permite construir mundos 3D y hacer que tu código controle personajes y animaciones 3D (simples), lo que suele ser mucho más interesante que implementar listas enlazadas.

Los programadores experimentados pueden mirar a Alice como un juguete y burlarse de arrastrar y soltar líneas de código, pero las investigaciones muestran que este enfoque funciona.

Descargo de responsabilidad: trabajé en Alice.

Jason Pratt avatar Aug 06 '2008 05:08 Jason Pratt

Recomiendo Logo (también conocido como la tortuga) para entender los conceptos básicos. Proporciona un buen entorno de pruebas con retroalimentación gráfica inmediata y puede demostrar bucles, variables, funciones, condicionales, etc. Esta página proporciona un excelente tutorial.

Después de Logo, pase a Python o Ruby. Recomiendo Python, ya que está basado en ABC, que se inventó con el propósito de enseñar programación.

Cuando enseño programación, debo respaldar la sugerencia de EHaskins de proyectos simples y luego proyectos complejos. La mejor manera de aprender es comenzar con un resultado definido y un hito mensurable. Mantiene las lecciones enfocadas, permite al estudiante desarrollar habilidades y luego desarrollarlas, y le brinda algo para presumir ante sus amigos. No subestimes el poder de tener algo que mostrar por tu trabajo.

En teoría, puedes seguir con Python, ya que Python puede hacer casi cualquier cosa. Es un buen vehículo para enseñar programación orientada a objetos y (la mayoría) de los algoritmos. Puede ejecutar Python en modo interactivo como una línea de comando para tener una idea de cómo funciona, o ejecutar scripts completos a la vez. Puede ejecutar sus scripts interpretados sobre la marcha o compilarlos en binarios. Hay miles de módulos para ampliar la funcionalidad. Puedes crear una calculadora gráfica como la que viene con Windows, o puedes crear un cliente IRC, o cualquier otra cosa.

XKCD describe un poco mejor el poder de Python: "¡Estás volando! ¿Cómo?"  "¡Pitón!"

Puedes pasar a C# o Java después de eso, aunque no ofrecen mucho que Python no tenga ya. El beneficio de estos es que usan sintaxis de estilo C, que muchos (¿me atrevo a decir la mayoría?) lenguajes usan. No necesita preocuparse por la gestión de la memoria todavía, pero puede acostumbrarse a tener un poco más de libertad y menos control por parte del intérprete de idiomas. Python impone espacios en blanco y sangrías, lo cual es bueno la mayor parte del tiempo, pero no siempre. C# y Java le permiten administrar sus propios espacios en blanco sin dejar de estar fuertemente tipados.

A partir de ahí, el estándar es C o C++. La libertad en estos idiomas es casi existencial. Ahora estás a cargo de tu propia gestión de memoria. No hay recolección de basura para ayudarte. Aquí es donde se enseñan los algoritmos realmente avanzados (como mergesort y quicksort). Aquí es donde aprenderá por qué "fallo de segmentación" es una mala palabra. Aquí es donde descargas el código fuente del kernel de Linux y contemplas el Abismo. Comience escribiendo un búfer circular y una pila para la manipulación de cadenas. Luego sigue ascendiendo.

Magus avatar Aug 20 '2008 21:08 Magus

Un buen curso de Python es Una suave introducción a la programación usando Python del MIT . Todo es gratis en línea y no es necesario ser un súper estudiante del MIT para comprenderlo.

Editar [ Estándar Justin ]

Este curso utiliza este libro en línea gratuito: Cómo pensar como un informático.
Definitivamente lo encuentro bastante útil.

Justin Standard avatar Aug 06 '2008 05:08 Justin Standard