¿Las mejores maneras de enseñar a un principiante a programar? [closed]

6 minutos de lectura

Pregunta inicial

Actualmente me dedico a enseñar a mi hermano a programar. Es un principiante total, pero muy inteligente. (Y él realmente quiere aprender). He notado que algunas de nuestras sesiones se han atascado en detalles menores y siento que no he sido muy organizado. (Pero las respuestas a este post han ayudado mucho.)

¿Qué puedo hacer mejor para enseñarle de manera efectiva? ¿Hay un orden lógico que pueda usar para recorrer concepto por concepto? ¿Hay complejidades que debo evitar hasta más tarde?

El lenguaje con el que estamos trabajando es Pitónpero los consejos en cualquier idioma son bienvenidos.


Como ayudar

Si tiene buenos, agregue lo siguiente en su respuesta:

  • Ejercicios para principiantes e ideas de proyectos
  • Recursos para enseñar a principiantes
  • Capturas de pantalla / publicaciones de blog / libros electrónicos gratuitos
  • Imprimir libros que son buenos para principiantes

Por favor describa el recurso con un enlace a ella para que pueda echar 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:


Libros impresos recomendados para enseñar a principiantes

  • C++ acelerado
  • Programación en Python para principiantes absolutos
  • Código de Charles Petzold
  • Programación en Python: una introducción a las ciencias de la computación, 2.ª edición

  • No entiendo por qué esto debería estar cerrado. Al menos 295 usuarios han encontrado que esta pregunta (y las 92 respuestas) es lo suficientemente útil como para votarla, y 290 llegaron a considerarla una de sus favoritas. La pregunta resultó en una agregación muy útil de recursos didácticos. Realmente no ha resultado en ‘argumentos’ o ‘debates’, sino en muchos buenos consejos sobre cómo abordar uno de los ‘factores humanos’ difíciles en la programación. Creo que cerrar una pregunta como esta es draconiano y perjudicial para la comunidad de StackOverflow.

    – Justin Estándar

    17 de septiembre de 2011 a las 17:58


  • @JustinStandard ¿Ha considerado convertir sus ediciones en varias de las respuestas a los comentarios? Por ejemplo, aquí, aquí y aquí.

    – Jason Tablón

    18 de octubre de 2011 a las 14:14


Podrías intentar usar Alicia. Es un programa 3D diseñado para su uso 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 le permite construir mundos en 3D y hacer que su código controle (simplemente) personajes y animaciones en 3D, lo que suele ser mucho más interesante que implementar listas enlazadas.

Los programadores experimentados pueden ver a Alice como un juguete y burlarse de arrastrar y soltar líneas de código, pero investigar muestra que este enfoque funciona.

Descargo de responsabilidad: trabajé en Alice.

  • Lo supe por la última conferencia de Randy Pausch. El razonamiento detrás de este proyecto me dejó alucinado.

    – Jesvin José

    26 de agosto de 2011 a las 7:46

  • En realidad, no administra completamente la memoria en C. Puede tener malloc, etc., y administrarlo gratis por usted. Solo tiene que decirle al sistema cuándo desea más memoria y cuándo ha terminado con la memoria que ha estado usando.

    – compañero

    24 de julio de 2011 a las 0:52

Un buen curso de python es el del MIT Una introducción suave a la programación usando Python. Todo es gratis en línea, y no es necesario ser un superestudiante del MIT para entenderlo.

Editar [Justin Standard]

Este curso utiliza este libro gratuito en línea: Cómo pensar como un científico informático

Definitivamente lo estoy encontrando bastante útil.

Paquete Python VPython — Programación 3D para mortales ordinarios (videotutorial).

Ejemplo de código:

from visual import *

floor = box (pos=(0,0,0), length=4, height=0.5, width=4, color=color.blue)
ball = sphere (pos=(0,4,0), radius=1, color=color.red)
ball.velocity = vector(0,-1,0)
dt = 0.01

while 1:
    rate (100)
    ball.pos = ball.pos + ball.velocity*dt
    if ball.y < ball.radius:
        ball.velocity.y = -ball.velocity.y
    else:
        ball.velocity.y = ball.velocity.y - 9.8*dt

Pelota que rebota de VPython http://vpython.org/bounce.gif

Comience con gráficos Turtle en Python.

Usaría los gráficos de tortuga que vienen de serie con Python. Es visual, simple y podría usar este entorno para introducir muchos conceptos de programación como la iteración y las llamadas a procedimientos antes de profundizar demasiado en la sintaxis. Considere la siguiente sesión interactiva en python:

>>> from turtle import *
>>> setup()
>>> title("turtle test")
>>> clear()
>>>
>>> #DRAW A SQUARE
>>> down()        #pen down
>>> forward(50)   #move forward 50 units
>>> right(90)     #turn right 90 degrees
>>> forward(50)
>>> right(90)
>>> forward(50)
>>> right(90)
>>> forward(50)
>>>
>>> #INTRODUCE ITERATION TO SIMPLIFY SQUARE CODE
>>> clear()
>>> for i in range(4):
        forward(50)
        right(90)
>>>
>>> #INTRODUCE PROCEDURES   
>>> def square(length):
        down()
        for i in range(4):
            forward(length)
            right(90)
>>>
>>> #HAVE STUDENTS PREDICT WHAT THIS WILL DRAW
>>> for i in range(50):
        up()
        left(90)
        forward(25)
        square(i)
>>>
>>> #NOW HAVE THE STUDENTS WRITE CODE TO DRAW
>>> #A SQUARE 'TUNNEL' (I.E. CONCENTRIC SQUARES
>>> #GETTING SMALLER AND SMALLER).
>>>
>>> #AFTER THAT, MAKE THE TUNNEL ROTATE BY HAVING
>>> #EACH SUCCESSIVE SQUARE TILTED

Al tratar de realizar las últimas dos tareas, tendrán muchos intentos fallidos, pero las fallas serán visualmente interesantes y aprenderán rápidamente mientras intentan descubrir por qué no dibujó lo que esperaban.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad