Ce qui est enseigné au Master en génie logiciel à Saint-Pétersbourg HSE

Beaucoup ne comprennent pas ce qu'ils peuvent enseigner dans la maîtrise en génie logiciel et pensent qu'après le premier cycle, vous devez aller travailler et tout apprendre là-bas. Cela vaut-il la peine d'aller à un programme de maîtrise en SE? C'est une question difficile, et dans cet article, nous n'y répondrons pas, mais nous vous dirons quels diplômés de solides bacheliers sont enseignés dans le nôtre.



Je m'appelle Olya Kunyavskaya, je suis en première année du programme de maîtrise en programmation et analyse de données à la Higher School of Economics de Saint-Pétersbourg sur la voie du génie logiciel. Dans la série précédente, j'ai déjà parlé de mon cheminement vers le HSE et de la motivation avec laquelle je suis venu ici.

Comment est notre étude


Ce qui est conceptuellement enseigné


Seuls les diplômés de solides bacheliers en informatique sont acceptés pour notre programme de maîtrise, nous pensons donc que nous avons déjà reçu toutes les connaissances de base nécessaires en mathématiques, en algorithmes et en programmation dans les études de premier cycle. L'objectif de la filière génie logiciel est de donner aux étudiants une idée des différentes directions fondamentales du développement. Par conséquent, les cours pour nous sont sélectionnés dans différents domaines de connaissances, d'une manière ou d'une autre liés au développement.

La capacité d'influencer votre apprentissage


Notre programme est nouveau et nous pouvons influencer le déroulement des cours. L'ensemble des disciplines change maintenant d'année en année, et notre programme est déjà assez différent de celui de nos collègues un an plus tôt.

Nous pouvons exprimer des souhaits, quels cours nous voulons suivre (de préférence avec une indication spécifique de qui lit ce cours et où), et l'administration essaiera de se mettre d'accord. Notre opinion affecte également comment et qui lira les cours l'année prochaine. À la fin de chaque semestre, nous remplissons des questionnaires, puis le conservateur discute des résultats avec nous et conseille la meilleure façon de changer le cours et s'il vaut la peine de le laisser pour l'année suivante. Cette rétroaction est importante pour l'élaboration du programme, car de nombreux cours sont enseignés pour la première fois. 

Fonctions d'apprentissage


Parmi les choses inhabituelles spécifiques au HSE, les études sont réparties par modules, plutôt que par semestres, comme dans d'autres universités. Un module dure deux à trois mois, et en un an nous avons quatre modules de formation. En règle générale, dans chaque module, nous abordons environ trois sujets. 

Certains sujets durent un semestre, certains un module. Certaines matières sont en lecture seule pour nous et pour les étudiants de 2ème année de notre sous-direction (puis de quatre à six personnes sont présentes dans les classes). Nous prenons quelques sujets à l'école d'analyse de données Yandex, et une partie des cours avec des enfants d'autres régions. 

Nous avions à la fois des cours théoriques et assez appliqués, ainsi que des cours liés au développement des compétences générales. 

Que nous apprend-on


L'objectif de la filière Génie Logiciel est de nous apporter une expérience dans différents domaines liés au développement. Je ne suis pas sûr de pouvoir décrire la situation dans son ensemble, je vais donc simplement vous parler des cours qui nous ont été enseignés cette année: ce qui s'est passé pour chacun d'eux et quelles impressions j'ai eues.

Algorithmes de gestion des données


Cours théorique sur les algorithmes liés aux bases de données. Le cours a duré un module, trois paires par semaine. On nous a parlé des algorithmes de traitement des transactions dans les bases de données distribuées. Par exemple, sur les critères d'exactitude des calendriers d'exécution des transactions, les protocoles de contrôle des accès concurrents, la récupération de la base de données après une chute.

Nous avons eu deux conférences et un séminaire par semaine. À chaque séminaire, trois personnes ont préparé des rapports pendant 20 minutes sur l'un des articles précédemment préparés. Nous n'étions que sept sur le parcours, il a donc fallu préparer un rapport toutes les deux semaines, ce qui est souvent suffisant. Dans le même temps, les rapports préparés ont toujours été traités positivement. 

Le principal avantage de ce cours pour moi n'était pas lié au matériel principal. La compétence clé que j'ai améliorée est la capacité de préparer des rapports scientifiques en anglais. 

Le cours a été lu par Boris Novikov dans son intégralité en anglais. Malgré le fait que tous les étudiants étaient russophones, les cours étaient dispensés en anglais, les questions auraient dû être posées en anglais et des rapports devraient également être préparés en anglais, respectivement. Dans ma vie, il me semble constamment que je ne connais pas assez bien l'anglais et que je dois donc me cacher et me taire, mais l'une des règles du cours était "Tout le monde peut dire des choses arbitrairement stupides et arbitrairement analphabètes", donc une atmosphère très positive s'est créée.

Après ce cours, je pensais, premièrement, que je pouvais dire longtemps sans problèmes quelques pensées non triviales en anglais, et deuxièmement, j'ai acquis une certaine habileté à isoler les informations clés des articles scientifiques.  

Infographie


Le cours a été conçu pour un semestre et était principalement consacré au rendu dans Unity. Il a été lu par Mikhail Panin , un technologue de Playneta.gg . Il y avait beaucoup de tâches pratiques, principalement consacrées à l'écriture de shaders et à la génération de maillages. 

Pendant que je suivais ce cours, j'ai eu une expansion de la conscience en termes de perception visuelle des objets. La mission finale était la génération du cloud. Et pendant que je le faisais, j'ai réalisé qu'en fait, je n'ai jamais vraiment regardé les nuages ​​et je me suis demandé à quoi ils ressemblaient. Je n'ai pas pu valider si j'avais réussi à générer un beau ciel, donc la tâche m'a pris beaucoup de temps et au final je ne l'ai pas passé à la note maximale. Je génère une sorte de nuage, il me semble que c'est un nuage normal, je l'envoie à l'enseignant et j'obtiens immédiatement la réponse: "Eh bien, ici il fait sombre, il doit faire sombre non pas ici, mais en dessous, mais cet endroit ne ressemble pas du tout à un nuage" . Je pense avoir envoyé environ 20 versions différentes des nuages.


Maintenant je vais travailler, regarde le ciel, vois un nuage, colle immédiatement et pense: "Hmm ... Et pourquoi, fait intéressant, le nuage est-il sombre au-dessus et en dessous, au contraire, lumineux?" Je comprends alors que c'est l'aube et que la source de lumière est en dessous. 


Devoirs dans lesquels il était nécessaire de mettre en œuvre un modèle diffus et réfléchissant et quelque chose entre les deux.

Après un cours d'infographie, je regarde maintenant beaucoup les nuages. Et aussi sur des murs de briques et des objets de spécularités différentes. 

Protection contre les attaques réseau


Le cours était en lecture seule pour notre sous-direction, il y avait six étudiants au total. Nous avons appris à lever le réseau, à configurer et à charger Apache et nginx, à détecter les vulnérabilités et à nous défendre contre les attaques.

Le cours était complètement pratique et consistait principalement en réponses de l'enseignant à nos questions et travaux de laboratoire, auxquels nous avons reçu des instructions détaillées sur ce qu'il fallait faire. La principale chose que j'ai compris pendant ce cours est que ce n'est pas du tout le domaine que je veux aborder. Chaque fois que vous vous asseyez pour décider du laboratoire, il semble au début que tout est extrêmement clair. Ensuite, de nombreux pièges sont découverts, par exemple, des incohérences dans les versions du programme, des limites inattendues sur le nombre de connexions ouvertes, ou il s'avère soudainement qu'il n'y a pas assez de configurations quelque part. De plus, tous ceux qui suivaient le cours avaient des problèmes à différents endroits et, sans l'aide d'un enseignant, ils ne pouvaient souvent pas comprendre ce qui se passait.

C'était simple sur le sujet, quand tout se passait comme il se doit, et cela devenait très difficile si quelque chose tournait mal.

Algèbre à champ fini et théorie du codage


Le cours est construit de manière très interactive. Des conférences et des pratiques ont été organisées pour seulement cinq personnes et il y avait beaucoup de communication. Lors de la conférence, la transition vers la pensée suivante ne s'est produite que lorsque toutes les personnes présentes ont compris la précédente. Nous avons plutôt discuté des objets réels, plutôt que des idées et des concepts abstraits, car cela, selon mes souvenirs, s'est produit lors de cours de mathématiques dans les études de premier cycle. Lors des conférences, on nous a d'abord donné des exemples de nouveaux objets, nous les avons examinés, les avons tordus dans nos mains, avons compris comment nous pouvions travailler avec eux et avons trouvé des modèles. Et seulement après que nous ayons été inspirés par un nouvel objet, le professeur a commencé à formuler et à prouver les théorèmes. 

Comme nous étions cinq, pendant l'entraînement, tout le monde est parvenu à résoudre des problèmes au conseil d'administration. Les tâches étaient très pratiques: par exemple, construire un champ fini, déterminer des éléments inverses, crypter et décrypter quelque chose. Et donc la connaissance était beaucoup plus vivante.

Un exemple de tâche: il y a un champ fini suffisamment grand et vous devez en calculer beaucoup: ordres des éléments, inverses, classes cyclotomiques et autre chose. Dès le début, vous ne savez pas tout compter et vous pensez de la manière la plus simple. Après plusieurs itérations, vous remarquez que vous pouvez compter un ordre de grandeur plus rapidement et vous commencez à utiliser certaines propriétés dans le calcul. Vous avez vous-même compris comment fonctionne telle ou telle propriété et pourquoi elle fonctionne, et vous l'utilisez pour cette raison, et non parce que l'un des théorèmes dit que cela devrait être fait. 

Il me semble qu'il n'y a vraiment pas assez de tels éléments où l'intuition est simplement développée pour travailler avec l'un ou l'autre objet. Dommage que le cours n'ait duré qu'un seul module. 

Développement de jeu


Un cours d'introduction au développement de jeux a été dispensé avec l'aide de Playkot , et a été dispensé pour la première fois: pour nous et en général. Il a été formé par plusieurs personnes différentes qui représentent l'industrie du jeu.


Le cours était divisé en parties consacrées à divers aspects du développement de jeux: animation, physique, IA, aspects avancés du rendu et de l'optimisation, réseau. En outre, des conférences de synthèse ont été organisées dans des domaines connexes (conception de jeux, analyse dans les jeux, interaction avec les utilisateurs et art). La personne qui s'en occupe a parlé de chaque domaine. Par exemple, une série de conférences sur l'Unité a été donnée par Anton Yakovlev . Il travaille en tant que chef de file en physique chez Unity, crée des jeux au nom de son équipe PointOmega Games et donne une variété de conférences. On nous a expliqué comment créer une animation dans Unity, ajouter un contrôle sur les joueurs ou créer des robots.

C'est le cas quand il y a plus d'enseignants dans le cours que d'élèves. Nous ne sommes que cinq et comme tâche pour tout le cours, nous faisons un petit jeu avec interaction réseau, physique et plusieurs bots. Voyons ce que nous obtenons à la fin :) 

C ++


Je voulais vraiment écouter ce cours particulier. Au premier cycle, nous avions un cours annuel de C ++, mais c'était en 2014. Depuis lors, la norme et les fonctionnalités de la langue ont déjà changé. Je développe en C ++ et je connais ce langage dans une certaine mesure, mais mes connaissances deviennent lentement obsolètes et je souhaite le mettre à jour. 

Ce cours est la deuxième partie du cours C ++, et il va de pair pour nous et pour les étudiants de Computer Science Center. Il dure un semestre, lu par Valera Lesin et des conférenciers invités qui connaissent bien des domaines spécifiques. On nous parle de toutes sortes de puces sympas apparues dans le 20ème standard, c'est-à-dire quelques mois avant le début du cours. Par exemple, sur les modules, les concepts ou les coroutines. Après cela, en pratique, nous résolvons des problèmes sur chaque sujet, et nous avons la possibilité de jouer avec le nouveau concept de la langue. 

La théorie des jeux


Ce cours a été dispensé aux étudiants de première année de deux masters de notre faculté: une trentaine de personnes. Il y avait beaucoup d'enseignants, ils étaient des employés du Laboratoire international de théorie des jeux et de prise de décision à Saint-Pétersbourg HSE. Le cours était dispensé simultanément en russe et en anglais: certains professeurs étrangers ne parlaient pas russe et enseignaient en anglais, certains parlaient russe, mais ils écrivaient en anglais.

Du fait que les professeurs changeaient tout le temps, certaines conférences étaient très cool et intéressantes, et sur certaines je me suis endormie. Et je n'avais catégoriquement pas assez de pratique. Il y avait un test simple et deux devoirs, et il s'est avéré que pour le test, il suffisait de passer deux de ces trois tâches. J'ai donc jeté le deuxième devoir au milieu et je ne l'ai pas terminé. Elle est entrée dans la ligne des tâches non urgentes et facultatives.

Cours trop peu exigeant, à mon avis.

gestion IT


Le cours sur la gestion informatique a duré un module et a été lu par Ilya Andreevich Pshenichny: directrice par intérim du développement des affaires chez Playkot . Le cours a été suivi par des étudiants de premier cycle de deux programmes: le nôtre et le programme «Systèmes d'information et interaction homme-machine».   

Les cours étaient principalement des cours magistraux et le cours nous en disait un peu plus sur les différents aspects de la gestion spécifiques à l'industrie informatique. Par exemple, quelles sont les approches de développement, les étapes de développement et à quelles étapes ce qui peut être utilisé, comment gérer les risques, quelles sont les principales fonctions d'un leader, comment motiver une équipe, comment embaucher et licencier des employés, et à la toute fin du cours, il y avait quelques recommandations pour l'auto-développement.

Les conférences étaient très faciles et intéressantes à écouter. Habituellement, l'histoire de chacun des domaines de la gestion était activement appuyée par des exemples tirés de l'expérience personnelle et des explications sur ce qui fonctionnait bien et dans quels cas. 

La tâche pratique de ce cours n'en était qu'une. On nous a remis une demande et nous avons dû faire un plan de développement et un budget. Le travail devait être fait en deux semaines, puis il a été vérifié, et avec tous ceux qui voulaient écouter les commentaires ou réparer quelque chose, l'enseignant a personnellement appelé et parlé. Après cela, une autre semaine a été accordée pour correction. 

Les conférences ont abordé séparément le sujet de la façon de travailler avec l'équipe et ce qui affecte la motivation des employés. Par exemple, on nous a dit que l'une des tâches importantes d'un leader est de donner une rétroaction compétente aux subordonnés. 

À cet égard, je veux raconter comment Ilya Andreyevich m'a fait part de mes commentaires sur ma mission finale. Au départ, j'ai obtenu 7 sur 10 pour la tâche (sur une échelle de cinq points, c'est 4). En général, c'est moyen, mais pas une catastrophe. Je me demandais si je devais corriger: il y a d'autres choses. Pendant l'appel, Ilya Andreevich m'a naturellement dit ce qui n'allait pas avec le travail: les salaires des employés n'étaient pas du marché, les impôts n'étaient pas pris en compte et le test de l'application était généralement perdu quelque part du plan. En fin de compte, il a ajouté qu'il s'attend définitivement à ce que je corrige cette tâche. Je me demandais d'où venait cette confiance. Il a répondu: "Parce que vous êtes obligatoire, diligent et que vous recherchez la perfection." Et je veux répondre à ces caractéristiques, donc je suis allé le réparer, sans aucun doute! 

Il m'a semblé que c'est un très bel exemple de la façon dont vous pouvez donner une rétroaction négative de telle manière qu'une personne a une forte motivation pour fixer le travail. Et oui, pour cette tâche, j'en ai un total de 10.    

Théorie et pratique de la concurrence


Nous suivons ce cours à distance à la Yandex School of Data Analysis, dirigé par Roman Lipovsky. Le cours est dédié aux systèmes compétitifs. Il nous explique comment fonctionne le modèle de mémoire, comment fonctionnent les coroutines, les fibres, ainsi que le dispositif des différentes primitives de synchronisation et comment travailler avec les systèmes asynchrones. 

Le cours est éloigné et de nombreux étudiants y participent, de sorte que la communication individuelle avec l'enseignant ne fonctionne pas. Mais les pratiques et les devoirs sont très réfléchis. 

Les devoirs sont vérifiés automatiquement sur votre ordinateur à l'intérieur du conteneur Docker. Vous pouvez vider les modifications de Clion vers Docker, puis démarrer le test avec une simple commande. Dans le même temps, les tests ont été assez bien effectués, ce qui est très difficile pour un cours sur une programmation compétitive. Si je comprends bien, le fait est qu'au lieu de primitives standard, nous utilisons nos propres implémentations d'enseignants qui peuvent vérifier l'exactitude du travail. Par exemple, changez de flux d'une certaine manière ou effectuez un réveil parasite.

Les devoirs sont également très bien faits. Un ensemble de tâches de différents niveaux de difficulté apparaît régulièrement. De plus, généralement, l'ensemble de l'infrastructure est déjà mise en œuvre pour nous et nous n'avons pas besoin de passer du temps dessus. Il suffit de réaliser directement l'essence pour laquelle la tâche a été confiée. Il y avait des tâches pour comprendre comment travailler de manière asynchrone en C ++, et implémenter leurs coroutines et implémenter leurs primitives. 

MAGUEGO


En plus des cours de spécialité, au cours des études à la magistrature, nous devons suivre un petit cours de la taille d'un module qui n'est pas lié à la direction que nous avons choisie. Dans le HSE de Saint-Pétersbourg, un tel cours se cache sous le nom de code MAGOLEGO. Nous avons eu le choix entre une vingtaine de disciplines liées à différents domaines: économie, droit, psychologie, gestion, etc. Au lieu de cela, vous pouvez suivre le cours en ligne de notre choix, si vous l'acceptez d'abord. 

J'ai suivi un cours à plein temps intitulé Psychologie de la réussite professionnelle et j'étais plus que satisfait de mon choix. On nous a dit quels conflits sont susceptibles de se produire au travail, comment réagir de manière constructive aux commentaires, quels sont les dysfonctionnements professionnels et ce qui peut être fait avec l'épuisement émotionnel. De plus, ils ont expliqué comment vous pouvez comprendre quelque chose sur une personne par le style de son discours et de son écriture, et à quoi ils peuvent prêter attention lors des entretiens. 

Il me semble que je peux consacrer un article séparé aux réflexions intéressantes de ce cours. Le cours a été lu par Elena Igorevna Kudryavtseva, c'était très facile et intéressant à écouter. Une bonne structure narrative, une voix bien définie avec un accent clair sur l'intonation de lieux intéressants et avec beaucoup d'exemples expliquant ce que cela signifie. 

En tant que tâche de reporting, nous devions créer notre propre portefeuille. Le portfolio est similaire à un CV, mais la différence entre eux est que chaque projet / lieu de travail / réalisation a une page séparée avec une histoire. Il y a une opinion qu'il est très pratique d'avoir un tel père lors d'un entretien pour un emploi, car il est beaucoup plus facile de parler de vous et il est plus facile pour un enquêteur de comprendre ce que vous pouvez faire. 

J'ai aimé qu'après avoir terminé le cours, j'avais encore un artefact sous la forme d'un portfolio, qui pourrait m'être utile à l'avenir. Je prévois de le compléter à mesure que j'acquiers une nouvelle expérience.   

Sommaire


Voici une liste complète des cours que nous avons réussi à suivre en première année d'études au programme de master «Programmation et analyse des données» à l'École supérieure d'économie de Saint-Pétersbourg en génie logiciel. 

Maintenant, la magistrature du HSE de Saint-Pétersbourg répond parfaitement à mes besoins de développement en tant que développeur. J'aime particulièrement que nous ayons des cours qui ne sont suivis que par 5-6 personnes, et dans lesquels les enseignants accordent beaucoup d'attention à chaque élève et sont prêts à répondre à tous les problèmes qui se posent. Une autre caractéristique importante pour laquelle j'apprécie notre programme de master est qu'il n'y a rien de superflu pour moi. 

*****

Le 30 avril à 18h00 à la faculté sera la journée portes ouvertes en ligne sur les programmes de maîtrise. Viens!Et si vous le lisez plus tard (j'espère dans la belle Russie du futur qui a vaincu le coronavirus), l'enregistrement DOD est disponible dans le groupe VK .

All Articles