¿Están los planes de estudio de CS fuera de contacto con el mundo real?

Si por fuera de contacto te refieres a las tendencias de la industria en este momento, de alguna manera sí, de alguna manera no. Cuando tomé CS, creo que mis profesores habrían dicho que esa pregunta estaba perdiendo el punto. Como que sé esto, porque le hice una pregunta similar a uno de mis profesores, y me dio una buena charla al respecto. En ese momento, C era el lenguaje candente. El único curso centrado en el idioma que tomaron fue en Pascal, que estaba cayendo en desgracia en la industria. Me sentí frustrado por esto, y me preguntaba por qué no tenían un curso en C, quizás sustituyéndolo por el curso de primer año Pascal. Mi profesor dijo que esa sugerencia era miope. Había programado en lenguaje máquina en el Sistema / 360, y había visto ir y venir idiomas populares. La era en la que estaba no era diferente a la suya. Él dijo: “C es el lenguaje candente ahora, pero no va a ser tan popular dentro de varios años. Un nuevo lenguaje tomará su lugar. Creemos que nuestros estudiantes deben ser adaptables. Deberían poder entrenarse para lo que sea se requiere tecnología, fuera de la escuela, porque si solo capacitamos a las personas para lo que es popular hoy, sus habilidades serán obsoletas en unos pocos años. ¿Y qué van a hacer si no saben cómo adaptarse? ” Él estaba en lo correcto. Dentro de los 5 años de cuando me gradué, C ++ era el lenguaje candente del día. Perl también era bastante popular, ya que C ++ y Perl a menudo se usaban en combinación para crear aplicaciones web.

CS se centra en conceptos y teoría de la computación. No es una escuela de capacitación de la industria, aunque he descubierto que el departamento de CS generalmente atiende en cierta medida las tendencias de la industria. En muchas escuelas de hoy, tendrás exposición a C, C ++ y Java. He escuchado a los profesores de CS hablar sobre esto, y dicen que cubren estos idiomas debido a lo que demanda la industria. Sin embargo, no los he escuchado enfocarse en la idea de que los estudiantes deberían ser adaptables, lo cual es desalentador para mí, porque creo que todavía es importante para los estudiantes de CS que ingresan a la industria. Cuando tomé CS, obtuve exposición a 8 idiomas diferentes en mis cursos. La mayoría de ellos rara vez se usaban en la industria, si es que lo eran. No recibimos clases en ellos. Tuvimos que aprenderlos nosotros mismos, como parte de nuestras tareas. Hoy, puede exponerse a 4 idiomas como máximo. La razón por la que los profesores de CS dan esto es que tienen que pasar tiempo revisando las API estándar, ya que eso es una parte importante de conocer un idioma ahora, y las API están vinculadas a idiomas específicos. Una segunda razón por la que escuché es que algunas escuelas quieren enfocar a los estudiantes en habilidades de ingeniería de software, y pasar tiempo exponiendo a los estudiantes a más idiomas reduciría el tiempo que podrían dedicar a lo que consideran áreas temáticas más importantes. SE es una habilidad que es útil en la industria.

Dos áreas que CS ha ignorado son las prácticas de programación segura y la programación para la web. Los estudiantes tienen que aprender esas habilidades por su cuenta, o tomar cursos complementarios para que se les presenten. Supongo que los programas de CS consideran esos temas como especialidades de lo que ya enseñan. Puede aprender a hacer esas cosas y ver cómo se relacionan sus conceptos de CS con ellas, pero debe hacer el trabajo de aprenderlas.

Por supuesto, depende de la escuela a la que vayas.

Me gradué con mi título de CS en 1981 y estaba discutiendo proyectos de programación que tuve con alguien que se graduó hace unos cinco años y eran prácticamente idénticos … Construya una máquina de Turing, construya una calculadora con solo sumar, restar, instrucciones de ensamblador de cambio aritmético, escribir cinco programas diferentes en doce idiomas … etc.… todo era bastante idéntico.

Miré el catálogo universitario de UCLA y hay algunas cosas más modernas allí; animación, introducción a aplicaciones web y algunas otras cosas … pero, en general, el plan de estudios es asombrosamente cercano a mi programa de estudios que tiene / tenía más de treinta y cinco años …

Lo que no quiere decir que el material sea irrelevante … En mi humilde opinión, es sorprendente que los productos asombrosos se construyan a partir de algunos principios muy humildes, a veces principios que pueden tener décadas o incluso siglos de antigüedad: el teorema de De Morgan, la Ley de Shannon, etc.

Definitivamente no. Proporciona las bases sólidas en las que se basa la informática. Para comprender realmente lo que es posible resolver (a través de la programación) y lo que no es necesario, se requiere una comprensión profunda de cómo funcionan las computadoras.

De hecho, los currículos de CS suelen adelantarse porque también incluyen cosas como la teoría detrás de los algoritmos que aún no se han implementado. (Debido a que los desarrolladores de software reales son demasiado vagos para implementar algoritmos eficientes … ejem …)