Los problemas típicos al enseñar sistemas operativos
Mañana tengo una reunión de coordinación de los profesores de las asignaturas relacionadas con sistemas operativos y programación concurrente. Acabo de enviar un email a uno de los jefes de estudios con un pequeño resumen de los temas y los problemas con que nos encontramos en mis dos asignaturas de sistemas operativos (segundo cuatrimestre del segundo curso y primer cuatrimestre del tercero).
Al verlas escritas me quedé algo sorprendido:
Desconocimiento absoluto (y miedo) del lenguaje C. En general una falta de práctica para cambiar o aprender otros lenguajes, nos hace perder mucho tiempo. Quizás deberían introducirse uno o dos lenguajes en algunas partes de otras asignaturas de al menos el Q1 del segundo curso. Muy relacionada: “demonización” del ADA (y el Pascal o cualquier lenguaje que no sea Java), quizás por la falta de perspectiva del poder y uso de los lenguajes, o por el desconocimiento de las partes fuertes del ADA (como las “tasks”).
Desconocimientos de estructuras de datos fundamentales en sistemas operativos (hashing, menos aún arboles balanceados, radix, etc), falta de práctica para la programación de estructuras simples (les cuesta mucho comprender el funcionamiento de un i-nodo, o tablas de páginas y TLB).
Muchos problemas para entender el concepto de punteros y su relación directa -y simple- con el hardware.
Problemas para entender gestiones de “strings” con contadores y terminadas en NULL. Problemas para la relación de arrays con punteros y asignación de memoria. Desconocimiento de conceptos de gestión dinámica de memoria bajo el control del programador.
No están acostumbrados a programar e ir probando modular y gradualmente, algunos se pasan semanas programando antes de compilar por primera vez.
No saben cómo hacer un “debug” a un programa, ni siquiera a base de printf()
No saben modularizar un programa, ni en funciones ni en módulos independientes (ficheros).
¿Les pasará a todos o es una exageración pesimista de mi parte?
… y cada vez será peor …
Lo sé porque he estado justo entremedias de varias generaciones, y se me ha pegado un poco de todas.
Comment by MAD-Max — Tuesday 26/6/2007 @ 22:18
Más que a nivel de programación, mi sorpresa vino por los compañeros que parecían no entender qué es un kernel, o por el sistema de ficheros (particiones y tal)… tanto hacer mates y física y luego ni idea de informática de verdad
Me quedo con los “abrazos mortales” (deadlocks) y con lo de matar al zombie y que también mueran sus hijos:
http://www.davidarcos.net/2007/05/09/en-las-profesiones-serias-esto-no-pasa/
Comment by DZPM — Tuesday 26/6/2007 @ 22:28
Mira…
> No están acostumbrados a programar y e ir probando modular y gradualmente, algunos se pasan semanas programando antes de compilar por primera vez.
Toma!, jeje… yo antes hacia eso, sin embargo, lo que es linkloo (y no las pijadas que tocan hacer ahora), tu sabes de lo que te hablo, lo hice todo de un tirón en lugar de hacer lo que dices. Personalmente si esa persona es alguien que tiene un nivel muy bajo lo comprendo, pero creo que me ha sido mas eficaz hacer todo de un tirón y luego lanzarlo a marchar…
Comment by Xeon — Tuesday 26/6/2007 @ 22:31
Tasseholf Burrfoot era un kernel ¿no? jejeje
La verdad es que a parece que las nuevas generaciones tienen menos imaginación.
Si no llega a ser porque mientras estaba en clase intentaba imaginarme como se conectaban las cosas y como llegaba eso hasta el nivel más bajo … (precisamente esas son las clases para mi más entretenidas… pero “menos útiles” en el mundo real para el que parecen dirigirnos (que es programar en java, no aprender y conectar “todo”, sino simplemente programar java como máquinas … )
Y esto ¿qué estaba yo diciendo?
Comment by MAD-Max — Tuesday 26/6/2007 @ 22:50
#3, @xeon
No es lo mismo programar con un lenguaje interpretado (además como el PHP) que programar en un lenguaje compilado (y bastante más sofisticado y de bajo nivel) al que no has programado nunca antes. Tampoco es lo mismo generar un fichero ejecutable que implementa un sistema de ficheros a programar scripts que generan html.
Por otro lado ¿qué es hacer de un tirón? Te has pasado semanas programando decenas de scripts sin probar ninguno y sólo después te has puesto a “ver” si funciona todo como lo pensabas y además has ganado tiempo. Es imposible.
Creo que estás confundiendo “publicar” (que en el caso de una entre sería “entregar”) con el método de desarrollo y cómo vas validando los distintos módulos.
Y en el caso del linkloo, si crees que después de publicarlo ya está acabado y descansarás, estás muy equivocado, allí comienza el dolor de cabeza
@mad-max, no tiene que ver con las “nuevas” o “viejas” generaciones, sino con un problema de “complejidad” del campo. Las cosas en informática han cambiado mucho, los profesores se apañan como pueden a intentan mantener actualizada sus asignaturas (en el mejor de los casos), pero llega un momento en que tanta entropía hace que se produzcan desbalanceos como el que creo me está ocurriendo con unas asignaturas en particular: se les exige una serie de conocimientos y prácticas que todavía no han adquirido.
Seguro que a tí te pasó lo mismo (siempre pasa), y si no te has dado cuenta es sólo cuestión de tiempo (y experiencia)
Comment by gallir — Tuesday 26/6/2007 @ 23:35
Pues el problema con todas esas cosas ( al menos en mi facultad, que es de teleco… ) es que se dan por sabidas… pero curiosamente no se tratan en ninguna asignatura y en la que el temario se acerca algo a lo que dices en realidad se queda a años luz.
Ya sé que somos ingenieros y que esas cosas deberíamos ser capaces de aprenderlas y que hay que tener capacidad de aprendizaje, de autoformación, etc… pero a veces se dan muchas cosas por aprendidas que en realidad solo aparecen en los planes de estudio.
Comment by Francisco — Tuesday 26/6/2007 @ 23:39
La conclusión es: Ricardo tus alumnos son de pena.
Y conozco a unos cuantos, de otras facultades, que también son muy malos.
El que sean malos, se debe, creo, a dos factores:
- Algunos nacen malos y es que no valen para esto (factor “paquete”)
- Hay otros que no se les enseña todo eso convenientemente, es decir, lo aprueban, pero no lo asimilan (y rezan para no tener que volver a usarlo) (he aquí el sistema educativo).
Es injusto y una putada lo que hacen universidades extranjeras, “de prestigio”, que es quitar el factor paquete primero, seleccionando a los alumnos con mejor expediente. Luego ya apechugan con su sistema de enseñanza, que será mejor o peor, pero globalmente seguro que en clase de sistemas operativos hay mayor porcentaje de gente que no tiene esos problemas (además de que seguro hay menos alumnos matriculados, todo sea dicho).
En vuestro caso, habría que hacerles trabajar en esos puntos de los que hablas en cursos anteriores, y no a base de exámenes, porque se les olvida. Sería más provechoso que hicieran proyectos trabajando con la mayor parte de esos conocimientos que dices carecen, por ejemplo, y que eso fuera un 40% (por decir un %) de la nota de todo el curso, no 3 míseros créditos.
Un examen súper inflexible no les ayudaría porque:
- Le cogerían (aún más) miedo al C, punteros, etc.
- No trabajarían, sino que lo estudiarían para aprobar el examen (luego aprender, no aprenderían nada).
En fin, he ahí mi sugerencia. Ojo que soy estudiante, pero por ejemplo lo del proyecto anual sí que lo he visto fuera (en UK concretamente).
Salud!
Comment by kota — Tuesday 26/6/2007 @ 23:41
#7, no diría eso, porque si es un problema recurrente desde hace varios años, es que algo también estamos haciendo mal… incluso puede ser la forma en que enseño las asignaturas.
Dicho eso tendré que poner la parte superior del mensaje, resumen del temario, para que se sepa más o menos de qué va. En cuanto a las notas, en SO el 40% de la nota es la práctica, en ASO es el 50%.
—————————-
Resumen de los Temas:
SO (4512) 2do. Q2
——–
Introducción a sistemas operativos, historia, arquitecturas.
Gestión de procesos.
Introducción a la gestión de memoria y memoria virtual.
Problemas de concurrencia: introducción a tipos de algoritmos (distribuidos y
memoria compartida).
Secciones críticas
Técnicas y algoritmos de memoria compartida: 2 y N procesos con espera activa,
soluciones por hardware, semáforos, mensajes, señales.
Gestión de procesador.
Práctica: a) desarrollo de un sistema de multiprogramacion con sincronización
vía mensajes, memoria compartida y semáforos, o b) desarrollo de un shell
básico.
ASO (4512) 3ro. Q1
———-
Principios y problemas de concurrencia en E/S.
Detección y gestión de “deadlocks” (interbloqueos)
Gestión de memoria real: particiones, segmentos, páginas.
Gestión de memoria virtual
Gestión de dispositivos de almacenamiento secundario, planificación de E/S,
planificación de discos duros.
Sistemas de ficheros.
Prácticas: a) Desarrollo de un shell con interprete de comandos similar al
C-shell o b) Desarrollo de un sistema de ficheros basados en i-nodos.
Comment by gallir — Tuesday 26/6/2007 @ 23:48
Jo com a culpable i alhora víctima del tema desgraciadament tinc poc a afegir. Ara que ja he cursat casi casi els dos primers anys sols diré que estic impressionat per la variança de coneixements entre els propis alumnes. Però de la mateixa manera també hi ha un gran desequilibri en dos punts fonamentals: alumnes completaments desinteressats i professors que no donen sensació de que passin gust per la seva feina.
La veritat és que no tinc ni idea de quin és el vertader problema i la seva arrel. Sols sóc capaç de veure les conseqüències: companys que o no passen gens de gust fent la carrera o que no avancen i saben igual de poc que el primer dia. No és el meu estil sols queixar-me i parlar de les coses que funcionen o deixen de funcionar si no tinc solucions però per la situació actual no arribo a veure exactament quina és la falla.
Fent pràctiques amb distints companys, mirant les feines dels altres i escoltant les petite converse dels passadisos desgraciadament t’he de donar la raó en tots i cadascun dels detalls que has escrit al propi apunt. També s’ha de tenir el petit detall que estic com una regadera i no sóc l’exemple clàssic d’alumne, així doncs me falta perspectiva del que el gruix de l’alumnat ha de menester o com haurien de canviar les coses.
Rellegint el comentari m’adono de què no he dit res que no sapiguéssim. Sols afegir que si, des de l’alumnat ens hem fixat també que hi ha certes coses que no acaben de rutllar. Però si us plau, no tingueu cap tipus de dubte de matar-nos a preguntes sobre l’estat de l’educació ja que ha quedat casi comprovat que els propis alumnes no ens interessam ni per això.
Comment by paurullan — Tuesday 26/6/2007 @ 23:53
Hola,
Como ex-UIBer y ahora FIBer creo que tengo algo de conocimiento de causa sobre este tema.
· Tema C/Ada. Me parece bien empezar a aprender a programar con un lenguaje imperativo como Ada/Pascal, pero así como también se hace ensamblador en primero podría hacerse algo en el segundo cuatrimestre de primero C para ir “calentando” para SSOO, aunque sea introductorio. En la FIB tengo entendido que se empieza con Java y este año en C++, no me parece la mejor opción usar un lenguaje orientado a objetos aunque como no sé qué enfoque se usa pues no puedo opinar. Del tema “demonización” de Ada no me extraña en absoluto, con los profesores que ha habido estos últimos años en Programación, Estructuras de la Información y Tecnologías de la Programación.
· Del tema de estructuras de datos (excepto arrays) no se empiezan a ver hasta en Estructuras de la Información, y creo que se hace al mismo tiempo que SSOO, por lo que la gente con los conocimientos de programación de primero no llega.
· Del tema punteros lo que pasa es que la gente no sabe ni qué significa pasar por valor o por referencia, ya que con Ada se usa la sintaxis “in”, “out” y “in out” para los parámetros. Además la gente tampoco sabe a esas alturas qué es exactamente un programa, un compilador, un proceso etc. La única solución que veo es una “introducción a los sistemas operativos” en primero, o algo de “cultura general informática” que explique las cosas básicas que no se explican en otras asignaturas.
· Del tema en C de que el nombre de un array es un puntero conozco muchísima gente en la UIB y en la FIB últimos cursos que no tiene ni idea, ni como funcionan o para que sirven malloc() y free().
· Sobre lo de programar modularmente lo que se debería hacer es leer a los alumnos en “Linux coding style” y la regla KISS porque si no lo explica un profesor a la gente no se le pasa por la cabeza. ¡Y como va a ‘debugear’ la gente si no saben ni qué es un debuger! Y lo de ir poniendo prints() yo lo empecé a hacer porque vi que lo hacía un profesor en primero, tampoco lo había pensado.
Y no, no es exageración. Yo antes de entrar en la carrera no tenía ni idea de programar y creo que no es algo tan sencillo de aprender _bien_. Quizás debiera haber una asignatura donde se expusieran técnicas y hábitos básicos de programación y otros conceptos, y eso parece ser que en Programación de primero no se consigue.
Explicar bien qué es un programa, qué es una función, por qué un código es más limpio que otro, qué es un debugger, qué son y qué tipos de lenguajes existen y sus diferencias, por qué se usan unos y otros, que es un editor y qué es un IDE, qué es pasar por valor y qué por referencia… eso no me lo han explicado a mi en primero. Y sin estos conceptos básicos es difícil hacer un código decente.
Comment by Tribe — Wednesday 27/6/2007 @ 0:15
No sé, la mayoria de gente que conozco (y llevo estudiando cosas técnicas en la UIB desde 1997) es así. Yo ese perfil lo veo normal, en la media. Otra cosa es que sea algo bueno
Comment by guillem — Wednesday 27/6/2007 @ 0:37
Pienso que el problema es que todo esto de la ingeniería y la informática es complicado en si mismo y la gente se piensa que va a la universidad a aprender a programar páginas web.
A mi modo de ver, dos excelentes artículos que explican todo esto son:
Riesgos de las Java-escuelas
http://local.joelonsoftware.com/mediawiki/index.php/Riesgos_de_las_Java-escuelas
Sobre la crueldad de verdaderamente enseñar ciencias de la computación
http://www.smaldone.com.ar/documentos/ewd/sobre_la_crueldad.html
Comment by jmmata — Wednesday 27/6/2007 @ 8:49
A mi lo que me rebentaba en la UIB era que las practicas solo servian para presentarte a examen, es decir si aprovabas las practicas podias ir a examen, si las suspendias no podias ir a examen.
Luego en el examen, si tenias un 10 de practicas i sacabas un 4.8 del examen tenias que luchar como un jabato para que te aprovasen, cuando en la mayoria de los casos te tenias que enfrentar a un examen chunguisimo que como dice #7 te preparabas para pasarlo lo mejor que podias sin aprender y esperando olvidarte cuando antes de lo que te habian enseñado.
El model que dice #7 se asemeja mucho al modelo que se pracitca en la UOC, donde para ir a examen necesitamos como minimo una C+ de la practica i la nota final se barema entre la evaluacion continuada, mas examen, mas practica de una forma prestablecida que no deja lugar a dudas.
No sé si el modelo UOC es mejor que el modelo UIB, pero a mi me ha servido para aprender y adquirir conocimientos mas alla de adiestrarme para superar examenes.
Comment by enguillem — Wednesday 27/6/2007 @ 10:21
Ricardo,
No creo que la situación haya cambiado mucho con respecto a los 90, que fue cuando curse la carrera en Barcelona.
Nosotros teníamos tres asignaturas (en la ingeniería ‘larga’) y eran bastante teóricas, y aunque hacía la asignatura más fácil para los informáticos que no habían aprendido a programar, seguía siendo difícil para el curriculum que habías hecho en ese momento.
El principal lastre venía de las asignaturas de programación previas: si bien se enseñaba a programar en C, no se daban estructuras de datos complejas más allá de los árboles balanceados cosa que hacía difícil entender algunos conceptos de bajo nivel del sistema operativo.
Además, realmente no se nos enseñaba a programar: las asignaturas de programación eran más algoritmia que programación , así que cuando sistemas operativos entraban conceptos de programación no algorítmicos (como podría ser multiproceso, seguridad, paso de mensajes o interfases con hardware) los alumnos ibamos perdidos.
En resumen: todos estudiábamos, pero eramos unos pocos los que hacíamos las prácticas.
Una pregunta Ricardo, ¿se sigue enseñando la asignatura de sistemas operativas con Stallings y UNIX?
Comment by rogersm — Wednesday 27/6/2007 @ 10:33
Bueno, en mi caso la culpa del estado de mi carrera a medio terminar, tengo que decir públicamente y sin matices que la culpa es exclusivamente mia.
Comment by davidcg — Wednesday 27/6/2007 @ 12:27
hay la has dado davidcg!! evidentemente si después de tantos años sigo estudiando, básicamente es culpa mia, no lo había apuntado en el anterior comentario, aunque ya me queda poquito poquito
Comment by enguillem — Wednesday 27/6/2007 @ 12:40
Pues la situación de mis alumnos no es mucho mejor precisamente. Ya no solo en la parte más informática propiamente dicha, como en la matemática y lógica necesaria para programar. A veces me veo explicando algunos temas que considero de conocimiento casi obligatorio.
Eso sí, resulta curioso como ya el primer día, cuando les comienzo a explicar justo lo básico sobre estructuras etc, me saltan con cuando comenzaremos a ver “objetos de esos”, suenan campanas, pero muchas veces no se sabe por donde.
Este año tengo que reconocer que he tenido más o menos suerte en uno de mis grupos, y hemos podido acabar haciendo prácticas más interesantes, lo cual me relaja a mí en cierta forma. Han aprendido rápido a ver qué modulos resulta interesante crear, y que a veces el utilizar un entorno de programación más avanzado no implica mejores resultados (con lo bien que va el vi para depende qué cosas…).
Muchas veces he discutido con personas sobre las capacidades de los profesionales de la informática, ya sea de ciclos o de alguna de las ingenierías. La verdad es que en España en temas teóricos somos bastante buenos, pero en actualización a veces nos quedamos un poco atrás. Eso sí, recuerdo mis tiempos de prácticas con los PDP con cariño (no tanto el ensamblador de motorola).
Saludos,
Sergio
Comment by Sergio Carrasco — Wednesday 27/6/2007 @ 13:46
Ricardo, pues en parte si en parte no. Hombre, he programado en el vb6 (si, ese de hasefroch) hace tiempo y a mi parecer eso es lo mejor. Aunque no soy todo un pro.
Ahora, en PHP/Perl o lo que sea, pierdo bastante tiempo editando todo aqui y subiendolo, de lo vago que soy para arrancar xampp por temas de permisos en las carpetas, que una vez lo hice pero soy vagooo vagoo vago…
Pero eso es cuestión de gustos
Comment by xeon — Wednesday 27/6/2007 @ 14:17
Esto debería ser de lectura obligada para todos los estudiantes de 1º
:
http://www.di.uniovi.es/~cernuda/noprog.html
Comment by Pablo — Wednesday 27/6/2007 @ 15:45
La unica solución es duplicar al Llamosí y ponerlo en programación, TP, estructuras y TAP. No se que pasa que no he podido introducir el comentario antes
Comment by ahab — Wednesday 27/6/2007 @ 17:46
Ya se que no es el sitio mas indicado para poner sugerencias para mejorar meneame pero no se donde dejarla así que aquí va: que los “autobombos” no conlleven negativos, porque entonces no suelen pasar a portada, y no se leen… y total ¿a mi que mas me da quien lo haya enviado? si lo que me importa es la noticia en si. Una noticia no es + o - interesante por quien la transmite, sino por ella misma. me parece equivocado eliminar una noticia por el autor.
y ya puestos otra: habilitar un campo para exponer el motivo por el que se vota negativamente una determinada noticia. con seleccionar de una lista desplegable no me parece suficiente… quizás no ha de ser obligatorio el rellenarlo, pero me gustaría poder leer en detalle por que la gente decide puntuar negativamente, me ayuda a entender mejor la noticia…
Comment by parratitos — Wednesday 27/6/2007 @ 19:57
No saben cómo hacer un “debug” a un programa, ni siquiera a base de printf()
Madre mía, si lo primero que se aprende es a hacer un debug “casero”, eso no hace ni que te lo expliquen.
Anda que no habré puesto yo frases como printf(”%s”, “Hasta aqui llego”); y similares en programas en C o C++
#21 Esta conversación no tiene nada que ver con menéame, para hacer sugerencias sobre él ya tienes su wiki
Comment by ashacz — Wednesday 27/6/2007 @ 21:48
pd: ¿donde se puede sugerir mejoras al meneame?
Comment by parratitos — Wednesday 27/6/2007 @ 21:55
aha, gracias #22 buscaré en el wiki
Comment by parratitos — Wednesday 27/6/2007 @ 21:57
Je… mi marca de debug favorita siempre ha sido:
printf( “puta\n” );
Y sobre el comentario, es curioso que los problemas con la asignatura de SO apenas tengan que ver realmente con SO, sino con habilidades que deberían ser básicas y totalmente controladas por alumnos de segundo curso.
Comment by Miguel Rebollo — Wednesday 27/6/2007 @ 22:20
¿Y no sería posible que los profesores tengan mucho de ingenieros y poco de pedagogos? ¿O quizás, digo quizás, no existe una correcta coordinación entre el profesorado referente al desarrollo de las distintas asignaturas, el temario dado y los conocimientos adquiridos por el alumnado?
He sido alumno tuyo en las asignaturas de SO, ASO y AdSO en estos dos últimos años y aunque ciertamente aparecen esos problemas que comentas -y que yo mismo como alumno he sufrido- no todos son achacables a la desfachatez de tus pupilos.
No “puedes” quejarte de que tus alumnos desconozcan técnicas de acceso calculado o Hashing en su tercer curso si no te has informado previamente sobre el temario dado por el Sr. Fiol en Estructuras de Datos en el curso anterior. Aunque si te sirve de consuelo, este año sí que hemos dado con el Sr. Llamossí, así que la generación venidera de alumnos estará mejor preparada (en todo lo referente a manejo de estructuras de información).
Los problemas de programación a los que haces referencia, aparecen a consecuencia de la metodología empleada en Fundamentos de Programación e incluso en Tecnología de la Programación. Programas algorítmicamente complejos pero que no ocupan más de 100 líneas, por lo que nos acostumbramos -erroneamente- a revisar el código directamente sin necesidad de hacer prints en pantalla o descomponer el programa en módulos (mi primer código superando las 1000 líneas de código ha sido este tercer año con el desarrollo de la Shell y en Informática Gráfica -OpenGL-).
En mi opinión, tan respetable como la tuya, deberíais sentaros todos los profesores en una mesa y discutir qué contenidos se van a dar y como se van a impartir, para que luego no os encontreis con sorpresas tan desagradables como las comentadas; porque sin una correcta organización en el seno del profesorado estableciendo las interdependencias entre asignaturas estos problemas no van a llegar a solucionarse.
Comment by GC-Hispano — Thursday 28/6/2007 @ 9:25
> No “puedes” quejarte de que tus alumnos desconozcan técnicas de acceso calculado
No me quejo de los alumnos, ¿de dónde lo has sacado? Si hacemos esta reunión es justanente porque consideramos que tenemos parte de culpa y que podemos mejorar.
> En mi opinión, tan respetable como la tuya, deberíais sentaros todos los profesores en una mesa y discutir qué contenidos se van a dar y como se van a impartir
Es justamente lo que contaba, que nos sentamos a discutir estos temas. ¿Ha leído antes de “enfurecerte”?
Por otro lado, el problema general que estamos de acuerdo casi todos, profesores y alumnos, es la tremenda falta de motivación de la gran mayoría de alumnos. Otro problema grave es primero de carrera parece, que es muy difícil dar con el nivel adecuado.
Comment by gallir — Thursday 28/6/2007 @ 12:37
Perdona Ricardo, eso me pasa por no leer el primer párrafo y querer ir directo al grano -gran problema cuando se hace esto en los exámenes-.
Estoy de acuerdo en que los problemas que aparecen durante el 2º y el 3er año de carrera son causados fundamentalmente por carencias en determinados conocimientos y que se van arrastrando a lo largo de la carrera.
El de la motivación es otro gran problema, y en mi opinión se debe en que en algunas asignaturas el alumno se percibe “inutil” y es un miembro pasivo sin que se fomente su actividad. En mi caso particular, no soy un apasionado de los Sistemas Operativos -aunque no quita que despierte interés conocer el funcionamiento de los mismos-, pero al tratarse de asignaturas de carácter práctico donde se aplican conocimientos teóricos vistos en clase, creo que son las asignaturas con mayor interés por parte del alumnado (imagínate el resto…)
Otro aspecto que mejora la motivación, es el de tocar temas de vanguardia tecnológica con mayor frecuencia durante las explicaciones y relacionarlo con los conceptos basicos de cada asignatura. Por supuesto que no pueden enseñarnos a programar en ensamblador a partir de una máquina con un repertorio de 3000 instrucciones y 40 modos de direccionamiento, o que nos enseñen a programar en primero con 2 hilos de ejecución y los problemas típicos de concurrencia, pero no sirve de mucha ayuda para animarnos que en tercero de carrera no seamos capaces de identificar si un Pentium o un PowerPC se trata de una máquina RISC o CISC, de haber escrito 2 programas contados que superen el millar de lineas de código y observar como en una gran cantidad de asignaturas se nos dan unos conocimientos teóricos que no aplicamos a la práctica y se nos advierte que dificilmente son aplicables.
Como comentaste en una clase de ASO durante el mes de Enero, creo que el problema surge en el mismo momento que surge la pregunta “¿Qué se espera sacar de un Ingeniero en Informática?”. Si no queremos formar simplemente gente lista para el mundo laboral -para ello están los módulos de formación profesional-, sino que queremos sacar a gente con los >>conocimientos
Comment by GC-Hispano — Thursday 28/6/2007 @ 13:36
[Se ha cortado…]
… necesarios para solventar problemas diversos, se debe fomentar ese espíritu crítico, participativo y creativo.
Creo que es un problema de difícil solución en el que profesorado y alumnado estamos destinados a entendernos para mejorar el nivel de conocimientos adquiridos al finalizar la carrera.
Comment by GC-Hispano — Thursday 28/6/2007 @ 13:38
Pues yo, que soy professor de Ciclos Formativos de grado superior (osease FP-II) de informatica (ASI- Administracion) creia que esto no pasaba en la carrera. Creía que mis alumnos salían con un nivel demasiado bajo respecto a la universidad (la de mi época, claro), pero viendo lo que comentas, veo que si que hay diferencia (como debe ser) pero no tanta como imaginaba.
En CFGS al finalizar la assignatura de programación (Fundamentos, 1 año) los alumnos han:
- Practicado bastante con C
- Referente a estructuras llegamos hasta listas/pilas/colas dinamicas (con diferentes implementaciones)
- Algorismos de ordenacio, burbuja, seleccion e insercion.
- Han trabajado los conceptos de punteros y similares (sino como haria las estructuras dinámicas)
- Han entendió, mas les vale pq. siempre se lo recuerdo :-), que los strings termina en NULL y que el nombre del array és su direccion de memoria.
- Programan mas o menos modularmente (a base de “hostias”, si la función es demasiado grande, dos pantallas aprox, les obligo a cortar)
- Al final hacen uso intensivo del printf como sistema de debug… y incluso algunos utilizan el debugger!!!
Ah, esto que digo la mitad de la classe…. la otra mitad pues…. eso… llegan donde pueden…
Comment by *e* — Thursday 28/6/2007 @ 13:46
Ya se que no es el momento adecuado para hablar de esto …. pero sabéis la cantidad de alumnos de Mallorca que se van a la UOC ?
Como es posible que esta Universidad, no ofrezca titulaciones, posgrados no presenciales y por ello perdáis cientos de alumnos cada año: jóvenes y no jóvenes, hay muchos profesionales adultos que se acaban reciclando en la UOC también …
Ricardo, díselo al rector de mi parte
Saludos
Comment by anonim — Monday 2/7/2007 @ 8:01
Yo creo que el problema se ha ido acentuando cada vez más a medida que pasan los años, y es debido a la divergencia entre la teoría impartida en la universidad y las exigencias del mercado laboral.
Podríamos decir que hay dos tipos de alumnos, o de intereses.
Los primeros, son los que están interesados en la Informática como una *ciencia* (en realidad no) exacta, los que encuentran muy interesante que un bit sea unidad de información, cómo se puede programar la concurrencia y qué problemas y soluciones se pueden presentar, teoría de colas, algoritmos P y NP, etc.
Son del tipo de alumnos que encuentran sumamente apasionante el hecho de que Grigori Perelman haya modificado un programa informático que simula el flujo de Ricci para dar demostrar la hipótesis de Poincaré, por ejemplo.
Luego hay otro tipo de alumnos. A estos otros les da bastante igual el hecho de que la informática tenga algún tipo de base teórica como la lógica, o la matemática discreta, sino que están interesados en saber manejar muy bien cierto tipo de técnicas y programas para obtener un beneficio concreto (más económico que “espiritual”).
Por ejemplo, a este tipo de alumnos les interesa más saber programar en PHP o aprender Struts para que les contraten como programadores en alguna empresa, en vez de conocer por qué o cómo funciona un compilador.
Si fueran físicos, no les importaría el origen del Universo, sino más bien saber hacer un buen cohete.
No creo que sea un problema. Es sólo diversificación.
Evolución, si lo prefieres.
Comment by Miguel Colom — Monday 2/7/2007 @ 19:29
#32 Sí, cada dia el mercado laboral es menos exigente y para lo que fabrican con bits sobra la universidad. Ni FP. De hecho, con academias bastaría. Incluso cursos CCC «con una guitarra^Wdisco USB de regalo, wow!».
Exactamente lo mismo que si se generalizaran los McDonalds. ¿Para qué una escuela de chefs? Total, para descongelar cosas de colores que «cuecen ellos». Basta con un texto con no más chicha que el que reparten para saber cómo reciclar basuras. Sí, ese con imán para colgar en la puerta de la nevera.
Bueno, habría algo más complicado en este «mercado»… la freidora. Para eso no bastaria lo de la nevera, lo admito. Por lo menos haría falta un manualillo tipo freidora Taurus. ¡Hey, que son más de 10 páginas de información!
¿Lo tuyo era una crítica a nuestras empresas «que cocinen^Winventen ellos», no? Es que no queda claro en tu comentario.
Comment by Benjamí — Monday 2/7/2007 @ 19:46
#33 Más que una crítica, sólo he intentado explicar cual es la situación, según lo veo yo.
Pero sí, en el fondo es como tú dices. Conozco empresas muy grandes (de esas que hasta tienen aerolíneas y agencias de viajes) a las que les preocupa poco, ya no los “fundamentos teóricos”, sino ya los más mínimos requisitos de calidad.
Es un extremo, pero está claro que si hay cabida para cierto tipo de “profesionales” ahí, también hay cabida para ingenieros en otro tipo de empresas a las que les preocupa algo más la calidad de sus propios productos, pero que aceptarán con mucho gusto a alguien que se ocupe de almacenar datos en un BD sin tener en cuenta el modelo relacional y haciendo una tabla con 20000 columnas, sin saber nada de formas normales, o de replicar mil veces el mismo código en Java o PHP, sin saber nada de reutilización del código, de encapsulación, de OOP, o de conceptos más básicos.
Muchas empresas dicen “lo que te enseñan en la universidad no sirve para nada. Ven a conocer el mundo real”, y eso se traduce en desarrollos-chapuza.
Pero mientras los alumnos se sigan creyendo esas tonterías, así nos irán las cosas.
Ricardo: no te preocupes, que cuando tus alumnos descubran el mundo real (y no los intereses de ciertas empresas privadas), querrán haber sabido de TLB, de estructuras de datos y de algoritmos. Dales tiempo.
Comment by Miguel Colom — Monday 2/7/2007 @ 20:16
Yo puedo hablar de mi experiencia en la UMA. En 1º Q1 tienes elementos de programación con docencia teórica en pseudo-código (que viene a ser una mezcla entre C y Pascal bastante coherente) en su mayor parte y tres prácticas en C++ estilo imperativo. Sales sabiendo manejar todas las estructuras estáticas y el IDE (se usa la última versión del dev-c++).
En Q2 tienes metodología de la programación que es la continuación de elementos con el mismo pseudo-código. Aprendes algoritmos de búsqueda y ordenación, machacas listas enlazadas, pasas a pilas, listas y árboles con implementaciones estáticas y dinámicas, ficheros y acabas con módulos. Esta asignatura es sólo teórica, pero hay otra asignatura que se cursa a la vez que se llama laboratorio de programación que lleva los conocimientos adquiridos en la asignatura al dev-c++ además de asertos y macros, uno sale del primer año programando en C++ iterativo bastante decentemente. Luego hay otras asignaturas en 2º que profundizan en estructuras de datos, en orientación a objetos, etc.
El fallo que yo le veo a la UMA es que en 1º, en la asignatura de Estructura de computadores haya que diseñar un micro y la gente termine la asignatura sin saber programar ensamblador, con lo que mucha gente se queda perdida en mitad de la asignatura sin saber que demonios está haciendo. Es absurdo. Alguien debería enseñar un poquito de ensamblador en esa asignatura o en otra, de manera de que lo que uno aprende sea coherente. Según está diseñado el plan de estudios uno tiene que simplemente creerse lo que dice esa asignatura hasta llegar a 2º Q2 y aprender ensamblador Motorola o llegar a la facultad sabiendo ensamblador. A la mayoría de la gente simplemente se les atraganta la asignatura hasta 3º. Es posible que sea eso lo que pase en tu universidad.
Aquí en este cuatrimestre en laboratorio de programación se puso un planificador muy sencillito. A ver cuantos aprueban.
Comment by uno que pasaba — Tuesday 3/7/2007 @ 0:31
[…] este post me imagino lo que pensarán mucho profesores (de universidad o no) sobre sus alumnos. Realmente los […]
Pingback by DeiviDMD » Reflexionando — Tuesday 3/7/2007 @ 20:24
Que tremendismo. Nadie nace sabiendo lo que es un nodo i.
PD: Ada es un instrumento del demonio. Si en Howarts (o como se escriba) diesen programación, estoy seguro que enseñarían Ada.
Comment by admin — Thursday 5/7/2007 @ 16:14
y donde encuentras buenos profesores que enseñen eso y más? La mayoría de los que he conocido enseñan lo que aprendieron en sus años de carrera, eso y nada más, porque no saben mucho más.
Más de lo mismo
Comment by DeiviDMD — Monday 16/7/2007 @ 21:47