¿Cómo es estudiar informática en la Universidad de Michigan?

Estudiar Ciencias de la Computación en Michigan fue una experiencia inspiradora que me ayudó a conseguir un buen trabajo, conocer gente increíble y, en general, me ayudó a aprender cómo tener éxito.

Hubo algunas clases que me destacaron especialmente durante mi estadía de 4 años.

1. Estudio avanzado dirigido en desarrollo de aplicaciones móviles con el profesor Jeff Ringenberg (EECS 499)

En este curso, los estudiantes trabajan en grupos para llevar a buen término las aplicaciones móviles (resultó que trabajaba principalmente en aplicaciones iOS). Tomé este curso 3 veces (una vez para cumplir un requisito, pero dos veces más porque lo disfruté y pensé que en general fue útil para avanzar mi educación).

La primera vez, me emparejaron con un grupo que estaba creando una aplicación de iPad para los equipos de baloncesto de hombres y mujeres de Michigan. La aplicación tenía características para estadísticas, una fuente de noticias y un calendario de juegos. También tuvimos un diseñador que hizo gráficos increíbles para cada componente, por lo que el producto final resultó bastante elegante.

La segunda vez, tomé el curso junto con Desarrollo de aplicaciones móviles para emprendedores con el Prof. Elliot Soloway (EECS 441, y también un excelente curso que abarcó materiales útiles como The Innovator’s Dilemma y Crossing the Chasm). Esta vez entré al curso con una idea y un equipo en mente. Creamos una aplicación que reúne fuentes de información sobre barras (como la longitud de la línea) para ayudarlo a elegir a qué barra ir.

La tercera vez, no tenía una idea fija en mente, pero acepté trabajar en un proyecto con la Prof. Emily Mower Provost . Esta vez estaba trabajando de forma independiente, pero directamente con un profesor (nos reuníamos aproximadamente una vez por semana). El enfoque de investigación del profesor Provost tiene que ver con evaluar cuantitativamente las emociones, y la aplicación en la que estábamos trabajando era un juego en el que se podía calcular su “coeficiente intelectual emocional” al dar calificaciones emocionales a una serie de videos.

2. Diseño y análisis de algoritmos con el Prof. Quentin Stout (EECS 586)

Este curso fue, con mucho, el curso más difícil que he tomado. Las tareas fueron muy curvas porque aparentemente algunas de las preguntas son tan difíciles que se están investigando activamente y aún no tienen respuestas claras. No obstante, creo que este curso me inspiró más que cualquier otro que haya tomado porque me enseñó lo bueno del mundo de que es capaz la informática. Mi problema favorito que discutimos fue el problema de los bandidos. El profesor Stout había aplicado soluciones a este problema en el campo de las pruebas clínicas de medicina en bebés. Básicamente, esto permitió a los médicos descubrir qué medicamentos eran más efectivos con menos rondas de pruebas, literalmente salvando vidas. (Puede leer más sobre su investigación aquí: Ensayos clínicos adaptativos y otros experimentos de muestreo adaptativo)

3. Seguridad informática y de red con el Prof. J. Alex Halderman (EECS 588)

No creo que pueda enfatizar lo suficiente lo importante que es que todos (especialmente los estudiantes de informática y los programadores) se den cuenta de lo importante que es el campo de la seguridad y cuán erróneos son los supuestos de muchas personas sobre cómo funcionan los sistemas. No creo que podría haber tomado este curso en un momento más conveniente considerando que los incidentes relacionados con Snowden ocurrieron durante el verano después de que lo completé.

El profesor Halderman no solo fue un maestro increíblemente atractivo, sino que ha realizado una investigación realmente genial que creo que es interesante para los estudiantes de CS y los que no son CS. Por ejemplo, ha realizado un trabajo extenso para desacreditar la viabilidad actual de las máquinas de votación electrónica [Página en jhalderm.com]; le han mostrado que puede robar información de una computadora usando una lata de compresión de aire para limpiar los teclados (conocido como “Coldboot Attack”) [Para que no lo recordemos: ataques de arranque en frío en claves de cifrado]; y, en el último día de clase, en realidad nos enseñó cómo bloquear cerraduras físicas. Tiene una excelente página web que enumera las lecturas que tuvimos para la clase: EECS 588 – Lista de lectura

Todos estos son cursos de nivel superior que no tienes la oportunidad de tomar hasta tus años junior o senior, pero definitivamente vale la pena esperar. Los estudiantes de primer año y segundo año se componen principalmente de requisitos previos y clases de fin de semana que son extremadamente difíciles. En su mayoría consisten en matemáticas, programación y algoritmos.

Una cosa que encontré muy extraña sobre CS en Michigan (y creo que esto está en línea con los estudios de CS en general en otras universidades), es que mucha programación no se enseña realmente como parte de las conferencias. Lo que significa que se espera que lo recojas por tu cuenta. Las conferencias se centran más en teorías y conceptos, pero muchas o la mayoría de las tareas requieren mucha programación. No estoy seguro si estoy de acuerdo con esto o no, pero desearía que se enfatizara mucho más porque realmente no entendí este hecho por un tiempo, lo que hizo que mucho trabajo fuera mucho más difícil de lo que tenía que ser.

Michigan tiene muchos extracurriculares relacionados con CS.

MHacks – El estudiante más grande ejecuta hackathon.
Feria de carreras de Michigan : una de las ferias de carreras más grandes del país, y CS es casi siempre la especialidad más deseada por los empleadores.
MSuite – Software colaborativo para estudiantes donde los estudiantes trabajan en equipos para trabajar en aplicaciones móviles, como describí anteriormente.
– Los invitados vienen a dar presentaciones todo el tiempo. Los más notables que vi fueron Peter Norvig (padre de AI, Google), Jack Dorsey (Twitter, Square) y Bjarne Stroustrup (creado C ++).
– Mucho más. La comunidad en torno a CS es muy apasionada y activa.

Lo disfrute mucho.

Sentí que el programa enfatizaba las habilidades prácticas y enseñaba muchos fundamentos de programación. Hasta donde yo sé, todavía enseñan C ++ para los cursos de introducción que vienen con toda la maldad de los punteros y la gestión de la memoria; Sin embargo, personalmente sentí que esto era más beneficioso que perjudicial porque te hace entender realmente los niveles más bajos de cómputo.

Como estudiante universitario de ingeniería, deberá completar al menos dos cursos de proyectos a gran escala: uno en su primer año y otro una vez que casi haya terminado con los cursos de la división superior (el llamado proyecto de diseño senior). El curso del proyecto de ingeniería de primer año que tomé se llamaba “Música y microprocesadores”, aunque creo que el nombre ahora ha cambiado. Fue (y espero que sea) un curso fantástico que lo lleve a través de procesadores básicos, Verilog y ensamblaje, todo culminando en un proyecto más grande escrito en ensamblaje para ejecutarse en un FPGA.

En el otro extremo de tu título de CS, tienes un proyecto de diseño senior. En CS, podría haber tomado un curso de diseño de juegos (eecs 494), un curso de ingeniería de software a gran escala (eecs 481), un curso de diseño de microprocesadores (eecs 470) o un curso de proyecto abierto (eecs 497). Algunos de estos pueden haber cambiado. Sin embargo, la esencia de estos cursos es pasar un período prolongado de tiempo trabajando, gestionando y desarrollando un proyecto a gran escala.

En cuanto a los cursos generales, muchas de las primeras clases se basan en autograder. Lea una especificación, implemente de acuerdo con la especificación y envíela para una batería de pruebas unitarias y de integración. Aunque generalmente no se enseña como desarrollo impulsado por pruebas, existen varias similitudes. De hecho, algunos de los cursos incluso requieren que los estudiantes envíen casos de prueba para intentar asegurarse de que pensamos en cómo el software puede fallar.

No soy fanático, para ser honesto. No estoy muy seguro de si es solo Michigan o la universidad en general. Hay una falta de disposición para adaptarse a las demandas de la industria.

A Michigan, en mi opinión, le gusta atribuirse el mérito de producir excelentes estudiantes, pero este es un concepto de huevo y gallina. Es decir, Michigan selecciona a los mejores estudiantes de todo el país, por lo tanto, ¡no es sorprendente que algunos de los graduados sean excelentes porque ya eran excelentes!

En lo que respecta a lo académico, definitivamente no soy un fanático. De ningún modo. Parece haber mucha apatía con muchos de los profesores. Muchos están aquí solo para investigar y no para enseñar. Esto se demuestra con el esfuerzo que ponen en la enseñanza. A veces, es muy claro que los profesores no están calificados para impartir clases que se les asignan. Esto es muy decepcionante.

A menudo, estás atascado con un trabajo ocupado que te mantiene ocupado y estresado cuando realmente podrías estar usando tu tiempo de manera mucho más productiva por ti mismo con proyectos autodirigidos.

Sin embargo, no se pierde toda esperanza, ahora hay una floreciente comunidad empresarial en Michigan. Está dirigido principalmente por decenas de estudiantes. ¡Estudiantes, no Michigan! Los excelentes estudiantes son responsables de organizaciones como MPowered, Michigan Hackers y el reciente Creator’s Coop.

Aquí hay excelentes organizaciones dirigidas por estudiantes. Si asiste, asegúrese de aprovecharlos. Son una de las principales cualidades redentoras de Michigan. ¡Si no lo haces, te lo perderás!

Finalmente, quiero enfatizar que esta es mi experiencia. No hablo por todos los demás. Soy diferente a la mayoría de la gente. Me siento cómodo siendo un autodidacta autodirigido. Esta no es la norma, no lo creo. Si necesita ser empujado, Michigan puede ser el lugar perfecto para usted, pero no fue para mí.

PD: Usted tiene una ventaja injusta de ser reclutado porque las compañías saben que los estudiantes de Michigan son, en promedio, excelentes, pero no necesariamente por los académicos de Michigan, sino más probablemente por el estudiante que selecciona inicialmente para sus programas.

Salud,
Michael Hayter