Había estado programando durante muchos años, pero quería un diploma para hacerme más empleable. Después de haber pasado por la universidad una vez, no elegí una especialización completa en informática de 5 años, sino un programa de ingeniería de software más corto y más orientado a la práctica .
Esperaba que pudiera centrarse más en habilidades concretas que en teoría, pero aún tenía la idea de que a las universidades y los profesores les gusta que las cosas sean correctas, formales, académicas. Todavía es ciencia, ¿verdad? Incorrecto: me sorprendió lo descuidados que fueron muchos cursos de TI.
En un curso introductorio sobre C ++, fuimos probados en clichés como "por qué los globos son malos" y "por qué las constantes son buenas", después de escribir solo 1-2 programas. Anécdotas aleatorias sin contexto adecuado. Folletos contenidos system(pause/cls)
, getch
y encabezados como conio.h
y iodos.h
. Una de las tareas era imprimir "caracteres ASCII" de 32 a 255 , con una captura de pantalla que mostrara dicha tabla impresa utilizando la página de códigos de Windows-1252, pero sin mencionar la codificación.
Pregunta : cuando una universidad / profesor parece estar usando herramientas y métodos inferiores y / o obsoletos, y el contenido que se enseña es casi incorrecto, ¿cómo lo maneja de manera constructiva y respetuosa, si es que lo hace?
Algunas respuestas señalan que debe mirar más allá de la programación, ya que es solo una herramienta para aprender sobre temas como estructuras de datos y algoritmos. Estoy de acuerdo con esta idea, pero en este caso no había realmente ningún plan detrás del estilo pobre. La mayoría de los cursos simplemente enseñarían otra "herramienta" sin mucha teoría de fondo o cualquier "panorama general". A menudo se sentía como si se hubieran reunido rápidamente solo por el hecho de ofrecer ese curso.
Me quedé con eso y finalmente me gradué. La calidad permaneció bastante baja en todo momento (con algunas grandes excepciones), y varios otros estudiantes se han quejado al respecto. Como era de esperar, he aprendido mucho más de proyectos personales y trabajos a tiempo parcial que de la escuela, sin embargo , el proceso de terminar la escuela y la etiqueta "estudiante de software" parecen misteriosamente útiles en sí mismos.
Respuestas:
Las matemáticas y la programación son cosas totalmente diferentes. La matemática es ciencia, la programación es técnica. En el mundo académico, la programación es algo que debes saber para poder lidiar con las cosas reales, la que realmente es interesante y importa: los algoritmos.
¿A quién le importa si el compilador es antiguo y usas
system
llamadas? ¿A quién le importa si tienes Linux y no Windows? Bueno, los profesores no, eso es seguro. Y no deberían, de verdad. No esperes convertirte en un programador profesional de cursos en la institución académica. Para eso no vas allí.Es cierto que el compilador que espera que uses es antiguo, y la suposición sobre el sistema operativo es anacrónica y problemática. Puedes subirlo, y tal vez sea tratado. Pero no porque el curso sea incompatible con la industria, sino porque causa una dificultad inmediata a los estudiantes. Ve a buscar ese viejo compilador ahora y tenlo funcionando en tu MacBook ...
En general, los estudios académicos no deberían desperdiciarse en el aprendizaje de C ++ y Android, debería aprender las cosas reales de informática allí. No tendrás otra oportunidad para eso. ¿Androide? Descargue Eclipse con el ADT y comience a trabajar en él en casa, como yo. No necesito escuela para eso.
Creo que no está bien esperar el desarrollo técnico de las universidades. Especialmente no las universidades de investigación. Se puede decir que un lugar que solo ofrece solteros debería estar más orientado a la industria, pero las universidades de investigación quieren investigadores. Los profesores buscan posibles estudiantes de posgrado y candidatos a doctorado, no excelentes programadores. Así que creo que debe establecer su nivel de expectativas en consecuencia.
fuente
La informática es para programar lo que la física es para la carpintería.
Si quieres convertirte en carpintero, estudiar física no lo hará posible. Le enseñará muchas cosas interesantes, que podría aplicar a su trabajo, pero no le enseñará cómo ser un buen carpintero. Para eso, tendrás que aprender el oficio de la carpintería.
Del mismo modo, si quieres convertirte en un buen programador, tendrás que aprender el oficio de la programación . Desafortunadamente, no hay ninguna institución que emita ningún tipo de certificación. Básicamente, esto es algo que tendrá que hacer por su cuenta, con lo que sea que ayude a las personas que pueda encontrar. Para ti esto significa repetición y reflexión. Escriba mucho código y luego vuelva a mirarlo. También tome tiempo para leer el código de otras personas. Considere participar en proyectos de código abierto.
A las universidades no les importa mucho la programación y menos aún los detalles que cambiarán en los próximos años. Lo que ves en tu escuela es que han elegido un entorno de programación (uno malo, pero eso no es tan importante) y ahora te lo muestran, para que tengan un marco de referencia en el que puedan enseñarte varias técnicas de programación. Se puede argumentar que el marco de referencia es deficiente y que incluso el idioma es una elección extraña. Desde su perspectiva, probablemente no importe, porque se elige de manera bastante arbitraria.
fuente
No hay nada de malo en aprender 'estilo DOS'. Estoy seguro de que muchos de los veteranos aquí comenzaron en DOS, o incluso con sistemas operativos anteriores, escribiendo programas basados en líneas, y se han ajustado muy bien. El mundo de la computación cambia tan rápido que no me obsesionaría con detalles como qué biblioteca se utilizó para qué.
En realidad, sospecho que la razón por la que tenemos un mundo lleno de programadores que pueden decirte qué es la inyección de dependencia , pero luchan por responder a FizzBuzz , es porque muchos programadores no pasan mucho tiempo en ese nivel básico.
Parece que esta es una introducción a la programación, por lo tanto, no se preocupe. Aprende los conceptos básicos y lo harás bien. Si estás interesado en otras plataformas, expórtalas tú mismo. Eso es lo mejor de la programación.
fuente
¿Cómo puedes lidiar con eso? Descargue libros electrónicos de programación o videos en streaming, pruebe los ejemplos usted mismo. No dependas de tus profesores. La programación es altamente aprendida por su cuenta.
fuente
Bueno, muchas universidades tienen profesores de programación de mala calidad. Fui a una de las mejores escuelas de posgrado de mi país y aprendí a hacer sentadillas en programación. Supongo que la mayoría de las unidades son así porque los programadores realmente buenos optan por trabajos mejor remunerados (no docentes). Debería tomar un pequeño proyecto e intentar codificarlo usted mismo. Puede obtener consejos de muchos foros como este. Esa podría ser una mejor manera de aprender a largo plazo.
fuente
Creo que la Universidad debería enseñar conceptos abstractos de lenguajes de programación, algoritmos, etc. y no debería ser el lugar donde aprendes programación: la programación es una actividad muy práctica y solo puedes aprenderla haciendo.
Durante mi estudio aprendí los conceptos básicos de programación en Pascal, luego tuve un proyecto en C (tuvimos que aprender el lenguaje por nosotros mismos) y luego tuve un curso sobre conceptos de lenguaje de programación (procedimental, orientado a objetos, funcional, lógica) . Era folklore que en MSDOS tienes conio.h o punteros lejanos, que no tienes en un sistema UNIX. Esto era lo que los alumnos discutíamos sobre una cerveza, no era algo que se discutiera durante las clases porque no era tan importante. La enseñanza universitaria se centra en el conocimiento abstracto y general y evita entrar en detalles: los ejemplos y detalles se presentan solo para ilustrar las cosas generales.
El ejemplo que dio sobre ASCII versus Unicode y la biblioteca MSDOS conio.h significa que cada entorno de programación tiene su forma particular de hacer y organizar cosas. Si programa en C ++ en Visual Studio, tendrá que usar otras bibliotecas, algunas de las cuales no se encuentran, por ejemplo, en Linux. Entonces, si el curso fuera en Windows 7 / Visual Studio, algunas personas podrían quejarse de que sería mejor hacerlo en Linux / GCC. Pero, en mi opinión, este no es el punto.
Por lo tanto, creo que debes tratar de no distraerte con los detalles y concentrarte en los conceptos generales que cubre el curso. Por ejemplo, que en la mayoría de los lenguajes de programación necesitará alguna biblioteca para implementar la E / S de la consola y que, dado un entorno de programación, tendrá que resolver su problema con las herramientas que tiene a mano. Tal vez esto le parezca bastante obvio y tenga la impresión de que realmente no está aprendiendo algo porque ya tiene algún conocimiento previo (esto puede suceder), pero no tuve la impresión de que está asistiendo a un mal curso.
fuente
Las universidades están dando las bases. Una vez que es fuerte, puedes construir rascacielos encima de él. Aprendí BASIC, C y C ++ durante mis días de universidad. Más tarde, cuando proyecté en Visual C ++, creí que era un mundo completamente diferente. Más tarde me di cuenta de la diferencia entre Framework e Idiomas.
Elija una universidad adecuada donde brinden el desarrollo enfocado de su campo de computación deseado. Lo que puede ayudarte más adelante en tu carrera.
fuente
¡Las copias impresas llenas
system("");
son realmente muy buenas! Me sorprende que la gente no sepa nada sobre estas funciones hoy en día.system("pause")
, y te deshaces de todas las trampas de las funciones getX.system("cls")
, y acabas de guardar una página de código.system("mkdir foo")
y acaba de guardar 2 páginas de asignaciones de búfer, divisiones de ruta, _makepath_ss, límites de 256 rutas, toneladas de salidas de error, etc.Además, el código es tan simple que un mono lo entenderá.
La escuela de perversiones polimórficas es lo que debería estar prohibido por ley.
PD: Además, con el debido respeto, me cuesta mucho aceptar que a las personas se les enseñe C ++ con excepciones y todo virtual como algo BUENO, porque tiene más trampas y minas terrestres de lo que puedes imaginar, e incluso Bjarne Stroustrup evangeliza excepciones como algo súper fácil y seguro, mientras que en realidad son una mina nuclear.
Ver análisis sobre Misra-C ++ y JSF-C ++. Y http://blogs.msdn.com/b/oldnewthing/archive/2005/01/14/352949.aspx . Soy demasiado vago para encontrar todos los artículos restantes hoy.
Dicho todo esto, soy desarrollador de c ++ y disfruto de muchas funciones y del lenguaje en general.
fuente
Mi sugerencia puede sonar por ahí, pero escúchame ... Cambiar de especialidad.
En mi experiencia en la academia, la especialización en informática fue una mirada de muy bajo nivel a lo que hace que las computadoras funcionen. Comenzó con un manual básico en C ++ para asegurarse de saber qué era un programa, y los conceptos básicos de la memoria y la computación detrás del programa, y luego aprendió conceptos de ensamblaje, sistema operativo, ingeniería eléctrica, diseño digital, etc. este grado y busque trabajo con NVidia o AMD, o Lockheed; en algún lugar donde están haciendo nuevo hardware, que necesita a alguien que pueda entender ese hardware en un nivel lo suficientemente bajo como para escribir los controladores y el software de control.
Parece que lo que quieres es un curso de estudio que, en mi universidad, se llamaba Gestión de sistemas de información. Ese es el curso que seguí; enseñó programación en Java, VB.NET, C # y algunos PHP y otros scripts web en el camino. También requería cálculo (pero no en el mismo grado que CS), contabilidad, finanzas, estadísticas, comunicación empresarial, OO A&D, diseño de bases de datos y análisis de sistemas. Obtuve un BBA en lugar de un BS, y tenía las herramientas básicas para comenzar a trabajar como desarrollador de software web o Windows.
Lo que la especialización en "Ciencias de la Computación" te prepara para hacer depende en gran medida de la universidad que lo ofrezca. Parece que está en un camino temprano para obtener una visión muy anacrónica y de bajo nivel de las computadoras que no suena como lo que busca después de su educación. Le insto a que mire a su alrededor en la universidad y encuentre un curso de estudio que se centre más en el tipo de trabajo informático que querrá realizar después de la escuela.
Pase lo que pase, su curso de estudio comenzará en una escritura de programa muy básica, "a nivel de consola". El idioma no importa; lo que te enseñan es programación básica de procedimientos; cómo pensar en pasos lo suficientemente pequeños como para que la computadora pueda seguirte paso a paso (porque la computadora no da nada por sentado y no puede seguir la mayoría de los saltos humanos en la lógica). A partir de ahí, avanzará a la programación orientada a objetos (en lugar de tener una función larga que haga todo, es mucho más fácil mantener varios "objetos" de código más pequeños, que representan el estado y la lógica de los objetos del mundo real), luego programación basada en eventos ("No nos llame, lo llamaremos"; su programa básicamente se inicia, le dice al sistema operativo que configure su IU gráfica inicial,
fuente
Los cursos de informática no te enseñarán programación. Este es un paseo por el parque en comparación con parte de la programación que hice en mi curso de CS.
El problema fundamental con esto, en mi experiencia, es que no hay prácticamente ningún lugar que te enseñe a programar en un nivel equivalente, por lo que no tienes elección en absoluto.
fuente
Creo que puede haber cierta confusión sobre qué y por qué estás estudiando.
Parece que estás estudiando un programa introductorio de ciencias de la computación. Esto está dirigido a personas con experiencia mínima que están aprendiendo los conceptos básicos sobre cómo funcionan las computadoras en un nivel bajo.
También parece que eres un programador semi serio o profesional. Has estado programando durante 10 años y te sientes cómodo en 3 idiomas. Parece que sabes lo que estás haciendo al menos lo suficiente para trabajar como parte de un equipo. ¿Te sientes fuera de lugar en este curso? ¿Los otros estudiantes tienen un nivel de experiencia o habilidad similar al tuyo?
¿Qué pretendes sacar de este curso?
¿Estás justo después de ese 'pedazo de papel'? Si este es el caso, entonces no dejes de intentar conseguir un trabajo mientras estudias. Solicite trabajos, dígales que es un programador competente y que está estudiando porque necesita el papel para conseguir un trabajo. Si lo contratan, considere abandonar: una vez que tenga un trabajo profesional, ya no necesitará ese pedazo de papel. Acepte un salario más bajo de lo normal, porque es mejor que le paguen por aprender (en el trabajo) que pagar por aprender en la escuela, y también aprenderá más rápido. Después de un año o dos, estarás mayormente al día, y luego puedes solicitar un aumento salarial decente o puedes buscar otro trabajo porque tendrás experiencia.
¿O estás tratando de aprender algo? Entonces deja de juzgar a tu profesor. Como un maestro de secundaria memorable solía decir 'SENTATE, Y CÁLLATE'. Está casi garantizado que el profesor tiene una experiencia y un conocimiento inmensamente mayores que usted y que podría aprender muchísimo de él. Si va demasiado lento para usted, intente obtener crédito para estos cursos introductorios en función de su aprendizaje y experiencia previos.
¿Pero estás en el camino correcto? También podría aprender mucho del profesor de literatura o de un profesor de historia ... no particularmente relevante. Tal vez no desee "ciencias de la computación", sino habilidades más prácticas y del "mundo real". Prueba la "ingeniería de software". Mira otras instituciones para un curso más centrado.
Al igual que cuando comienza un nuevo trabajo, una clase o curso de estudio puede ser muy difícil de revisar desde el exterior. Parece que estás en un curso que no te está dando lo que esperas. Reconsidera tus opciones.
fuente
Pensé que muchas de las respuestas a esta pregunta fueron decepcionantes. Volvieron a la vieja y cansada discusión sobre CS vs Programación, etc. Puede que sea así, pero me parece que el curso en el que se encuentra el OP tampoco está enseñando.
Estaba en la situación de haber trabajado ya como programador y haber estudiado bastante solo, antes de estudiar CS a tiempo parcial en la universidad. Busqué cuidadosamente, pero en general encontré que el plan de estudios era una pérdida de tiempo. Además, no me dejaron saltear cursos a pesar de tener experiencia profesional en el área.
En mi experiencia, una proporción significativa de profesores son bastante vagos y utilizan un plan de estudios obsoleto. Sinceramente, parece que estás perdiendo el tiempo. Incluso me pregunto si completar el diploma te ayudará a encontrar un trabajo.
Dudo que pueda hacer mucho para cambiar las cosas sobre su curso. Puede complementarlo con el estudio por su cuenta. O simplemente olvídate de todo, estudia CS independientemente y haz algunas certificaciones de la industria también.
Debo agregar que no tengo idea sobre el valor del diploma en el mercado laboral de su país. Si el diploma en sí mismo es valioso a pesar del contenido, entonces es posible que solo tenga que soportar un plan de estudios que de alguna manera carece.
fuente
Tienen que atender a los estudiantes. La mayoría de los estudiantes no pueden programar. Así que no están obligados a ir allí técnicos.
También tienen sus propias áreas especializadas de investigación, pero no están enseñando eso. Y de todos modos, muchos investigadores no son buenos maestros, ¡así que podrías considerarte afortunado si están enseñando cosas que ya sabes!
De todos modos, no parece saber qué es la informática. No se trata de lo que es práctico para la industria.
fuente
Le pediría (y luego insistiría) que devuelva sus tareas en c ++ estándar. Esto es completamente razonable ya que no puede completar las tareas de otra manera.
En cuanto al mal estilo; inevitablemente habrá algo de esto para empezar. Aprender a usar la biblioteca io estándar correctamente requiere bastantes funciones avanzadas de c ++, en particular plantillas e iteradores. Puedo ver por qué un profesor te haría usar funciones io muy simples para empezar. Sin embargo, no tendría miedo de preguntar sobre esto, muestra entusiasmo y un poco de luz en tus ojos. Su profesor debería poder tejer su pregunta en una conferencia futura en la que (con suerte) corrija sus primeros ejercicios.
Aunque lo dejaría así. Aunque c ++ puede ser un lenguaje independiente de la plataforma, con frecuencia no lo es. Aprender algunas funciones del sistema de Windows no es algo malo, especialmente si luego te entrenas para hacerlo según el estándar. En algún momento te encontrarás
conio.h
al mirar el código de otras personas, y es bueno saber lo que hace.fuente