"Algunos profesores dicen que los estudiantes deben hacer diversos ejercicios de algebra lineal, física y lógica antes de empezar a programar."
Si me hubieran venido con eso cuando empezaba, lo habría mandado todo a la porra. Dales un lenguaje claro y consistente, con el que no solo puedan iniciarse, sino progresar hasta donde quieran. Y lo mas importante, concéntrate en enseñarles a programar, no en enseñarles algoritmos. Eso es lo que muchos profesores y académicos no entienden: programación != matemáticas. La programación es una herramienta, y hay que enseñarla como tal. El uso que se le quiera dar mas tarde es otra historia totalmente independiente del problema básico, que no es otro que adquirir unos cimientos fuertes y una buena fluencia al traducir ideas y conceptos en programas. Si se tiene eso, los algoritmos no son mas que ejercicios, aplicaciones.
Por contra, si se confunde la programación con las matemáticas, la física, [añada su aplicación concreta aquí], empiezan los problemas y los estudiantes se confunden y *se aburren*. Y lo que hay que hacer justamente es que se interesen, que se impliquen, que aprendan por gusto, que aprendan a aprender: a bucear en la documentación, a analizar los problemas de forma estructurada, a probar "que pasa si en vez de eso ago esto?".
Sonará muy freak, pero aprender a programar puede ser apasionante si se enseña bien. En mi opinión, basta con primar la experimentación, la iniciativa y dejar libertad a los estudiantes para que toquen y prueben cuantas mas cosas mejor, y si tienen un mínimo interés (que esa es otra) ellos mismos serán su mejor maestro.
Si hay que decantarse por un lenguaje, personalmente elijiría python. Creo que es una opción muy completa que no solo funciona bien para los primeros pasos, también proporciona una progresión y una complejidad que hay que ir desgranando poco a poco. Deja que el aprendiz llegue hasta donde quiera sin asustarle ya de entrada con conceptos rocambolescos. Se puede empezar con un "Hola mundo" de una sola linia y acabar programando con metaclases y decoradores.
Por otro lado, su intérprete interactivo permite ensuciarse las manos muy rápido y probar cualquier cosa, sin necesidad de complicarse. Si a eso le sumamos un amplio abanico de librerías, una sintaxis clara y elegante que fomenta buenos hábitos, y que es open source ;), para mi es una elección perfecta para el caso.
Pues yo creo que estás bastante equivocado. Yo también había hecho mis 4 tonteridas cuando entré en la universidad y francamente no pensaba que me fueran a enseñar muchas cosas en las asignaturas de programación. Pero no fue el caso, aprendí muchísimo (y no solo en las de "programación").
Primero: La programación _es_ matemáticas, te guste o no. Pero claro, hay que ver a qué le llamas tú matemáticas. Básicamente, programar es Lógica. Y cosas como Álgebra, ecuaciones diferenciales son muy necesarias si es que vas a hacer cosas que no sean el típico programa de gestión (como ya dijo alguien en su momento no hace mucho tiempo en barrapunto). Si te vas a seguir dedicando a hacer las 4 "tonterías" (con todo el respeto) de antes de entrar en la uni, en ese caso no te hacen falta las matemáticas. Olvidate entonces de hacer software científico (entiendase como aplicaciones a utilizar en ambiente científico), de hacer juegos con realismo, aplicaciones de dibujo y retoque fotografico, criptografía y un largo etcétera porque en todos esos casos es necesario que alguien implicado en el proyecto controle matemáticas (a no ser que seas un currito que solo pique lo que le digan, con todo el respeto a los curritos). Raramente vas a poder crear algo nuevo, solo vas a poder modificar cosas ya existentes, porque para crear te hace falta base.
Segundo: El pseudocódigo. Es otra cosa muy importante. Hay que distinguir entre diseñar un algoritmo y luego implementarlo en un lenguaje de programación. El algoritmo en sí, resuelve el problema y tiene una cierta complejidad computacional independientemente de las "manias" de un lenguaje de programación concreto. Programar es diseñar el algoritmo, picarlo en un lenguaje es trivial. Pero no nos apartemos del asunto del pseudocódigo. Veamos, como es más fácil entender un algoritmo que no has hecho tú? con un pedazo de código largo en un lenguaje (que a lo mejor no conoces, aunque no entro en eso) o en un pseudocódigo en donde las operaciones y las cosas que haces estén en un lenguaje más próximo al natural? (Hay mejores maneras de hacer esto, pero me vale como ejemplo). Sin el pseudocódigo estarás más pendiente de las "tonterías" del lenguaje en concreto que en hacer un buen algoritmo para resolver el problema (que era de lo que se trataba). Y si lo que te preocupa es que cuando estás escribiendo el pseudocódigo no puedes probar si funciona o no (no me parece una forma correcta de construir un algoritmo) prueba a utilizar el paradigma funcional o el lógico.
Tercero: Enseñar un lenguaje vs enseñar algoritmos. Si no aprendes las técnicas algorítmicas básicas, ni algoritmos básicos de búsquedas, ordenaciones, etc etc etc vas a estar reinventando la rueda una y otra vez ad infinitum. Piensa una cosa, tener un gran control de castellano no te convierte en un poeta.
Cuarto: Tachar algo de aburrido o no es algo muy subjetivo. Para tí es aburrido, para mí no lo es. Como la mayoría de los que están por aquí, yo programo por mi cuenta cuando no estoy en clase/trabajo. Hago mis cosillas, que no son trabajos para la universidad. He aprendido cosas que no me enseñaron en la universidad. Si te gusta la carrera harás lo mismo: aprender por tu cuenta. Si no te gusta no lo harás y te aburrirás como una ostra, es así de fácil.
Con respecto a la educación, he leido algunas opiniones que comparto, es decir, sería bueno una asignatura anual, que empezara poco a poco y con un pseudocódigo muy parecido al lenguaje natural y poco a poco ir profundizando alternando con un lenguaje de programación como pascal o C. En las prácticas, ir resolviendo muchos problemas pequeños en pseudocódigo y en pascal o C. Creo que sería importante no presionar mucho, al menos al principio, debido al diferente nivel que tienen los alumnos al entrar en la universidad. Podría haber una parte mínima a hacer y luego otra parte que pueda hacer cualquier alumno si le interesa, para subir nota.
--
-----------------------------
Una firma de 120 caracteres es una firma de 119 caracteres+1
O no, de eso nada
(Puntos:3, Inspirado)( Última bitácora: Viernes, 09 Enero de 2004, 22:11h )
Si me hubieran venido con eso cuando empezaba, lo habría mandado todo a la porra. Dales un lenguaje claro y consistente, con el que no solo puedan iniciarse, sino progresar hasta donde quieran. Y lo mas importante, concéntrate en enseñarles a programar, no en enseñarles algoritmos. Eso es lo que muchos profesores y académicos no entienden: programación != matemáticas. La programación es una herramienta, y hay que enseñarla como tal. El uso que se le quiera dar mas tarde es otra historia totalmente independiente del problema básico, que no es otro que adquirir unos cimientos fuertes y una buena fluencia al traducir ideas y conceptos en programas. Si se tiene eso, los algoritmos no son mas que ejercicios, aplicaciones. Por contra, si se confunde la programación con las matemáticas, la física, [añada su aplicación concreta aquí], empiezan los problemas y los estudiantes se confunden y *se aburren*. Y lo que hay que hacer justamente es que se interesen, que se impliquen, que aprendan por gusto, que aprendan a aprender: a bucear en la documentación, a analizar los problemas de forma estructurada, a probar "que pasa si en vez de eso ago esto?".
Sonará muy freak, pero aprender a programar puede ser apasionante si se enseña bien. En mi opinión, basta con primar la experimentación, la iniciativa y dejar libertad a los estudiantes para que toquen y prueben cuantas mas cosas mejor, y si tienen un mínimo interés (que esa es otra) ellos mismos serán su mejor maestro.
Si hay que decantarse por un lenguaje, personalmente elijiría python. Creo que es una opción muy completa que no solo funciona bien para los primeros pasos, también proporciona una progresión y una complejidad que hay que ir desgranando poco a poco. Deja que el aprendiz llegue hasta donde quiera sin asustarle ya de entrada con conceptos rocambolescos. Se puede empezar con un "Hola mundo" de una sola linia y acabar programando con metaclases y decoradores.
Por otro lado, su intérprete interactivo permite ensuciarse las manos muy rápido y probar cualquier cosa, sin necesidad de complicarse. Si a eso le sumamos un amplio abanico de librerías, una sintaxis clara y elegante que fomenta buenos hábitos, y que es open source ;), para mi es una elección perfecta para el caso.
Re:O no, de eso nada
(Puntos:2, Interesante)( http://barrapunto.com/ | Última bitácora: Domingo, 28 Enero de 2007, 12:22h )
Primero: La programación _es_ matemáticas, te guste o no. Pero claro, hay que ver a qué le llamas tú matemáticas. Básicamente, programar es Lógica. Y cosas como Álgebra, ecuaciones diferenciales son muy necesarias si es que vas a hacer cosas que no sean el típico programa de gestión (como ya dijo alguien en su momento no hace mucho tiempo en barrapunto). Si te vas a seguir dedicando a hacer las 4 "tonterías" (con todo el respeto) de antes de entrar en la uni, en ese caso no te hacen falta las matemáticas. Olvidate entonces de hacer software científico (entiendase como aplicaciones a utilizar en ambiente científico), de hacer juegos con realismo, aplicaciones de dibujo y retoque fotografico, criptografía y un largo etcétera porque en todos esos casos es necesario que alguien implicado en el proyecto controle matemáticas (a no ser que seas un currito que solo pique lo que le digan, con todo el respeto a los curritos). Raramente vas a poder crear algo nuevo, solo vas a poder modificar cosas ya existentes, porque para crear te hace falta base.
Segundo: El pseudocódigo. Es otra cosa muy importante. Hay que distinguir entre diseñar un algoritmo y luego implementarlo en un lenguaje de programación. El algoritmo en sí, resuelve el problema y tiene una cierta complejidad computacional independientemente de las "manias" de un lenguaje de programación concreto. Programar es diseñar el algoritmo, picarlo en un lenguaje es trivial. Pero no nos apartemos del asunto del pseudocódigo. Veamos, como es más fácil entender un algoritmo que no has hecho tú? con un pedazo de código largo en un lenguaje (que a lo mejor no conoces, aunque no entro en eso) o en un pseudocódigo en donde las operaciones y las cosas que haces estén en un lenguaje más próximo al natural? (Hay mejores maneras de hacer esto, pero me vale como ejemplo). Sin el pseudocódigo estarás más pendiente de las "tonterías" del lenguaje en concreto que en hacer un buen algoritmo para resolver el problema (que era de lo que se trataba). Y si lo que te preocupa es que cuando estás escribiendo el pseudocódigo no puedes probar si funciona o no (no me parece una forma correcta de construir un algoritmo) prueba a utilizar el paradigma funcional o el lógico.
Tercero: Enseñar un lenguaje vs enseñar algoritmos. Si no aprendes las técnicas algorítmicas básicas, ni algoritmos básicos de búsquedas, ordenaciones, etc etc etc vas a estar reinventando la rueda una y otra vez ad infinitum. Piensa una cosa, tener un gran control de castellano no te convierte en un poeta.
Cuarto: Tachar algo de aburrido o no es algo muy subjetivo. Para tí es aburrido, para mí no lo es. Como la mayoría de los que están por aquí, yo programo por mi cuenta cuando no estoy en clase/trabajo. Hago mis cosillas, que no son trabajos para la universidad. He aprendido cosas que no me enseñaron en la universidad. Si te gusta la carrera harás lo mismo: aprender por tu cuenta. Si no te gusta no lo harás y te aburrirás como una ostra, es así de fácil.
Con respecto a la educación, he leido algunas opiniones que comparto, es decir, sería bueno una asignatura anual, que empezara poco a poco y con un pseudocódigo muy parecido al lenguaje natural y poco a poco ir profundizando alternando con un lenguaje de programación como pascal o C. En las prácticas, ir resolviendo muchos problemas pequeños en pseudocódigo y en pascal o C. Creo que sería importante no presionar mucho, al menos al principio, debido al diferente nivel que tienen los alumnos al entrar en la universidad. Podría haber una parte mínima a hacer y luego otra parte que pueda hacer cualquier alumno si le interesa, para subir nota.
-----------------------------
Una firma de 120 caracteres es una firma de 119 caracteres+1