La mejor manera de enseñarle a alguien a programar es darle un objetivo y decirle que puede hacer cualquier pregunta que desee. Comience con algo pequeño quizás, pero deles algo que haga algo.
Quiero que escribas una aplicación que le pida al usuario su nombre y luego le diga hola. (De entrada y salida)
Ahora escriba una aplicación que le pida al usuario que ingrese dos números y los sume. (Operaciones básicas)
- ¿Puede el ingeniero civil hacer trabajo como codificador?
- ¿Qué debería uno aprender a ser un científico de datos?
- Acabo de comenzar la escuela para el diseño UX. ¿Cómo puedo tener más éxito en encontrar un trabajo en un año?
- Cómo conseguir un trabajo bien remunerado como un recién graduado en informática
- Para el UPSC, ¿es necesario leer el periódico o pueden ser suficientes las revistas mensuales?
Ahora haga que la aplicación pregunte qué operación desean realizar (suma, resta, multiplicación o división), solicite los números y realice la operación. (Introducción de lógica condicional)
Ahora haga que esa aplicación siga solicitando números y operaciones hasta que el usuario ingrese una entrada en blanco. Bonificación si la aplicación obedece el orden de las operaciones. (Bucles)
Haga que el alumno inicie la aplicación desde cero cada vez. Porque a medida que reescriben la entrada, la salida, la operación y la lógica condicional, se refuerza.
Cualquier concepto que quieras enseñar puede agregarse a esto. ¿Quieres enseñar operaciones de red? Haga que el alumno escriba un servidor que escuche una solicitud matemática y devuelva el resultado a un cliente.
¿Quieres enseñar HTML? Escriba una página web servida por un servidor que presente un formulario y cuando el usuario lo envíe, el servidor devolverá la respuesta.
JavaScript? Haga que la página web haga las operaciones del lado del cliente.
iOS? Haz una aplicación de calculadora.
Presentemos nuevos conceptos, ¿qué sucede si quiero presentar problemas a un usuario y hacer que lo resuelvan y la aplicación verifica la respuesta? Al principio pueden ser problemas codificados con la respuesta proporcionada. El alumno ya tiene las habilidades para hacer esto.
Pero, ¿qué pasaría si quisiéramos permitir que un maestro creara problemas y la aplicación los almacenara para el usuario? Ahora estamos introduciendo almacenamiento.
¿Qué sucede si queremos que las aplicaciones se conecten a un servidor central “problemático”, recuperar un conjunto de problemas e informar los resultados del usuario al servidor?
De repente, estamos entrando en el ámbito de la construcción de un LMS y esto es solo después de 12 lecciones.
Hay temas complementarios que pueden abordarse en el camino, como el control de origen, la implementación de una aplicación en la nube, la recopilación de requisitos, la gestión de proyectos, las revisiones de código, las pruebas unitarias, etc.
¿Cuáles son las claves de este enfoque?
- Bucle de retroalimentación: desde el primer día, el alumno es recompensado por sus esfuerzos
- Reforzar: a medida que introducimos nuevos conceptos, reforzamos los que ya se han aprendido
- Práctico: el estudiante está construyendo a la larga una aplicación del mundo real. Durante doce semanas, han construido algo que se puede demostrar que muestra cuán lejos han llegado de solo escribir hello world.
- Complementado fácilmente: puede agregar lecciones sobre teoría y funcionamiento interno de las computadoras, pero no son el núcleo de este plan de estudios
- Repetible y modificable: una vez que haya enseñado a utilizar este enfoque, puede modificarlo y enfocarse en aquellos elementos que importan. Cambie hacia lo que está construyendo (por ejemplo, haga que el curso se desarrolle hacia un clon de Twitter; el ejercicio sobre cómo trabajar las operaciones matemáticas en un clon de Twitter se deja para el lector)
Lo importante es que el alumno tenga un tiempo constante practicando programación porque ese es el ÚNICO método comprobado consistentemente de aprender a programar … la repetición.