Lo que se enseña en el Máster en Ingeniería de Software en St. Petersburg HSE

Muchos no entienden lo que pueden enseñar en la maestría en Ingeniería de Software, y creen que después de la licenciatura debes ir a trabajar y aprender todo allí mismo. ¿Vale la pena ir a un programa de maestría en SE? Esta es una pregunta difícil, y en este artículo no la responderemos, pero le diremos qué graduados de solteros fuertes se enseñan en la nuestra.



Mi nombre es Olya Kunyavskaya, estoy en mi primer año del programa de Maestría en Programación y Análisis de Datos en la Escuela Superior de Economía - San Petersburgo en la carrera de Ingeniería de Software. En la serie anterior, ya hablé sobre mi camino hacia HSE y la motivación con la que vine aquí.

Como es nuestro estudio


¿Qué se enseña conceptualmente?


Solo los graduados de solteros fuertes en TI son aceptados para nuestro programa de maestría, por lo tanto, se cree que ya hemos recibido todos los conocimientos básicos necesarios en matemáticas, algoritmos y programación en estudios de pregrado. El objetivo de la pista de Ingeniería de software es dar a los estudiantes una idea de las diferentes direcciones fundamentales en el desarrollo. Por lo tanto, los cursos para nosotros se seleccionan de diferentes áreas de conocimiento, de una forma u otra relacionadas con el desarrollo.

La capacidad de influir en tu aprendizaje


Nuestro programa es nuevo y podemos influir en lo que serán los cursos. El conjunto de disciplinas ahora está cambiando de año en año, y nuestro programa ya es bastante diferente del programa de nuestros colegas un año más viejo.

Podemos expresar deseos, a qué cursos queremos asistir (preferiblemente con una indicación específica de quién lee este curso y dónde), y la administración tratará de acordarlo. Nuestra opinión también afecta cómo y quién leerá los cursos el próximo año. Al final de cada semestre, completamos cuestionarios, y luego el curador discute los resultados con nosotros y nos aconseja la mejor manera de cambiar el curso y si vale la pena dejarlo para el próximo año. Esta retroalimentación es importante para el desarrollo del plan de estudios, ya que muchos cursos se imparten por primera vez. 

Características de aprendizaje


De las cosas inusuales que son específicas de HSE, los estudios se desglosan por módulos, en lugar de semestres, como en otras universidades. Un módulo es de dos a tres meses, y en un año tenemos cuatro módulos de capacitación. Como regla general, en cada módulo pasamos por tres temas. 

Algunas asignaturas duran un semestre, otras un módulo. Algunas de las asignaturas se leen solo para nosotros y para los estudiantes del segundo año de nuestra subdirección (de cuatro a seis personas están presentes en las clases). Tomamos algunas materias en la Yandex Data Analysis School y parte de los cursos junto con niños de otras áreas. 

Teníamos cursos teóricos y bastante aplicados, y cursos relacionados con el desarrollo de habilidades blandas. 

Que nos enseñan


El objetivo de la pista de Ingeniería de Software es brindarnos algo de experiencia en diversas áreas relacionadas con el desarrollo. No estoy seguro de poder describir el panorama general, así que solo les contaré sobre los cursos que nos enseñaron este año: qué sucedió en cada uno de ellos y qué impresiones tuve.

Algoritmos de gestión de datos


Curso teórico sobre algoritmos relacionados con bases de datos. El curso duró un módulo, tres pares a la semana. Nos informaron sobre algoritmos de procesamiento de transacciones en bases de datos distribuidas. Por ejemplo, sobre los criterios para la corrección de los horarios de ejecución de transacciones, protocolos de control de concurrencia, recuperación de la base de datos después de una caída.

Tuvimos dos conferencias y un seminario semanalmente. En cada seminario, tres personas prepararon informes durante 20 minutos sobre uno de los artículos previamente preparados. Solo había siete de nosotros en el curso, por lo que era necesario preparar un informe cada dos semanas, que a menudo es suficiente. Al mismo tiempo, los informes preparados siempre fueron tratados positivamente. 

El principal beneficio de este curso para mí no estaba relacionado con el material principal. La habilidad clave que he mejorado es la capacidad de preparar informes científicos en inglés. 

El curso fue leído por Boris Novikov en su totalidad en inglés. A pesar del hecho de que todos los estudiantes hablaban ruso, las conferencias se impartieron en inglés, las preguntas deberían haberse hecho en inglés y los informes también deberían prepararse en inglés, respectivamente. En mi vida, constantemente me parece que no sé el inglés lo suficientemente bien y, por lo tanto, debo esconderme y guardar silencio, pero una de las reglas del curso era "Cualquiera puede decir cosas arbitrariamente estúpidas y analfabetas arbitrariamente", por lo tanto, se creó una atmósfera muy positiva.

Después de este curso, en primer lugar, creí que podía contar algunos pensamientos no triviales en inglés durante mucho tiempo sin problemas, y en segundo lugar, adquirí cierta habilidad para aislar información clave de artículos científicos.  

Gráficos de computadora


El curso fue diseñado para un semestre y se dedicó principalmente a la representación en Unity. Fue leído por Mikhail Panin , un techlide en Playneta.gg . Hubo muchas tareas prácticas, principalmente dedicadas a escribir sombreadores y generar mallas. 

Mientras tomaba este curso, tuve una expansión de conciencia en términos de percepción visual de los objetos. La tarea final fue la generación de la nube. Y mientras lo hacía, me di cuenta de que, de hecho, nunca miraba realmente las nubes y me preguntaba cómo se veían. No pude validar si logré generar un cielo hermoso, por lo que la tarea me llevó mucho tiempo y al final no lo pasé al grado máximo. Estoy generando algún tipo de nube, me parece que es una nube normal, se la envío al maestro e inmediatamente recibo la respuesta: "Bueno, aquí está oscuro, debe estar oscuro no aquí, sino debajo, pero este lugar no parece una nube en absoluto" . Creo que envié unas 20 versiones diferentes de las nubes.


Ahora voy a trabajar, miro al cielo, veo una nube, me quedo inmediatamente y pienso: "Hmm ... ¿Por qué, curiosamente, la nube está oscura arriba y abajo, por el contrario, es luz?" Entonces entiendo que está amaneciendo y la fuente de luz está abajo. 


Tarea en la que era necesario implementar un modelo difuso y reflexivo y algo intermedio.

Después de un curso de gráficos por computadora, ahora miro mucho las nubes. Y también en paredes de ladrillo y objetos de diferentes especularidades. 

Protección contra ataques de red


El curso se leyó solo para nuestra subdirección, había seis estudiantes en total. Aprendimos a levantar la red, configurar y cargar Apache y nginx, detectar vulnerabilidades y defendernos contra ataques.

El curso fue completamente práctico y consistió principalmente en las respuestas del profesor a nuestras preguntas y trabajo de laboratorio, a las cuales nos dieron instrucciones detalladas sobre qué hacer. Lo principal que entendí durante este curso es que no es en absoluto el área que quiero tratar. Cada vez que te sientas a decidir el laboratorio, al principio parece que todo está extremadamente claro. Luego se descubren muchas dificultades, por ejemplo, inconsistencias en las versiones del programa, límites inesperados en el número de conexiones abiertas, o de repente resulta que en algún lugar no hay suficientes configuraciones. Además, todos los que tomaron el curso tenían problemas en diferentes lugares y, sin la ayuda de un maestro, a menudo no podían entender cuál era el problema.

Era simple sobre el tema, cuando todo iba como debería, y se hacía muy difícil si algo salía mal de repente.

Álgebra de campo finito y teoría de la codificación


El curso está construido de manera muy interactiva. Se llevaron a cabo conferencias y prácticas para solo cinco personas, y hubo mucha comunicación. En la conferencia, la transición al siguiente pensamiento ocurrió solo cuando todos los presentes entendieron el anterior. Más bien discutimos objetos reales, en lugar de ideas y conceptos abstractos, ya que esto, según mis recuerdos, sucedió en cursos matemáticos en estudios de pregrado. En las conferencias, primero nos dieron ejemplos de algunos objetos nuevos, los examinamos, los retorcimos en nuestras manos, entendimos cómo podíamos trabajar con ellos y encontramos algunos patrones. Y solo después de que nos inspiró un nuevo objeto, el maestro comenzó a formular y probar los teoremas. 

Como éramos cinco, durante la práctica todos lograron resolver problemas en el tablero. Las tareas eran muy prácticas: por ejemplo, construir un campo finito, determinar elementos inversos, cifrar y descifrar algo. Y así el conocimiento fue mucho más vivo.

Un ejemplo de una tarea: hay un campo finito lo suficientemente grande y necesita calcular mucho sobre él: órdenes de elementos, clases ciclotómicas inversas y algo más. Desde el principio, no sabes cómo contarlo todo, y piensas de la manera más simple. Después de varias iteraciones, observa que puede contar un orden de magnitud más rápido y comienza a usar algunas propiedades en el cálculo. Usted mismo entendió cómo funciona esta o aquella propiedad y por qué funciona, y la usa por este motivo, y no porque uno de los teoremas dice que esto debería hacerse. 

Me parece que realmente no hay suficientes elementos en los que la intuición se desarrolle simplemente para trabajar con uno u otro objeto. Es una pena que el curso haya durado solo un módulo. 

Desarrollo del juego


Se impartió un curso introductorio de desarrollo de juegos con la asistencia de Playkot , y se impartió por primera vez: para nosotros y en general. Fue enseñado por varias personas diferentes que representan a la industria del juego.


El curso se dividió en partes dedicadas a varios aspectos del desarrollo del juego: animación, física, IA, aspectos avanzados de renderización y optimización, red. Además, hubo conferencias generales sobre campos relacionados (diseño de juegos, análisis en juegos, interacción del usuario y arte). La persona que se ocupa de él habló sobre cada área. Por ejemplo, Anton Yakovlev dio una serie de conferencias sobre la Unidad . Trabaja como líder de física en Unity, hace juegos en nombre de su equipo de PointOmega Games y da una variedad de conferencias. Nos dijeron cómo hacer animación en Unity, agregar control sobre los jugadores o crear bots.

Este es el caso cuando hay más maestros en el curso que estudiantes. Solo somos cinco, y como tarea para todo el curso, los cinco hacemos un pequeño juego con interacción de red, física y varios bots. Veamos que tenemos al final :) 

C ++


Tenía muchas ganas de escuchar este curso en particular. En pregrado, tuvimos un curso anual de C ++, sin embargo, esto fue en 2014. Desde entonces, el estándar y las características del idioma ya han cambiado. Estoy desarrollando en C ++ y conozco este lenguaje hasta cierto punto, pero mi conocimiento se está volviendo obsoleto lentamente y quiero actualizarlo. 

Este curso es la segunda parte del curso C ++, y va de la mano para nosotros y para los estudiantes del Centro de Ciencias de la Computación. Tiene una duración de un semestre, leída por Valera Lesin y profesores invitados que conocen bien áreas específicas. Se nos informa sobre todo tipo de chips geniales que aparecieron en el vigésimo estándar, es decir, unos meses antes del comienzo del curso. Por ejemplo, sobre módulos, conceptos o corutinas. Después de eso, en la práctica, resolvemos problemas en cada tema y tenemos la oportunidad de jugar con el nuevo concepto del lenguaje. 

Teoría de juego


Este curso fue impartido para estudiantes de primer año de dos maestrías en nuestra facultad: para unas treinta personas. Había muchos maestros, eran empleados del Laboratorio Internacional de Teoría de Juegos y Toma de Decisiones en San Petersburgo HSE. El curso se enseñó simultáneamente en ruso e inglés: algunos profesores extranjeros no hablaban ruso y daban conferencias en inglés, algunos podían hablar ruso, pero escribían en inglés.

Debido al hecho de que los maestros cambiaban todo el tiempo, algunas conferencias fueron muy interesantes e interesantes, y en algunas me quedé dormida. Y categóricamente no tenía suficiente práctica. Hubo una prueba simple y dos tareas, y resultó que para la prueba fue suficiente para pasar dos de estas tres tareas. Así que tiré la segunda tarea en el medio y no la terminé. Pasó a la línea de tareas no urgentes y opcionales.

Curso demasiado poco exigente, en mi opinión.

Gestión de TI


El curso sobre gestión de TI duró un módulo y fue leído por Ilya Andreevich Pshenichny: director interino de desarrollo de negocios en Playkot . Al curso asistieron estudiantes universitarios de dos programas: el nuestro y el programa "Sistemas de información e interacción humano-computadora".   

Las clases fueron principalmente conferencias, y el curso nos contó un poco sobre los diversos aspectos de la gestión específicos de la industria de TI. Por ejemplo, cuáles son los enfoques de desarrollo, las etapas de desarrollo y en qué etapas se puede usar, cómo gestionar los riesgos, cuáles son las funciones principales de un líder, cómo motivar a un equipo, cómo contratar y despedir empleados, y al final del curso había algunas recomendaciones para el autodesarrollo.

Las conferencias fueron muy fáciles e interesantes de escuchar. Por lo general, la historia sobre cada una de las áreas de gestión fue apoyada activamente por ejemplos de experiencias personales y explicaciones de qué funcionó exactamente bien y en qué casos. 

La tarea práctica para este curso fue solo una. Nos dieron una solicitud y tuvimos que hacer un plan de desarrollo y presupuesto. El trabajo debía hacerse en dos semanas, luego se verificó, y con todos los que querían escuchar los comentarios o arreglar algo, el maestro llamó personalmente y habló. Después de eso, se dio otra semana para su corrección. 

Las conferencias abordaron por separado el tema de cómo trabajar con el equipo y qué afecta la motivación de los empleados. Por ejemplo, se nos dijo que una de las tareas importantes de un líder es dar una respuesta competente a los subordinados. 

En este sentido, quiero contar una historia de cómo Ilya Andreyevich me dio su opinión sobre mi tarea final. Inicialmente, obtuve 7 de 10 para la tarea (en una escala de cinco puntos, esto es 4). En general, esto es regular, pero no es un desastre. Dudaba si debía corregir: hay otras cosas. Durante la llamada, Ilya Andreevich, naturalmente, me dijo lo que estaba mal en el trabajo: los salarios de los empleados no eran de mercado, los impuestos no se tenían en cuenta, y la prueba de la aplicación generalmente se perdió en algún lugar del plan. Al final, agregó que definitivamente espera que corrija esta tarea. Me preguntaba de dónde provenía tanta confianza. Él respondió: "Porque eres obligatorio, diligente y te esfuerzas por la perfección". Y quiero cumplir con estas características, ¡así que fui a arreglarlo, sin ninguna duda! 

Me pareció que este es un ejemplo muy hermoso de cómo puede dar retroalimentación negativa de tal manera que una persona tenga una gran motivación para arreglar el trabajo. Y sí, para esta tarea tengo un total de 10.    

Teoría y práctica de concurrencia


Tomamos este curso de forma remota en la Yandex Data Analysis School, impartido por Roman Lipovsky. El curso está dedicado a sistemas competitivos. Nos dice cómo funciona el modelo de memoria, cómo funcionan las corutinas, las fibras y también sobre el dispositivo de diferentes primitivas de sincronización y sobre cómo trabajar con sistemas asincrónicos. 

El curso es remoto y muchos estudiantes asisten, por lo que la comunicación individual con el maestro no funciona. Pero las prácticas y la tarea están muy pensadas. 

La tarea se verifica automáticamente en su computadora dentro del contenedor Docker. Puede eliminar los cambios de Clion a Docker, y luego comenzar la prueba con un simple comando. Al mismo tiempo, las pruebas se realizaron bastante bien, y esto es muy difícil para un curso de programación competitiva. Si entiendo correctamente, el hecho es que, en lugar de las primitivas estándar, usamos nuestras propias implementaciones de maestros que pueden verificar la corrección del trabajo. Por ejemplo, cambiar los flujos de una determinada manera o hacer un espurio despertar.

La tarea también se hace muy bien. Un conjunto de tareas de varios niveles de dificultad aparece regularmente. Además, por lo general, toda la infraestructura ya está implementada para nosotros y no necesitamos dedicarle tiempo. Solo es necesario darse cuenta directamente de la esencia por la cual se le dio la tarea. Había tareas para descubrir cómo trabajar de forma asíncrona en C ++, y para implementar sus rutinas e implementar sus primitivas. 

MAGUEGO


Además de los cursos en la especialidad, durante el curso de estudios en la magistratura, debemos tomar un curso pequeño del tamaño de un módulo que no esté relacionado con nuestra dirección elegida. En el HSE de San Petersburgo, este curso se esconde bajo el nombre en clave MAGOLEGO. Nos dieron la opción de elegir entre 20 disciplinas relacionadas con diferentes áreas: economía, derecho, psicología, administración, etc. En cambio, puede tomar el curso en línea de nuestra elección, si lo acepta primero. 

Tomé un curso de tiempo completo llamado Psicología del éxito profesional, y quedé más que satisfecho con mi elección. Nos informaron sobre los conflictos que probablemente se produzcan en el trabajo, cómo responder constructivamente a los comentarios, qué son las disfunciones profesionales y qué se puede hacer con el agotamiento emocional. Además, le contaron cómo puede entender algo sobre una persona por el estilo de su discurso y escritura, y a qué pueden prestar atención durante las entrevistas. 

Me parece que puedo dedicar un artículo separado a pensamientos interesantes de este curso. El curso fue leído por Elena Igorevna Kudryavtseva, fue muy fácil e interesante escucharlo. Una buena estructura narrativa, una voz bien establecida con un claro énfasis en la entonación de lugares interesantes y con muchos ejemplos que explican lo que significa. 

Como tarea de informes, necesitábamos crear nuestra propia cartera. La cartera es similar a un currículum, pero la diferencia entre ellos es que cada proyecto / lugar de trabajo / logro tiene una página separada con una historia. Se cree que es muy conveniente tener un padre así cuando se entrevista para un trabajo, porque es mucho más fácil hablar sobre usted y es más fácil para un entrevistador entender lo que puede hacer. 

Me gustó que después de completar el curso todavía tenía algunos artefactos en forma de portafolio, que pueden ser útiles para mí en el futuro. Planeo complementarlo a medida que gane nueva experiencia.   

Resumen


Aquí hay una lista completa de los cursos que logramos tomar en el primer año de estudio en el programa de maestría "Programación y Análisis de Datos" en la Escuela Superior de Economía - San Petersburgo en Ingeniería de Software. 

Ahora la magistratura del HSE de San Petersburgo satisface perfectamente mis necesidades de desarrollo como desarrollador. Me gusta especialmente que tengamos cursos a los que asisten solo 5-6 personas, y en los cuales los maestros prestan mucha atención a cada estudiante y están listos para responder a todos los problemas que surjan. Otra característica importante por la que valoro nuestro programa de maestría es que para mí no hay nada superfluo en él. 

*****

El 30 de abril a las 18:00 en la facultad será el día de puertas abiertas en línea sobre los programas de maestría. ¡Ven!Y si lo lees más tarde (espero que en la bella Rusia del futuro que derrotó al coronavirus), el registro DOD esté disponible en el grupo VK .

All Articles