Learning to program, learning only theory, is the same as learning to play the piano by listening to lectures on playing the piano. Freshmen of “Applied Mathematics and Computer Science” at the St. Petersburg HSE begin to study C++ in the first semester. In addition to their homework, they have been writing semester team projects in C++ since February. The guys come up with the topic on their own, from games and game engines to their own code analyzer.

Under cat details of the inner kitchen: a story about how the work on the projects was arranged.

ITKarma picture

Brief: Each team has been assigned mentors from among current developers or senior students with experience in IT companies. Freshmen spoke weekly about the progress and difficulties that they had to face in the questionnaire and during the call with the mentor. In order for the teams to practice speaking publicly (and at the same time to establish deadlines for which they need to prepare), we organized two pre-defenses. At the final defense, all teams successfully submitted projects, the average student score of 9.0 on a 10-point scale.

Now more.

About the organizers

We are Natasha Murashkina, Sasha Orlova, and Olya Lupulyak, senior students of Applied Mathematics and Computer Science "at the St. Petersburg HSE. We were engaged in the organization of projects under the guidance of the curator of the direction and lecturer of the C++ course Egor Suvorov.

During our first year studies, we also worked on projects, but then the system was different, and not everything went smoothly with us. We did not know who to turn to for help, we lacked feedback, and we did not have final presentations. This year, we decided to take into account what we ourselves lacked, use the experience gained during internships in companies, and organize projects in a different way.

About projects

The goal of projects in the first year is to give students a try at industrial programming, as well as show the features of long-term work on the project and development in teams.

Training in programming begins with an annual course in C++, therefore the project had to be written in this language. Students were not required to develop a product that was ready for use in the real world, or to conduct research containing scientific novelty. However, the project had to be large enough and complex so that it would have enough work for a semester for three team members.

Demo video of the project Fivaproljo (multiplayer platformer)

By the end of the semester, it was necessary to get at least the MVP of the project, but many teams managed to add more functionality, and some even wrote tests and designed a page on GitHub with a description and instructions for starting up. Examples: Modeling and visualization of dynamic systems , Code Analyzer - UB-tester tool , The computer version of the game" Colonizers " .


At the beginning of the semester, students were divided into 21 teams of 3 people. Each team independently selected a project topic and coordinated it with the organizers, after which it received contacts from its mentor.

Mentor is an IT company employee or senior student with experience in industrial development. Mentors helped with the distribution of tasks and the solution of technical problems. They called up weekly with students to discuss progress and draw up a work plan for the next week.The mentors included trainees and employees of JetBrains, Yandex, VKontakte, Huawei, Google, Delightex, VeeRoute and other companies, teachers of the Summer Computer School (LKS) , as well as students of our faculty, the Moscow HSE campus and the CT department of ITMO University.

As an experiment, we even invited a meta-mentor (mentor for a mentor): an experienced Google employee instructed our undergraduate in the mentoring team.

Work during the semester

Each week, students had to phone the mentor and fill out a questionnaire on the work done.

Questionnaires consisted of questions about the emotional state, how useful the conversation with the mentor was, what did you do last week and how much time was spent on it. Here our calculation was simple: every week we need to do something to write about it, because it is psychologically difficult not to write anything. So students were less likely to postpone work on the project until the end of the semester and try to do everything in the last week.

We followed the line “emotional state” and tried to write to those who were sad. If nothing was done for several weeks in a row, we contacted the team and clarified the reasons, helped to formulate and solve problems.


During the semester, students trained twice to speak to the public and answer questions during workshops. Each team presented the work in 7 minutes, showed a short demo video and answered 7 more questions from the audience.

The idea of ​​rehearsing is not new, and in our case we were inspired by workshops on public speaking, in which Natasha participated during an internship at Google.

For the first workshop, we prepared recommendations on the structure of the report and design: we advised to compare the product being developed with analogues, to compare technologies, describe the tasks of each team member, talk about the current state of the project and plans for the future.

Presentation structure for workshops

  • Title slide
  • Introduction to the area
  • Brief project description
  • Comparison with analogues
  • Technology Comparison
  • Breakdown into subtasks for each participant (on a slide per participant)
    • Description of the subtask, solution, conclusions
  • Description of the current state of the project (what has been done since the beginning)
  • Description of progress from previous presentation
  • Plans until the end of development
  • You can make a demo video no longer than 30 seconds

By the way, the blog of the St. Petersburg HSE on Habr already has instructions on the preparation of short reports from the dean of our faculty Alexander Vladimirovich Omelchenko.

Demo video of the project " Modeling and visualization of dynamic systems "

How did you evaluate the contribution of each participant

Here, student commits on GitHub and mentor profiles helped us.

By the first workshop and defense, we asked students to upload the project code on GitHub. The number of lines of code is, of course, an unfair metric, and you can’t judge only by it, but we used it as the first filter. After - read the content.

Mentors, like students, filled out questionnaires weekly and answered questions about how the meeting went and what the team members managed to do. If the feedback from the mentor was not very good, we contacted the guys and carefully tried to find out how they were doing. The opinions of the mentors were also taken into account at the end of the semester, when the commission rated the work.

The final grade of each student for the semester consisted of three parts:

  • 30% - work during the semester. For a good assessment, you need to submit the profiles on time.
  • 35% - assessment of the mentor. A good grade requires a mentor to rate progress.
  • 35% - assessment of the commission on defense. For a good assessment, you need to get something in the end.


Project defenses were held in June by Zoom. The transition to online played into our hands, since we were able to invite all mentors, even those who do not live in St. Petersburg. After the defenses, we held a contest for the audience’s prize, and the winners will receive prizes after returning to St. Petersburg.

ITKarma picture

Project security screenshot TorrentX

We are pleased with the results of the guys. Three students (out of 61) received a rating of “satisfactory”, all the rest - “good” and “excellent”. The average score is 9.0 on a 10-point scale.

Some projects exceeded our expectations. At first, we thought that it would take about 5 hours a week for each person to work on the project, but many people worked much more.

More than half of the teams bravely agreed to publish their final presentations and short demo video with protections. Just in case, we recall that the projects are educational and it was even allowed to invent a bicycle with square wheels. In senior courses, projects are already more serious: times , two , three .

Mentors, judging by the feedback, enjoyed working.

Like us :) So we plan to continue next year.

Future Plans

  • Create short training sessions or checklists for mentors. Many mentors had managerial or teaching experience this year, but it will be great if we can establish a system and help those who do not have such experience.

  • Find English-speaking mentors. Such a request came from students, and next year we will try to find several English-speaking mentors through friends and graduates working in foreign companies.

  • Improve team-mentor matching, perhaps introduce interviews between the team and the mentor and small test tasks. Take into account the wishes of mentors to lead a more prepared (requires more knowledge) or less experienced - but no less diligent! - team (requires the best management skills).

  • Improve feedback quality in workshops. We plan to engage mentors and create a list of blitz questions on the content that we and students will be able to ask the speaking team.

  • Give feedback to mentors and students, even if everything is going well so that it does not seem that the profiles are sent to the void.

  • Force test writing. Tests were found in units of projects, but the first course is a golden time when you need to learn to write tests by the spinal cord.

And +100 notes that we carefully kept during the semester.

If you would like to be a first-year student mentor next year on a volunteer basis, fill out form or write to us on Telegram ( @murfel ). We will be happy! .