¿Por qué los profesores de informática no conocen el desarrollo de aplicaciones web completas?

No conozco los objetivos del curso en el que se inscribió. Pero, en general, el profesor explicará los objetivos el primer día de clase o incluso antes. Pero la idea general de un curso de pregrado / posgrado es introducir varios aspectos del curso lo suficientemente profundo. El descanso es ejercicio y práctica por parte del alumno.

El campo de la informática es vasto y no se limita a escribir programas informáticos, y mucho menos al desarrollo web. El desarrollo web es solo un detalle de la aplicación en el subcampo llamado Programación de aplicaciones informáticas entre las aplicaciones tecnológicas de la informática. Debe separar la ciencia de sus aplicaciones en ingeniería y tecnología.

Cuando te inscribas en un curso formal de informática, estarás expuesto a varios aspectos del tema. Estará equipado para aplicar la ciencia a las aplicaciones técnicas como la programación de computadoras utilizando tecnologías web. Un profesor de ciencias de la computación puede ayudarlo a comprender la ciencia detrás de estas tecnologías actuales. Una vez que tenga la ciencia correcta, puede aplicarla para resolver cualquier tipo de problema en cualquier dominio técnico.

La mayoría de los detalles en las tecnologías actuales son volátiles. Siguen cambiando (evolucionando) según los requisitos del problema que intentan resolver. Por lo tanto, siempre es mejor aprenderlos por su cuenta y seguir actualizando sus conocimientos a medida que se lanzan nuevas características / tecnologías. No es difícil aprenderlos por tu cuenta cuando los estás aplicando activamente en el trabajo o en un laboratorio.

Es difícil para mí decir cuál es la principal preocupación de los planes de estudio de CS, pero en términos generales, me dijeron antes de ingresar a CS que enseña cómo funcionan las computadoras. Es más que eso, pero eso está en el centro de todo. No sé cuál es el plan de estudios ahora, pero cuando lo estaba tomando, la ingeniería de software era un conjunto opcional de cursos que un estudiante de CS podía tomar. Eso lo hizo conocer la idea de reunir requisitos, hacer consultas de diseño con el cliente, programar la implementación y las pruebas y finalmente entregar un producto que funcione. En otro curso de SE que tuvimos, trabajamos en un proyecto real para un cliente real en el transcurso de dos semestres. Me imagino que si se diera el mismo curso hoy, estaríamos trabajando en proyectos web, aunque se esperaría que aprendiéramos mucha tecnología nosotros mismos. Ese fue un tema que se ejecutó en todo el plan de estudios de CS cuando lo tomé. Tenían uno o dos cursos en diferentes lenguajes de programación, pero de lo contrario, una vez que ingresamos a los cursos de la división superior, si un profesor quería usar un idioma al que no habíamos estado expuestos antes, la expectativa era que aprendiéramos el idioma nosotros mismos. , con un poco de ayuda del profesor y un folleto sobre cómo funcionaba el idioma. La razón es que nuestros profesores entendieron que la tecnología estaba cambiando mucho y continuaría haciéndolo, por lo que los estudiantes de CS debían depender de sus propias habilidades para aprender cómo usarla a medida que cambiaba. Cualquier habilidad tecnológica específica que se aprenda en la escuela quedaría obsoleta rápidamente.

Hubo algunas áreas donde los planes de estudio CS se redujeron en ese sentido. Una de ellas fue que no enseñaba cómo crear software robusto. Se esperaba que probáramos nuestros programas para casos típicos y extremos antes de entregarlos a nuestros profesores, pero cuando se trataba de SE, no aprendimos sobre las fallas típicas que pueden suceder en los sistemas de aplicaciones, y cómo hacer el software lidiar con ellos de una mejor manera que simplemente estrellarse o ser víctima de piratería. Esas fueron habilidades que tuvimos que aprender una vez que salimos al mundo laboral.

Por lo que escuché, esta brecha entre lo que enseña CS y lo que se usa en el mundo real se ha ampliado desde la década de 2000, y ha hecho que algunos cuestionen cuál es el valor de CS en este contexto, porque los marcos de aplicación se han vuelto enormes . Algunas escuelas han respondido haciendo de las bibliotecas estándar de lenguajes como C ++ y Java una parte central del plan de estudios de CS. Puede que no enseñen marcos web, pero esta noción de tener bibliotecas estándar como una parte importante de lo que enseña el currículo se ha convertido en un tema de discusión entre los académicos de CS.

Para mí, aprender acerca de los marcos de las aplicaciones está realmente en el ámbito de SE, no de CS.

En mi alma mater, ahora tienen más de una especialización CS. Uno de ellos se llama Interacción Humano-Computadora (HCI), y estudia esto a un nivel más profundo que el CS de vainilla principal. Quizás de lo que estás hablando se estudie más a fondo allí. Otra cosa que escuché probablemente hace 5 años fue que muchos estudiantes que habrían tomado CS cuando estaba en la universidad estaban tomando CIS en las universidades de negocios, porque tenían un plan de estudios de TI actualizado que enseñaba sobre desarrollo web , además de cómo almacenar y recuperar datos de bases de datos.

Lo que desearía que CS hiciera es echar un vistazo a cosas como las redes, tal vez en conjunto con aplicaciones, motores de búsqueda, bases de datos, etc., y ver qué principios organizativos para el cálculo se pueden aprender de ellas. CS podría generalizar los modelos específicos de implementación que existen y avanzar el estado del arte en el desarrollo de sistemas y software. Sin embargo, no he visto ningún tomador de esa idea.

More Interesting

¿Cuáles son algunas de las mejores prácticas para construir modelos de aprendizaje automático de múltiples pasos? Cuando la salida de los modelos ML de nivel inferior se convierte en entrada para el modelo de nivel superior, ¿cómo minimizaría el error y mejoraría la precisión?

¿Cómo realizo el análisis de datos / aprendizaje automático en Python?

¿Qué opinas sobre un mundo donde todos puedan codificar y conocer decentemente la informática?

¿Cómo entiendo los conceptos subyacentes de las bibliotecas, incluidos archivos, archivos MAKE, indicadores de compilación, archivos de objetos y conceptos relacionados?

¿Podemos construir máquinas informáticas con operaciones elementales que demoren más que el tiempo constante en las máquinas actuales?

¿Ha mejorado la experiencia de usar la seguridad de Comcast para la automatización del hogar desde que la introdujeron hace unos años?

Cómo multiplicar números de complemento a dos de punto fijo

¿Hay alguna diferencia entre float * a y float * a?

¿Cuál de tus actividades extracurriculares crees que te metió en el MIT para la informática?

¿Cómo evitan los contratos inteligentes de Ethereum que el creador de un contrato publique maliciosamente el contrato?

¿El aprendizaje automático y la inteligencia artificial son capaces de automatizar la automatización?

¿Qué es una máquina completa de Turing?

¿Por qué es difícil programar NP?

¿Quora incorporó algún modelo de aprendizaje automático en la función 'preguntas para usted'?

¿Cómo puedo procesar grandes conjuntos de datos con mi computadora portátil? En una competencia de minería de datos, hay un CSV de 1GB de información del cliente para procesar. ¿Hay alguna manera de procesarlo sin cargarlo todo en la RAM, o podría procesar solo una parte a la vez?