Organizers and Teaching Assistants about CS Center Online Programs

On November 14, the CS Center launches the online programs "Algorithms and Efficient Computing", "Mathematics for Developers" and "Development in C++, Java and Haskell" for the third time. They are designed to help you immerse yourself in a new field and lay the foundation for learning and working in IT.

To enroll, you will need to immerse yourself in the atmosphere of learning and pass an entrance exam. Read more about the program, exam and cost at code.stepik.org.

In the meantime, teaching assistants and the program curator 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 participation in the programs.

Organizers and Teaching Assistants about CS Center Online Programs

How the programs are arranged

The CS Center has three online programs based on the Stepik platform: "Algorithms and Efficient Computing", "Mathematics for Developers" и "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 a part of the program on algorithms.
  • Mathematical analysis, discrete mathematics, linear algebra and probability theory in the program for mathematics for developers.
  • Courses in C++, Java and Haskell in the online program in programming languages.

As well as additional activities, such as code reviews, 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 programs in languages ​​and algorithms. To find the answer to your question, you can simply google. It's 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 credits for all courses.

Organizers and Teaching Assistants about CS Center Online Programs

Who are our students

Students of online programs:

  • Want to fill in gaps in math or programming. For example, experienced developers who want to improve their mathematical base.
  • They begin to get acquainted with programming and include the programs of the center in their self-education plan.
  • Prepare for admission to a master's program or a CS center.
  • Students with a different profile education who decided to radically change their direction. For example, chemists or teachers.

Artemy Pestretsov: “We had a student, a man in his prime, who worked in an oil and gas company and took a delay in deadlines because he went on a business trip to a well. It's cool that people with completely different backgrounds see that IT technologies and mathematics have gained momentum. These are accomplished people who can live so well, but they are trying to learn something new, they want to develop in other areas.”

Mikhail Veselov, vmatm: “Everyone’s level is different: someone doesn’t fully understand the basic things in the language, and someone comes as a Java or Python programmer, and you can have a conversation with him in the spirit of “how to do it better.” The main thing is not to focus on the best of the best, but on the average level, so that the course is useful to everyone.”

How training is organized

Several tools help organizers and educators build the process.

Correspondence in the mail. For important and formal announcements.
Chat with teachers and organizers. The guys often start helping each other in the chat even before the teacher or assistant sees the question.
YouTrack. For questions and delivery of tasks to teachers and assistants. Here you can ask private questions and discuss the solution one-on-one: of course, students cannot share solutions with each other.

The organizers communicate with students and try to quickly resolve problems. Kristina Smolnikova: “If several students ask the same thing, then this is a common problem and everyone should be told about it.”

How assistants help

Code review

Students of the programs hand in their homework, and assistants check how clean and optimal their code is. This is how the guys organized the review last time.

Artemy Pestretsov tried to answer questions within 12 hours, because students handed in tasks at different times. I read the code, found problems in terms of standards, general programming practices, got to the bottom of the details, asked for optimization, suggested which variable names needed to be corrected.

“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 it takes 25 seconds to check because everything is perfect. And it happens that you sit and for an hour you try to understand why a person wrote such code. This is an absolutely adequate educational process. When you do a code review in real life, that’s pretty much what happens.”

Mikhail tried to build the process independently for each student, so that there was no situation “I 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 obtained a result that suited both the mentor and the student in terms of quality.

“In the first one or two weeks of training, people write not very accurate code. They need to be carefully reminded of the standards that exist in both Python and Java, talk about automatic code analyzers for obvious errors and shortcomings, so that later they won’t be distracted by this and so that the whole semester doesn’t bother a person because their transfers are done incorrectly or the comma is not there.

Tips for those who want to conduct training code reviews

1. If a student has written problematic code, do not ask to redo it again. It is important that he understands what the problem of this particular code is.

2. Don't lie to students. It’s better to honestly say “I don’t know” if there is no way to understand the issue. Artemy: “I had a student who dug much deeper than the program, descended to the level of iron, then rose again, and we constantly rode this elevator of abstractions. I had to remember some things, but it was very difficult to formulate right off the bat. ”

3. It is not necessary to focus on the fact that a student is a beginner: when a person does something for the first time, he takes criticism more seriously, does not know at all how they usually do it, and what he succeeds and what does not. It is better to speak carefully only about the code, and not about the cons of the student.

4. It's great to learn how to answer questions in an "educational" manner. The task is not to answer directly, but to make sure that the student really understands and comes to the answer himself. Artemy: “In 99% of cases, I could immediately answer a student’s question, but I could not often immediately take and write an answer, because there is a lot to weigh. Wrote fifty lines, erased, wrote again. I am responsible for the reputation of the courses and the knowledge of the students, and this is not an easy job. A very cool feeling arises when a student says: “Oh, I have an insight!” And I'm like, "He's got an epiphany!"

5. It is important to be considerate and not to criticize too much. Inspire, but not too much so that the student does not think that he is doing everything great. Here you have to learn how to properly manage the level of your emotions.

6. It is useful to collect general remarks and similar errors in order to save time. You can record the first such message, and then simply copy and add details in response to others with the same question.

7. Due to the difference in knowledge and experience, some things seem obvious, so at first the assistants do not decipher them in the comments for students. It helps to simply reread what was written and add what seemed banal. Mikhail: “It seems to me that the longer I help with the verification of solutions, the clearer I am to the students of the new course from the very beginning. I would now read the first comments to the code and say: “I should have been more careful, in more detail.”

Teaching and assisting is great

We asked the guys to share what useful experience they got while doing code reviews and talking to students.

Artemy: “The main thing I learned is such teaching patience. This is a completely new skill, I'm learning completely new, non-technical areas for myself. I think teaching will help a lot when I'm speaking at conferences, talking to colleagues, or presenting projects at a rally. I advise everyone to try!”

Mikhail: “This experience helped me to be a little more tolerant of the fact that someone writes code differently from me. Especially when you are just starting to look at the solution. I took courses in Python and Java myself and solved similar problems differently. Named variables and functions differently. And the solutions of the guys are all a little different, because in programming there is no reference solution. And here you need some patience, so as not to say: “It was only necessary to do this!” It helped later at work to discuss the pros and cons of specific solutions, and not the pros and cons of the fact that I didn’t do it. ”

More about online programs and alumni reviews

Source: habr.com

Add a comment