¿Como les enseñaron a programar?

Lukalo

Lanero Reconocido
16 Mar 2009
379
Hola amigos.

No se si este post va en este tema, pero no encontré otro mejor. (a mi parecer fué el mas adecuado)

Estoy trabajando en un proyecto de investigación, como investigador financiado por colciencias, que busca mejorar la enseñanza de la programación, y la idea es recopilar un grupo de analogias para posteriormente determinar cuales se considerna mas efectivas...y tratar de buscar un por qué.

Es por eso que quisiera preguntarles ¿qué analogías usaron para enseñarles conceptos basicos de la programación?... ej. Condicionales, ciclos, matrices, etc..)

En mi caso, recuerdo que cuando empecé a dar matrices el profesor solia decir que eran como las direcciones de una ciudad, pero solo con calles y carreras.. de forma que en la intersecciòn de ambas se encontraba la casa que queriamos visitar....

con qué ejemplos les enseñaron a ustedes, y cuales creen que fueron mas efectivos... o cual fue el peor :p

muchas gracias por su colaboración!.
 

sairus black

Lanero Reconocido
19 Ene 2008
1,848
Hola amigos.....No se si este post va en este tema, pero no encontré otro mejor................. Estoy trabajando en un proyecto de investigación, como investigador financiado por colciencias, que busca mejorar la enseñanza de la programación.......

Bueno por lo general cuando trato de explicar algún concepto de programación me gusta compararlo con algo mecánico y que la gente conozca muy bien por ejemplo, si hablamos de sockets suelo compararlo con una manquera de agua si es un soket tcp o con un un libro de visitas si es un soket unix... a ver como seria la parla para el de tcp...:

Un socket es un canal que se lleva información de un punto a otro por medio de dos conectores; es como llenar un tanque de agua con una manguera, el grifo del agua es el puerto de salida del socket y el tubo del tanque es el puerto de llegada, el agua es la información y la manguera es el canal del socket.

Sin embargo eso es algo meramente didáctico, sirve para enseñar como entender un algo no como hacerlo y aun cuando se logre enseñar como hacer ese algo es infinitamente difícil enseñar como usar ese algo en una aplicación siquiera medianamente practica.

No se si lo que voy a escribir es una barrabasada pero es lo que creo en este momento basándome en mi experiencia como alumno y como docente. Creo firmemente que es imposible enseñar a programar ya que la habilidad para programar es muy cercana a un talento ya que para ser buen programador es requisito indispensable poseer una elevada lógica estructural y sobre todo una creatividad muy despierta, los docentes podemos enseñar métodos, mostrar caminos, sintaxis o conceptos como el de matriz, socket, apuntador; pero enseñarle a alguien a programar, es decir enseñarle a que tome todo eso y lo una en algo funcional, es a mi modo de ver imposible, quien lo logra es únicamente por propia habilidad así que lo máximo que se puede es tratar de "despertar" esa habilidad y motivar a quien la tiene para que la aproveche.

Lo anterior es la conclusión a la que llegue de porque aun cuando se tienen buenos docentes de programación, las asignaturas concernientes son por lo general un desastre. Es posible que este equivocado pero es lo que pienso y seguirá así hasta que encuentre una evidencia que me haga cambiar esa idea.

En todo caso me parece una buena iniciativa la que planteas, actualmente estoy dictando diseño y no programación pero en unos días empezare un mínicurso de python, procurare anotar las cosas que resulten algo didácticas y te las posteo. Paz y suerte con el proyecto.:chino:
 

Lukalo

Lanero Reconocido
16 Mar 2009
379
Gracias por tu respuesta, y me parece muy interesante tu punto aunque no lo comparto del todo.

En lo personal creo que la mayoria de docentes que dictan clase de programación tienen buenos conocimientos, pero muy pocos tienen una buena metodología de enseñanza simplemente porque esta como tal no existe, cada metodología debe ser planteada para satisfacer su entorno y aún así debe ser constantemente revisada para mantener su efectividad... si de 100 profesores 2 explican bien un concepto... SON MUCHOS..., generalmente termina el estudiante aprendiendo de la forma mas ineficiente (en cuanto a tiempo y retorno)... Prueba y Error

Si una persona aprende los conceptos básicos (ciclos, condicionales, arreglos, recursividad, etc) con claridad y de forma solida, podrá entender conceptos mas avanzados que derivan de estos.

Adicionalmente hay un tema de madurez mental que debe tenerse en cuenta... ahora mas que nunca, están saliendo jovenes de 15 años a las universidades.. y estos rara vez tienen la estructura mental necesaria para llevar el nivel de abstracción necesario en la programación... (esto me lo dijeron varios psicologos... o seran que están locos? :p:p:p)

---------------------------------- ||| -----------------------------------------

Siguiendo con el tema de las analogías, me acabo de acordar del ejemplo del juego de la Batalla Naval, tambien para la explicación de matrices...

Y las filas de los bancos para la explicación de FIFO (First In First Out)
 

sairus black

Lanero Reconocido
19 Ene 2008
1,848
...........Adicionalmente hay un tema de madurez mental que debe tenerse en cuenta... ahora mas que nunca, están saliendo jovenes de 15 años a las universidades.. y estos rara vez tienen la estructura mental necesaria para llevar el nivel de abstracción necesario en la programación... (esto me lo dijeron varios psicologos... o seran que están locos? :p:p:p).........Siguiendo con el tema de las analogías, me acabo de acordar del ejemplo del juego de la Batalla Naval, tambien para la explicación de matrices...Y las filas de los bancos para la explicación de FIFO (First In First Out)

Lo de la madurez mental es muy cierto, otro gran impedimento es la falta de bases matemáticas, un buen programador es por lo menos un matemático decente y no nos digamos mentiras los muchachos de bachillerato el 96% salen con pésimas bases matemáticas.

_____________
_____________

Retomando lo de las analogías, eso de usar las colas "cotidianas" para explicar el FIFO es un clasico, como la idea de que los LIFO se asemejan a la pila de bandejas en un auto servicio o mejor a un maso de cartas o al cementerio de yu gi oh, para los fanáticos del anime....:chino:
 

DCowboy

Lanero Reconocido
23 Mar 2006
493
Lukalo dijo:
generalmente termina el estudiante aprendiendo de la forma mas ineficiente (en cuanto a tiempo y retorno)... Prueba y Error

Probando y equivocándote, puedes volverte un experto, siempre y cuando el objetivo sea entender el por qué de los fallos.

Si una persona se demora horas "peleando" con un problema, puede descubrir cosas más allá de la explicación que está buscando, y eso es una gran ventaja frente a otra a la cual únicamente se le dijo "esto es así y así".

Por otro lado, prueba y error combinada con la actitud de "si funciona, no lo toques", es el DEMONIO del aprendizaje de programación. Es una peste que debería erradicarse de las mentes de los estudiantes. Fuente de kilómetros y kilómetros de código basura.

Lukalo dijo:
Adicionalmente hay un tema de madurez mental que debe tenerse en cuenta... ahora mas que nunca, están saliendo jovenes de 15 años a las universidades.. y estos rara vez tienen la estructura mental necesaria para llevar el nivel de abstracción necesario en la programación... (esto me lo dijeron varios psicologos... o seran que están locos? :p:p:p)

Vale, yo no se de psicología pero creo que está demostrado que, por ejemplo, algo tan complejo como un nuevo idioma se enseña más fácilmente a temprana edad, y es precisamente porque el cerebro es más "maleable" en ése entonces.

Un niño puede aprender sobre ciclos repetitivos, condicionales, procedimientos, parámetros, recursividad, listas....jugando, y sin necesidad de que tenga aptitudes para las matemáticas o sea un geniecito en potencia. Mira el trabajo de Seymour Papert.

Ciertamente, no creo que esos psicólogos que hablaron contigo estén mal. Lo que pasa es que seguramente están mitificando el concepto de programación, como una "pantalla llena de jeroglíficos" o algo por el estilo.
 

maton1200

Lanero Reconocido
18 Ene 2006
7,638
Por mi cuenta, porque cogi un libro de BASIC desde chiquito :) , a los profesores del colegio jamas les entendi ni papa (y en el colegio recuerdo que veian programacion como desde 5to en la clase de sistemas, pero jamas les entendi), estoy de acuerdo con que se mejoren los metodos de enseñanza de programacion.

Algo que "abre mucho la mente" para la programacion es la logica booleana y electronica digital, deberian primero enseñar eso antes que cualquier cosa, es facilisimo y ya con eso uno entiende exponencialmente mas facil cualquier tema de programacion, uno ve mucha gente que empieza a programar yo que se, java, sin siquiera saber diferenciar bytes de bits.

Las matematicas solo las veo relevantes para modelar algoritmos que las usen, no tiene mucha gracia estudiar integrales en 8 dimensiones y diferenciales de orden 20, para terminar armando algoritmos de busqueda u ordenamiento :p , eso es mas de logica y pensamiento abstracto, no de ser un hawkings o einstein para resolver calculos complejos.

Y eso de la madurez mental no lo entiendo bien, si se fijan hay muchisimo hacker de 13-18 años :muerto: (se acuerdan que geohotz hackeo el iphone como a los 16?)

Lo de prueba y error, pues como dijo el lanero, si uno sabe porque es el error, entonces ahi si tiene sentido, quien no aprende de los errores?, la experiencia es la mejor maestra.
 

raven9t

Lanero Reconocido
22 Jun 2007
369
Probando y equivocándote, puedes volverte un experto, siempre y cuando el objetivo sea entender el por qué de los fallos.

Si una persona se demora horas "peleando" con un problema, puede descubrir cosas más allá de la explicación que está buscando, y eso es una gran ventaja frente a otra a la cual únicamente se le dijo "esto es así y así".

Amen

Por otro lado, prueba y error combinada con la actitud de "si funciona, no lo toques", es el DEMONIO del aprendizaje de programación. Es una peste que debería erradicarse de las mentes de los estudiantes. Fuente de kilómetros y kilómetros de código basura.

No solo en programación, en muchas otras ramas, yo lo vivi mucho en electrónica.
 

sairus black

Lanero Reconocido
19 Ene 2008
1,848
El asunto es que para lograr mejorar de la forma que lo menciona DCowboy se requiere una mentaidad fundamentalmente autodidacta, algo que muy pocos poseen, no olviden que mas del 75% de la gente que estudia carreras con nexos a la programación, o bien lo hacen por necesidad y no por gusto o les vale un comino; asi que esa mantalidad autodidacta es una completa rareza.
 

.::BillGabo::.

Lanero Reconocido
6 Nov 2006
2,041
yo en el 2005 (18 años) aprendi lo que se de visual de forma autodidacta, realmente en mi carrera no es fundamental aprender programacion pero seria lo ideal (ing mecanica), la mejor forma de hacerlo es por si mismo...pero sin embargo creo que tambien es util tener una persona que lo guie, no necesariamente un profesor pero puede ser un amigo que resuelva tus dudas puntuales.
 

Ivanzinho

Lanero Reconocido
28 Sep 2004
1,649
La verdad yo aprendí de manera autodidacta, y creo que no hay buenos profesores, porque un tezo está es en algun proyecto o algo asi, todo por el $$$$$ mientras que los que se mamaron, los que son presindibles (Bertolt Brecht) esos terminan de profesores..... es una lastima, lo que yo aprendí en un año, lo pude haber aprendido en un mes si alguien me hubiera explicado con tiempito y calmita.
 

sairus black

Lanero Reconocido
19 Ene 2008
1,848
La verdad yo aprendí de manera autodidacta, y creo que no hay buenos profesores, porque un tezo está es en algun proyecto o algo asi....

Lamentablemente he de decir que aun cuando el mejor programador del mundo tratara de enseñarle a alguien, no lo lograría... eso se debe a que enseñar no es decir como lo hago yo sino como podría hacerlo el otro, tratando de sortear todas las dificultades y falencias que presente el estudiante, por ejemplo y para no ir muy lejos; en Colombia esta el asunto de que la mayoría de los que "intentan" programar son pésimos matemáticos y eso les limita mucho el aprendizaje.

En definitiva yo sigo pensando que enseñar a programar es imposible a sumo se puede intentar guiar y motivar, el resto depende del estudiante y de su esfuerzo.
 

Ivanzinho

Lanero Reconocido
28 Sep 2004
1,649
Lamentablemente he de decir que aun cuando el mejor programador del mundo tratara de enseñarle a alguien, no lo lograría... eso se debe a que enseñar no es decir como lo hago yo sino como podría hacerlo el otro, tratando de sortear todas las dificultades y falencias que presente el estudiante, por ejemplo y para no ir muy lejos; en Colombia esta el asunto de que la mayoría de los que "intentan" programar son pésimos matemáticos y eso les limita mucho el aprendizaje.

En definitiva yo sigo pensando que enseñar a programar es imposible a sumo se puede intentar guiar y motivar, el resto depende del estudiante y de su esfuerzo.

Uy hermano, yo se que la matematica tiene muchisimo que ver, pero si usted me pregunta cuanto es 7 x 9 a duras penas le digo que es que?? 63?? jejeje.

PERO otra cosa es programar y soy muy bueno y tengo sentido comun de las cosas, la verdad si, a mi me dieron un empujon y el resto lo aprendí yo solito, pero vea que en la Universidad donde estudié, el unico que programaba era yo y porque quise aprender, porque realmente los profesores son una basura y pudieron haberle enseñado a los alumnos, ¿que hice yo? pues invité a mi casa un fin de semana a estos locos y les enseñé a programar y lo poquito que saben, lo saben gracias a que les expliqué con plastilina, entonces si se puede enseñar lo basico, lo minimo, como para que ellos arranquen y vuelen, cositas varias.
 

sairus black

Lanero Reconocido
19 Ene 2008
1,848
Uy hermano, yo se que la matematica tiene muchisimo que ver, pero si usted me pregunta cuanto es 7 x 9 a duras penas le digo que es que?? 63?? jejeje....

Bueno te diré, la matemática no es que la bayas a plasmar directamente en la programación, a menos claro que te toque programar algo matemático como un QSB o un RADIX; el valor de la matemática es desarrollar una lógica organizada y funcional, es lo fundamental en un programador, también esta la lógica abstracta que es fundamental para descomponer el problema y poderlo codificar y la lógica de procesos que te ayuda a plantear un hilo de ejecución en el código.

En cuanto a los docentes y dejando de lado que no me han enseñado formalmente nada, yo tengo a 2 que respeto mucho, el Ing. Alexander Montoya de la universidad de Ibague todo un geek en lo que se puedan imaginar, una gran persona y amigo...responsable de que sea el programador y el docente que soy hoy día. Y el Ing. Wilson Pimiento a quien debo la motivación y gusto que tengo hacia el diseño y los juegos.

Los verdaderos profesores no son los que te dicen, así se escribe un ciclo o esto es un arreglo, los de verdad son los que dan el ejemplo de hasta donde se puede llegar y le marcan a uno metas que alcanzar.
 

Ivanzinho

Lanero Reconocido
28 Sep 2004
1,649
Bueno te diré, la matemática no es que la bayas a plasmar directamente en la programación, a menos claro que te toque programar algo matemático como un QSB o un RADIX; el valor de la matemática es desarrollar una lógica organizada y funcional, es lo fundamental en un programador, también esta la lógica abstracta que es fundamental para descomponer el problema y poderlo codificar y la lógica de procesos que te ayuda a plantear un hilo de ejecución en el código.

En cuanto a los docentes y dejando de lado que no me han enseñado formalmente nada, yo tengo a 2 que respeto mucho, el Ing. Alexander Montoya de la universidad de Ibague todo un geek en lo que se puedan imaginar, una gran persona y amigo...responsable de que sea el programador y el docente que soy hoy día. Y el Ing. Wilson Pimiento a quien debo la motivación y gusto que tengo hacia el diseño y los juegos.

Los verdaderos profesores no son los que te dicen, así se escribe un ciclo o esto es un arreglo, los de verdad son los que dan el ejemplo de hasta donde se puede llegar y le marcan a uno metas que alcanzar.

Uy man, a mi me costó 4 o 6 meses aprender que es un Array, 6 meses!!!!!, esa estructura es algo que me parece sumamente importante, y de ahí las Clases, Metodos, Propiedades, etc...... hasta que por fin aprendí a programar.

Si alguien me hubiese explicado eso antes, yo no hubiera perdido tanto tiempo, es mas, incluso llegué a pensar que programar no era para mi y lo dejé a un lado, hasta que me ofrecieron trabajo de 4 lugares distintos rogandome para que trabajara con ellos, pero pues por necesidad economica me fui con el que mejor pagaba.

Entonces, teniendo en cuenta esto, reafirmo que uno necesita lo basico, lo basico, para poder volar.
 

raven9t

Lanero Reconocido
22 Jun 2007
369
Bueno te diré, la matemática no es que la bayas a plasmar directamente en la programación, a menos claro que te toque programar algo matemático como un QSB o un RADIX; el valor de la matemática es desarrollar una lógica organizada y funcional, es lo fundamental en un programador, también esta la lógica abstracta que es fundamental para descomponer el problema y poderlo codificar y la lógica de procesos que te ayuda a plantear un hilo de ejecución en el código.

En cuanto a los docentes y dejando de lado que no me han enseñado formalmente nada, yo tengo a 2 que respeto mucho, el Ing. Alexander Montoya de la universidad de Ibague todo un geek en lo que se puedan imaginar, una gran persona y amigo...responsable de que sea el programador y el docente que soy hoy día. Y el Ing. Wilson Pimiento a quien debo la motivación y gusto que tengo hacia el diseño y los juegos.

Los verdaderos profesores no son los que te dicen, así se escribe un ciclo o esto es un arreglo, los de verdad son los que dan el ejemplo de hasta donde se puede llegar y le marcan a uno metas que alcanzar.

me gustó la frase en negrilla, la verdad es que eso es bastante cierto, la matemática es una base fundamental para cualquier ciencia, incluyendo la informática, inyectarle una buena base matemática junto con buenas bases de programación a un estudiante inspirado y motivado, no hay quien lo pare. La matematica no solo es forjadora de logica, tambien es una herramienta para adquirir habilidades en la resolución de problemas desde los mas sencillos hasta los mas caóticos.

Una cosa que me ha gustado mucho es la resolución de problemas matemáticos con el uso de la informática(por eso me apasiona bastante el desarrollo de videojuegos), por ejemplo cuando implementé el método biseccion y de Newton-Raphson de una ecuación me pareció bastante divertido, sencillo y natural(por aquí dejo el código en java de biseccion por si algún personaje pasa por aquí y de pronto lo necesita.:cool:), pero me aburro montones cuando programo sistemas de información empresariales:p.


Uy man, a mi me costó 4 o 6 meses aprender que es un Array, 6 meses!!!!!, esa estructura es algo que me parece sumamente importante, y de ahí las Clases, Metodos, Propiedades, etc...... hasta que por fin aprendí a programar.

Si alguien me hubiese explicado eso antes, yo no hubiera perdido tanto tiempo, es mas, incluso llegué a pensar que programar no era para mi y lo dejé a un lado, hasta que me ofrecieron trabajo de 4 lugares distintos rogandome para que trabajara con ellos, pero pues por necesidad economica me fui con el que mejor pagaba.

Entonces, teniendo en cuenta esto, reafirmo que uno necesita lo basico, lo basico, para poder volar.

No se sienta decepcionado porque le costo tiempo aprender algo, mas bien es algo positivo, porque lo que se aprende con esfuerzo, y le gusta, téngalo por seguro que nunca se olvida, a veces es tan traumático aprender algo que cuando entendemos, la mayoría de veces se queda grabado en piedra en nuestra cabeza.
 

Archivos adjuntos

  • Biseccion.rar
    18.7 KB · Visitas: 42

sairus black

Lanero Reconocido
19 Ene 2008
1,848
........Una cosa que me ha gustado mucho es la resolución de problemas matemáticos con el uso de la informática.............pero me aburro montones cuando programo sistemas de información empresariales:p.

Estoy plenamente de acuerdo con tigo, me ocurrio que casi llego al borde del suicidio cuando trabajaba como programador de sistemas de información, por eso deje de programar a nivel profesional y ahora lo hago solo por gusto... jeje hay otras formas de vivir, se gana menos pero se estresa uno menos y la progración se disfruta, que es lo realmente importante para ser beno en algo, si no te gusta lo que haces, si no gozas con ello siempre seras un mediocre... pero si te diviertes a mil votando algoritmos y creando estructuras, seguro que llegas muy lejos... al menos altruistamente hablando.
 

jacksonstrat

Lanero Regular
21 Mar 2011
7
pues te dire mi estimado,. en mi opinion como estudiante para aprender te tiene que gustar la programacion , ademas de tener una buena logica como lo mencionaron. por lo de si hay que ser un buen matematico eso creo que seria algo relativo si son buenos o no (te lo digo porque conosco a personas que son muy buenos programando pero en matematicas nomas no dan una) pero como te lo digo eso seria segun el caso. y pues como te lo dije creo que mas bien te tiene que gustar programar cuando yo inicie en la carrera no sabia y pues si batallaba al principio con problemillas pero pues no me dejaba y al final terminaba resolviendolo, tengo compañeros que para hacer algun ciclo se cierran y dicen no puedo y no puedo y pues si no se pone de su parte no se podra, asi que pues tambien un buen libro puede ser de mucha ayuda para aprender porque en algunos casos los profesores no se saben explicar bien pero hay otros que si lo hacen muy bien, pero pues mas bien seria caso de cada persona.