How freshmen of the St. Petersburg HSE wrote a torrent client, a code analyzer, a photo editor and not only for the semester

Learning programming by studying 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 a theme 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.


Briefly: each team was 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 in more detail:

About the organizers

We are Natasha Murashkina, Sasha Orlova and Olya Lupulyak – senior students “Applied Mathematics and Computer Science»In 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 ask for help, we lacked feedback, and we did not have any final speeches. This year, we decided to take into account what we ourselves lacked, to use the experience gained during internships in companies, and to 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.

Project demo video 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 “Colonialists”.

Training

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 the contacts of its mentor.

Mentor – This is an employee of an IT company or a 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 make a work plan for the next week. The mentors included interns and employees of JetBrains, Yandex, VKontakte, Huawei, Google, Delightex, VeeRoute and other companies, teachers 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.

Profiles consisted of questions about the emotional state, how useful the conversation with the mentor was, what we had in the past week and how much time we 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.

Workshops

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.

Workshop presentation structure

  • Title slide
  • Introduction to the field
  • 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 from 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, in the blog of the St. Petersburg HSE on Habré already instruction on preparing short reports from the dean of our faculty Alexander Vladimirovich Omelchenko.

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

How was each participant evaluated?

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. Mentors’ opinions were also taken into account at the end of the semester, when the commission gave marks for 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.

Summary

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

Project Protection 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: one, two, three.

Mentors, judging by the feedback, enjoyed the work.

Like us 🙂 So next year we plan to continue.

Plans for the future

  • Compose short trainings or checklists for mentors. Many mentors have 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 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 the quality of feedback at workshops. We plan to engage mentors and create a list of blitz questions on the content that we and the 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 the golden time when you need to learn to write tests by the spinal cord.

And +100 notes, which we carefully kept during the semester.

If you would like to be a mentor for freshmen next year on a volunteer basis, fill out form or write to us in the Telegram (@murfel) We will be glad!