To enter, you will need to immerse yourself in the atmosphere of training and pass the entrance exam. Read more about the program, exam and cost at code.stepik.org .
In the meantime, teaching assistants and the curator of the programs of the last launch will tell you how the training is organized, who comes to study, how and why the assistants do code reviews during their studies and what they learned from participating in the programs.
How are the programs arranged?
In the CS center there are three online programs based on the Stepik platform: “Algorithms and Effective Computing” , “Mathematics for Developers” and “Development in C ++, Java and Haskell” . Each program consists of two parts. These are courses prepared by experienced teachers and scientists:
- Algorithms and theoretical informatics as part of a program on algorithms.
- Matanalysis, discrete mathematics, linear algebra and probability theory in a mathematics program for developers.
- C ++, Java, and Haskell courses in the online programming language program.
As well as additional activities, for example, a code review, solving theoretical problems for evidence, consultations with assistants and teachers. They are difficult to scale, so training takes place in small groups. Activities help to understand the topic deeper and get high-quality feedback.
Artemy Pestretsov, teaching assistant: “It seems to me that code review is the main distinguishing feature of online languages and algorithms. To find the answer to your question, you can just google. It is hard and long, but possible. But Google won’t do a code review, so it’s very valuable. ”
Each course within the program lasts approximately two months. In the final, students must pass an exam or receive tests in all courses.
Who are our students?
Students of online programs:
- They want to fill in the gaps in math or programming. For example, experienced developers who want to tighten the mathematical base.
- They begin to get acquainted with programming and include the center's programs in their self-educational plan.
- Prepare for admission to a magistracy or CS center.
- Students with other specialized education who decided to radically change direction. For example, chemists or educators.
Artemy Pestretsov: “We had a student, a man in his prime, who worked for an oil and gas company and took a respite from the deadlines because he went on a business trip to the well. It’s cool that people with completely different backgrounds see IT technology and math gaining momentum. These are accomplished people who can live so beautifully, but are trying to learn something new, they want to develop in other areas. ”
Mikhail Veselov, vmatm : “Everyone has a different level: someone does not fully understand the basic things in the language, but someone comes as a Java or Python programmer, and you can maintain a conversation like“ how to do better ”. The main thing is to focus not on the best of the best, but on an intermediate level so that the course is useful to everyone. ”
How is the training organized?
Several tools help organizers and educators build the process.
Correspondence in the mail. For important and formal announcements.
Chat with teachers and organizers. Children often begin to help each other in the chat before the teacher or assistant sees the question.
YouTrack. For questions and assignments to teachers and assistants. Here you can ask private questions and discuss a one-on-one solution: of course, students cannot share solutions with each other.
The organizers communicate with students and try to quickly solve problems. Kristina Smolnikova: “If several students ask the same thing, then this is a common problem and we need to tell everyone about it.”
How assistants help
Code review
Students of programs pass their homework, and assistants check how their code is clean and optimal. This is how the guys organized the review last time.
Artemy Pestretsov tried to answer questions within 12 hours, because students passed the tasks at different times. I read the code, found problems from the point of view of standards, general programming practices, got to the bottom of the details, asked for optimization, suggested what variable names should be fixed.
“Everyone writes code differently, people have different experiences. There were students who took and wrote the first time. I like everything, it works great and the test takes 25 seconds, because everything is perfect. And it happens that you sit and try to understand for an hour why a person wrote such a code. This is an absolutely adequate educational process. When you conduct a code review in your life, something like this happens. ”
Mikhail tried to build a process independently for each student, so that there was no situation "I have already explained this to someone, ask him." He gave a detailed first comment on the problem, then the student asked clarifying questions and updated the solution. By successive approximation, they received a result that suited both the mentor and the student in quality.
“In the first one or two weeks of training, people write not very accurate code. They need to carefully remind about the standards that exist in both Python and Java, talk about automatic code analyzers for obvious errors and shortcomings, so as not to be distracted later and so that the whole semester does not get a person out of the fact that he has incorrect transfers or the comma is not there. ”
Tips for those who want to conduct training code review
1. If a student has written a problem code, do not ask to redo it again. It is important that he understands what the problem is with this particular code.
2. Do not lie to students. It’s better to honestly say “I don’t know” if there is no way to sort out the issue. Artemy: “I had a student who dug much deeper than the program, went down to the level of iron, then went up again and he and I constantly rode on this elevator of abstractions. I had to remember some things, but it was very hard to formulate on the fly. ”
3. It is not necessary to focus on the fact that the student is a beginner: when a person does something for the first time, he takes criticism more seriously, does not know at all how it is usually done, and what he does and what doesn't. It’s better to carefully speak only about the code, and not about the student’s minuses.
4. It’s great to learn how to answer questions in an “educational” manner. The task is to answer not directly, but to make the student really understand and come to the answer himself. Artemy: “In 99% of cases, I could immediately answer the student’s question, but I couldn’t often take and write the answer right away, because I had to weigh a lot. He wrote fifty lines, erased, wrote again. I am responsible for the reputation of the courses and the knowledge of students, and this is not an easy job. A very cool feeling arises when a student says: “Oh, I have an insight!” And I also like this: “He has an insight!”
5. It is important to be careful and not to criticize strongly. Inspire, but not too much, so that the student does not think that he is doing everything chic. Here you have to learn how to competently manage the level of your emotions.
6. It is useful to collect general comments and errors of the same type in order to save time. You can record the first such message, and then simply copy and add details in response to others on the same question.
7. Due to the difference in knowledge and experience, some things seem obvious, so at first the assistants do not decode them in the comments for students. It helps to simply re-read the written and add what seemed to be commonplace. Michael: “It seems to me that the longer I help with the verification of solutions, the more clear I am to new-year students from the very beginning. I would now read the first comments on the code and say: “It should have been more accurate, in more detail.”
Teaching and assisting is awesome
We asked the children to tell us what useful experience they had while conducting a code review and talking with students.
Artemy: “The main thing that I learned is patience, teaching. This is a completely new skill; I am mastering completely new, non-technical areas for myself. I think that teaching will help a lot when I speak at conferences, talk with colleagues or present projects at a rally. I advise everyone to try it! ”
Michael: “This experience helped a little more tolerant of the fact that someone writes the code differently from me. Especially when you are just starting to look at a solution. I took courses in Python and Java myself and solved similar problems differently. He called variables and functions differently. And the decisions of the guys are all a little different, because in programming there is no standard solution. And here we need some patience, not to say: “It was necessary to do just that!” This helped later at work to discuss the pros and cons of specific solutions, and not the pros and cons of the fact that I did not. ”
Learn more about online programs and alumni reviews.