O que é ensinado no Mestrado em Engenharia de Software da St. Petersburg HSE

Muitos não entendem o que podem ensinar no mestrado em Engenharia de Software e acreditam que, após a graduação, você precisa trabalhar e aprender tudo ali. Vale a pena ir para um programa de mestrado em SE? Essa é uma pergunta difícil e, neste artigo, não vamos respondê-la, mas mostraremos o que os graduados de bacharéis fortes são ensinados nos nossos.



Meu nome é Olya Kunyavskaya, estou no meu primeiro ano do programa de mestrado em Programação e Análise de Dados na Escola Superior de Economia - São Petersburgo, na área de Engenharia de Software. Na série anterior, eu já falei sobre o meu caminho para o SMS e a motivação com a qual vim aqui.

Como está o nosso estudo


O que é ensinado conceitualmente


Somente graduados de bacharel em TI são aceitos no programa de mestrado, portanto, acredita-se que já tenhamos recebido todo o conhecimento básico necessário em matemática, algoritmos e programação nos estudos de graduação. O objetivo da trilha de Engenharia de Software é dar aos alunos uma idéia das diferentes direções fundamentais do desenvolvimento. Portanto, os cursos para nós são selecionados a partir de diferentes áreas do conhecimento, de uma forma ou de outra, relacionadas ao desenvolvimento.

A capacidade de influenciar seu aprendizado


Nosso programa é novo e podemos influenciar quais serão os cursos. O conjunto de disciplinas agora está mudando de ano para ano, e nosso programa já é bem diferente do programa de nossos colegas um ano mais velho.

Podemos expressar desejos, quais cursos queremos participar (de preferência com uma indicação específica de quem lê esse curso e onde), e a administração tentará concordar. Nossa opinião também afeta como e quem lerá os cursos no próximo ano. No final de cada semestre, preenchemos questionários e, em seguida, o curador discute os resultados conosco e aconselha a melhor forma de mudar o curso e se vale a pena deixá-lo para o próximo ano. Esse feedback é importante para o desenvolvimento do currículo, pois muitos cursos são ministrados pela primeira vez. 

Recursos de aprendizagem


Das coisas incomuns que são específicas para a SMS, os estudos são divididos por módulos, em vez de semestres, como em outras universidades. Um módulo é de dois a três meses e, em um ano, temos quatro módulos de treinamento. Como regra, em cada módulo, abordamos cerca de três assuntos. 

Algumas disciplinas duram um semestre, outras, um módulo. Algumas das matérias são lidas apenas para nós e para os alunos do 2º ano da nossa sub-direção (então, de quatro a seis pessoas estão presentes nas aulas). Tomamos algumas disciplinas na Escola de Análise de Dados Yandex e parte dos cursos junto com crianças de outras áreas. 

Tínhamos cursos teóricos e de aplicação justa e cursos relacionados ao desenvolvimento de soft skills. 

O que somos ensinados


O objetivo da trilha de Engenharia de Software é nos dar alguma experiência de várias áreas relacionadas ao desenvolvimento. Não tenho certeza de que posso descrever o quadro geral, portanto, vou apenas falar sobre os cursos que foram ministrados para nós este ano: o que aconteceu em cada um deles e as impressões que tive.

Algoritmos de gerenciamento de dados


Curso teórico sobre algoritmos relacionados a bancos de dados. O curso durou um módulo, três pares por semana. Fomos informados sobre algoritmos de processamento de transações em bancos de dados distribuídos. Por exemplo, sobre os critérios para a correção dos agendamentos de execução da transação, protocolos de controle de simultaneidade, recuperação do banco de dados após uma queda.

Tínhamos duas palestras e um seminário semanalmente. Em cada seminário, três pessoas prepararam relatórios por 20 minutos em um dos artigos previamente preparados. Havia apenas sete de nós no curso, por isso era necessário preparar um relatório a cada duas semanas, o que é suficiente. Ao mesmo tempo, os relatórios preparados sempre foram tratados positivamente. 

O principal benefício deste curso para mim não estava relacionado ao material principal. A principal habilidade que aprimorei é a capacidade de preparar relatórios científicos em inglês. 

O curso foi lido por Boris Novikov na íntegra em inglês. Apesar de todos os alunos serem falantes de russo, as palestras foram ministradas em inglês, as perguntas deveriam ter sido feitas em inglês e os relatórios também devem ser preparados em inglês, respectivamente. Na minha vida, parece-me constantemente que eu não sei inglês o suficiente e, portanto, devo me esconder e ficar calado, mas uma das regras do curso era "Qualquer um pode dizer coisas estúpidas e analfabetas arbitrariamente", portanto, uma atmosfera muito positiva foi criada.

Após este curso, em primeiro lugar, acreditei que poderia contar alguns pensamentos não triviais em inglês por um longo tempo sem problemas e, em segundo lugar, adquiri alguma habilidade em isolar informações importantes de artigos científicos.  

Computação gráfica


O curso foi projetado para um semestre e foi dedicado principalmente à renderização no Unity. Foi lida por Mikhail Panin , um técnico em Playneta.gg . Havia muitas tarefas práticas, principalmente dedicadas a escrever shaders e gerar malhas. 

Enquanto eu fazia esse curso, tive uma expansão da consciência em termos de percepção visual dos objetos. A tarefa final foi a geração de nuvens. E enquanto fazia isso, percebi que, na verdade, nunca realmente olhei para as nuvens e me perguntei como elas seriam. Como não consegui validar se consegui gerar um céu bonito, a tarefa levou muito tempo e, no final, não a passei para a nota máxima. Estou gerando algum tipo de nuvem, parece-me que é uma nuvem normal, estou enviando para o professor - e recebo imediatamente a resposta: "Bem, aqui está escuro, não deve estar escuro aqui, mas embaixo, mas este lugar não parece uma nuvem" . Acho que enviei cerca de 20 versões diferentes das nuvens.


Agora vou trabalhar, olho o céu, vejo uma nuvem, imediatamente fico e penso: "Hmm ... Por que, curiosamente, a nuvem está escura acima e abaixo, pelo contrário, luz?" Então eu entendo que é o amanhecer e a fonte de luz está abaixo. 


Lição de casa em que era necessário implementar um modelo difuso e reflexivo e algo no meio.

Após um curso de computação gráfica, agora olho bastante as nuvens. E também em paredes de tijolos e objetos de diferentes especularidades. 

Proteção contra ataques de rede


O curso foi lido apenas para a nossa sub-direção, havia seis alunos no total. Aprendemos a elevar a rede, configurar e carregar o Apache e o nginx, detectar vulnerabilidades e se defender contra ataques.

O curso foi totalmente prático e consistiu principalmente nas respostas do professor às nossas perguntas e trabalho de laboratório, ao qual recebemos instruções detalhadas sobre o que fazer. A principal coisa que entendi durante este curso é que essa não é a área com a qual quero lidar. Cada vez que você se senta para decidir o laboratório, a princípio parece que tudo está extremamente claro. Então, muitas armadilhas são descobertas, por exemplo, inconsistências nas versões do programa, limites inesperados no número de conexões abertas ou, de repente, acontece que em algum lugar não há configurações suficientes. Além disso, todos os participantes do curso tiveram problemas em lugares diferentes e, sem a ajuda de um professor, muitas vezes não conseguiam descobrir qual era o problema.

Era simples sobre o assunto, quando tudo estava indo como deveria, e ficava muito difícil se algo desse errado de repente.

Álgebra de campo finito e teoria de codificação


O curso é construído de maneira muito interativa. Palestras e práticas foram realizadas para apenas cinco pessoas, e houve muita comunicação. Na palestra, a transição para o próximo pensamento ocorreu apenas quando todos os presentes entenderam o anterior. Antes discutimos objetos reais, em vez de idéias e conceitos abstratos, pois, de acordo com minhas lembranças, isso aconteceu em cursos de matemática na graduação. Nas palestras, recebemos exemplos de alguns novos objetos, examinamos, torcemos em nossas mãos, entendemos como poderíamos trabalhar com eles e encontramos alguns padrões. E somente depois que fomos inspirados por um novo objeto, o professor começou a formular e provar os teoremas. 

Como éramos cinco, durante o treino todos conseguiram resolver problemas no quadro. As tarefas eram muito práticas: por exemplo, construir um campo finito, determinar elementos inversos, criptografar e descriptografar alguma coisa. E assim o conhecimento era muito mais animado.

Um exemplo de uma tarefa: existe um campo finito suficientemente grande e você precisa calcular muito sobre isso: ordens de elementos, classes inversas, ciclotômicas e outras coisas. Desde o início, você não sabe contar tudo e pensa da maneira mais simples. Após várias iterações, você percebe que pode contar uma ordem de magnitude mais rapidamente e começa a usar algumas propriedades no cálculo. Você mesmo entendeu como essa ou aquela propriedade funciona e por que ela funciona, e a usa por esse motivo, e não porque um dos teoremas diz que isso deve ser feito. 

Parece-me que realmente não existem itens suficientes onde a intuição é simplesmente desenvolvida para trabalhar com um ou outro objeto. É uma pena que o curso tenha durado apenas um módulo. 

Desenvolvimento de jogos


Um curso introdutório de desenvolvimento de jogos foi ministrado com a assistência da Playkot e foi ministrado pela primeira vez: para nós e em geral. Ele foi ensinado por várias pessoas diferentes que representam a indústria de jogos.


O curso foi dividido em partes dedicadas a vários aspectos do desenvolvimento de jogos: animação, física, IA, aspectos avançados de renderização e otimização, rede. Além disso, houve palestras gerais sobre áreas relacionadas (design de jogos, análises em jogos, interação do usuário e arte). A pessoa que lida com isso falou sobre cada área. Por exemplo, uma série de palestras sobre a Unidade foi dada por Anton Yakovlev . Ele trabalha como líder de física na Unity, faz jogos em nome de sua equipe PointOmega Games e dá uma variedade de palestras. Fomos informados sobre como fazer animação no Unity, adicionar controle sobre os jogadores ou criar bots.

Este é o caso quando há mais professores no curso do que alunos. Somos apenas cinco e, como tarefa de todo o curso, fazemos um pequeno jogo com interação em rede, física e vários bots. Vamos ver o que temos no final :) 

C ++


Eu realmente queria ouvir esse curso em particular. Na graduação, realizamos um curso anual de C ++, no entanto, foi em 2014. Desde então, o padrão e os recursos do idioma já foram alterados. Estou desenvolvendo em C ++ e conheço essa linguagem até certo ponto, mas meu conhecimento está lentamente se tornando obsoleto e quero atualizá-la. 

Este curso é a segunda parte do curso C ++, e combina conosco e com os alunos do Centro de Ciência da Computação. Dura um semestre, lido por Valera Lesin e palestrantes convidados, versados ​​em áreas específicas. Somos informados sobre todos os tipos de chips que apareceram no 20º padrão, ou seja, alguns meses antes do início do curso. Por exemplo, sobre módulos, conceitos ou corotinas. Depois disso, na prática, resolvemos problemas em cada tópico e temos a oportunidade de brincar com o novo conceito de linguagem. 

Teoria do jogo


Este curso foi ministrado para alunos do primeiro ano de dois mestrados em nossa faculdade: para cerca de trinta pessoas. Havia muitos professores, eles eram funcionários do Laboratório Internacional de Teoria dos Jogos e Tomada de Decisão em St. Petersburg HSE. O curso foi ministrado simultaneamente em russo e inglês: alguns professores estrangeiros não falavam russo e lecionavam em inglês, outros podiam falar russo, mas escreviam em inglês.

Devido ao fato de os professores mudarem o tempo todo, algumas palestras foram muito legais e interessantes, e em algumas eu adormeci. E eu categoricamente não tinha prática suficiente. Havia um teste simples e dois trabalhos de casa, e, para o teste, foi suficiente para passar em duas dessas três tarefas. Então joguei a segunda lição de casa no meio e não a terminei. Ela passou para a linha de tarefas não urgentes e opcionais.

Curso muito pouco exigente, na minha opinião.

Gerenciamento de TI


O curso sobre gerenciamento de TI durou um módulo e foi lido por Ilya Andreevich Pshenichny: diretora interina de desenvolvimento de negócios da Playkot . O curso contou com a graduação de dois programas: o nosso e o programa "Sistemas de Informação e Interação Humano-Computador".   

As aulas eram principalmente de palestras, e o curso nos contou um pouco sobre os vários aspectos do gerenciamento específicos para o setor de TI. Por exemplo, quais são as abordagens de desenvolvimento, estágios de desenvolvimento e em que estágios o que pode ser usado, como gerenciar riscos, quais são as principais funções de um líder, como motivar uma equipe, como contratar e demitir funcionários e, no final do curso, houve algumas recomendações para o autodesenvolvimento.

As palestras foram muito fáceis e interessantes de ouvir. Geralmente, a história sobre cada uma das áreas da administração era apoiada ativamente por exemplos de experiências pessoais e explicações sobre o que exatamente funcionava bem e em que casos. 

A tarefa prática deste curso foi apenas uma. Recebemos uma solicitação e tivemos que fazer um plano e orçamento de desenvolvimento. O trabalho precisava ser realizado em duas semanas, depois era verificado e, com todos que desejavam ouvir o feedback ou consertar alguma coisa, o professor telefonava e conversava pessoalmente. Depois disso, outra semana foi dada para correção. 

As palestras abordaram separadamente o tópico de como trabalhar com a equipe e o que afeta a motivação dos funcionários. Por exemplo, nos disseram que uma das tarefas importantes de um líder é dar feedback competente aos subordinados. 

A esse respeito, quero contar uma história de como Ilya Andreyevich me deu feedback sobre minha tarefa final. Inicialmente, obtive 7 de 10 para a tarefa (em uma escala de cinco pontos, este é 4). Em geral, isso é mais ou menos, mas não um desastre. Eu duvidava que eu devesse corrigir: há outras coisas. Durante a ligação, Ilya Andreevich naturalmente me disse o que havia de errado com o trabalho: os salários dos funcionários não eram de mercado, os impostos não eram levados em conta e o teste do aplicativo geralmente se perdia em algum lugar do plano. No final, ele acrescentou que definitivamente espera que eu corrija esta tarefa. Eu me perguntava de onde vinha essa confiança. Ele respondeu: "Porque você é obrigatório, diligente e luta pela perfeição". E eu quero conhecer essas características, então fui consertar, sem nenhuma dúvida! 

Pareceu-me que este é um exemplo muito bonito de como você pode dar um feedback negativo de tal maneira que uma pessoa tem uma onda de motivação para consertar o trabalho. E sim, para esta tarefa, tenho um total de 10.    

Teoria e Prática da Concorrência


Realizamos este curso remotamente na Escola de Análise de Dados Yandex, ministrada por Roman Lipovsky. O curso é dedicado a sistemas competitivos. Ele nos diz como o modelo de memória funciona, como as corotinas, as fibras funcionam e também sobre o dispositivo de diferentes primitivas de sincronização e sobre o trabalho com sistemas assíncronos. 

O curso é remoto e muitos alunos participam, portanto, a comunicação individual com o professor não funciona. Mas as práticas e trabalhos de casa são muito pensados. 

A lição de casa é verificada automaticamente no seu computador dentro do contêiner do Docker. Você pode liberar as alterações de Clion para Docker e iniciar o teste com um comando simples. Ao mesmo tempo, os testes foram realizados muito bem, e isso é muito difícil para um curso de programação competitiva. Se bem entendi, o fato é que, em vez de primitivas padrão, usamos nossas próprias implementações de professores que podem verificar a correção do trabalho. Por exemplo, o switch flui de uma certa maneira ou faz uma ativação espúria.

A lição de casa também é feita muito bem. Um conjunto de tarefas de vários níveis de dificuldade aparece regularmente. Além disso, geralmente toda a infraestrutura já está implementada para nós e não precisamos gastar tempo com ela. Só é necessário perceber diretamente a essência para a qual a tarefa foi dada. Havia tarefas para descobrir como trabalhar de forma assíncrona em C ++, implementar suas corotinas e implementar suas primitivas. 

MAGUEGO


Além dos cursos da especialidade, durante o curso de magistratura, devemos fazer um pequeno curso do tamanho de um módulo que não esteja relacionado à nossa direção escolhida. No HSE de São Petersburgo, esse curso está oculto sob o nome de código MAGOLEGO. Nos foi dada uma escolha de cerca de 20 disciplinas relacionadas a diferentes áreas: economia, direito, psicologia, administração e assim por diante. Em vez disso, você pode fazer o curso on-line de nossa escolha, se você concordar primeiro. 

Fiz um curso em período integral chamado Psicologia do Sucesso Profissional e fiquei mais do que satisfeito com minha escolha. Fomos informados sobre quais conflitos provavelmente ocorrem no trabalho, como responder construtivamente ao feedback, quais são as disfunções profissionais e o que pode ser feito com o desgaste emocional. Além disso, eles contaram como alguém pode entender algo sobre uma pessoa pelo estilo de seu discurso e escrita, e no que pode prestar atenção durante as entrevistas. 

Parece-me que posso dedicar um artigo separado a pensamentos interessantes deste curso. O curso foi lido por Elena Igorevna Kudryavtseva, foi muito fácil e interessante de ouvir. Uma boa estrutura narrativa, uma voz bem definida, com clara ênfase na entonação de lugares interessantes e com muitos exemplos explicando o que se entende. 

Como tarefa de geração de relatórios, precisávamos criar nosso próprio portfólio. O portfólio é semelhante a um currículo, mas a diferença entre eles é que cada projeto / local de trabalho / conquista tem uma página separada com uma história. Há uma opinião de que é muito conveniente ter um pai assim durante a entrevista para um emprego, porque é muito mais fácil falar sobre você e é mais fácil para um entrevistador entender o que você pode fazer. 

Gostei que, após concluir o curso, ainda tivesse algum artefato na forma de um portfólio, o que pode ser útil para mim no futuro. Pretendo complementá-lo à medida que ganho novas experiências.   

Sumário


Aqui está uma lista completa dos cursos que conseguimos fazer no primeiro ano de estudo no programa de mestrado “Programação e Análise de Dados” da Escola Superior de Economia - São Petersburgo em Engenharia de Software. 

Agora, a magistratura do HSE de São Petersburgo satisfaz perfeitamente minhas necessidades de desenvolvimento como desenvolvedor. Gosto especialmente do fato de termos cursos de apenas 5 a 6 pessoas, nos quais os professores dão muita atenção a cada aluno e estão prontos para responder a todos os problemas que surgirem. Outra característica importante pela qual valorizo ​​o programa de mestrado é que, para mim, não há nada de supérfluo. 

*****

30 de abril às 18:00 no corpo docente será o Open House Day on-line sobre os programas de mestrado. Venha!E se você ler mais tarde (espero na bela Rússia do futuro que derrotou o coronavírus), o registro do DOD estará disponível no grupo VK .

All Articles