miércoles, 25 de marzo de 2009

Estudiar Programación

Esta entrada no tiene ningún test. Sólo es para plasmar una opinión acerca de cómo se enseña (mayormente) programación en, por lo menos, Argentina.
Mejor dicho, voy a exponer como creo que se debería enseñar haciendo referencia por momentos a cómo se enseña o a aquellos aspectos que considero erróneos.

Primero, considero que los métodos tradicionales de enseñanza no son aplicables. Con esto me refiero al esquema:

Pizarrón --> Profesor --> Alumnos

Éste esquema lineal es, o puede ser, muy útil en otros ámbitos. En programación no sirve de nada. No existe tal cosa como "teóricas"(o, al menos, no debería).
El esquema que propongo es:

|----> Profesor (si se requiere)
|
alumno <--> PC
|
|-------> Google, manuales y/o pdf

Explico:
El alumno tiene una pc (una por alumno)
Al alumno se le dan tareas de programación. Es decir, se lo hace programar, subiendo en dificultad claro, pero estando en contacto con el código, debugger, y compilador (si lo hubiera) desde la primer clase.
El alumno debería tener acceso a bibliografía (puede ser impresa o material en la pc) sobre el lenguaje en cuestión. Además de google y cualquier otro medio que el profesor (o incluso el alumno) proponga.
Ante cualquier tipo de duda, el profesor debe tener el conocimiento para acercarse a la pc del alumno y ver el problema con éste.
Cada clase tiene un mini TP que hay que entregar.

Con esto logramos varias cosas:
1) Por un lado que la clase sea entretenida. Nadie quiere escuchar a un tipo hablar más de media hora.
2) El alumno comienza a programar desde la primera clase con problemas lo más reales posibles.
3) Si un alumno avanza más rápido que otro no se aburre porque va a su ritmo. Lo mismo para uno que sea más lento, no se pierde.
4) Es fácil monitorear el avance antes de un parcial o prueba.
5) El alumno se entrena en "pensar". El foco está en resolver problemas, aplicar lógicas. Memorizar la sintaxis (saber si es print, printf, sprint, etc) no sirve de mucho. Es mejor aprender a pensar lógicas, sin importar la sintaxis (para eso están las referencias del lenguaje) En todo caso, es mejor saber pensar, memorizar la sintaxis va a venir sólo con el uso mismo del lenguaje.

Cómo una excepción a lo que serían las teóricas, se podrían dedicar unas clase si es que los alumnos no poseen conocimientos de programación (es decir, si están de cero) a explicar conceptos básicos como: qué es un loop, un condicional, etc
Pero esto sólo si es necesario.

Para la evaluación, con los TP se va viendo si el alumno progresa o no (ya que son individuales)
Como final, se podría hacer un TP grande o un parcial.
En el caso de un parcial, obviamente, escrito en papel no tiene sentido (si, en algunos lados toman asi) . Mucho menos creo que haya que hacerle memorizar las sintaxis, o preguntas del tipo:
Cuántos parámetros lleva el bucle For?
Los manuales que el alumno tiene en los TP, debería tenerlos en el final o parcial. Lo importante es que sepa pensar y resolver los problemas. El memorizar la sintaxis no es, NI DEBERIA SER, la finalidad.

Para finalizar, solo quiero agregar que este esquema respondería a lo que un autodidacta haría en su casa:
- Instalar una Ide o interprete (o lo que se necesite de un lenguaje)
- Probar algo sencillo
- Programar algo mas real.
- Consultar un manual, manual online, google, etc
- Programar
- Consultar un manual, manual online, google, etc
- Programar
- Consultar un manual, manual online, google, etc
- Programar
- Consultar un manual, manual online, google, etc
- Programar
- Consultar un manual, manual online, google, etc
- Programar
....

Esta es la forma de aprender de verdad. Entonces, porqué no aplicarla (de manera más controlada si se quiere) a las cátedras y/o cursos de programación?

1 comentario:

  1. Soy profe... tengo una pc por alumno, y mis alumnos me pidieron el pizarron por que es mas practico a la hora de estudiar. LA pc la prefieren en su casa... y bue ellos mandan

    ResponderEliminar