“Pascal and even more so Basic is definitely not needed”: interviews with coaches in sports programming

    This year VKontakte, with the support of Promsvyazbank, launched the VK Fellowship scholarship program for informatics teachers. Together, we selected 15 teachers from the regions of Russia: the creators of original programming courses, school teachers, directors of advanced education centers, and trainers who prepare students for international programming competitions. They received scholarships from VKontakte and Promsvyazbank and now participate in our outbound schools.

    All teachers have extensive experience and are the authors of their own courses on the basics of programming. In this post, we asked three fellows to answer our questions about teaching programming and computer science in general.

    - First, let's get acquainted.

    Inessa Shuykova:   I work as a director and teacher of computer science at GOAOU Center for support of gifted children "Strategy" of the city of Lipetsk. I teach C ++ and Pascal in grades 6-11.
    Peter Kalinin: I live and work in Nizhny Novgorod. I conduct classes at the Lyceum №40, on the basis of UNN named after Lobachevsky, and also remotely, without reference to a specific educational institution. Basically, in Python, Pascal, C ++. I work with individual guys in Java, C # and more exotic languages. Most of them go to grades 9-11, but some of them already lead from grade 4.
    Sergey Belyaev: I live in Krasnoyarsk. I work as an additional education teacher in the Krasnoyarsk Regional Palace of Pioneers. There are many languages ​​in work - C ++, Pascal, Python, Basic, Java Script, Perl. The age of students is different - usually from 12 to 18 years.

    About teaching programming

    - How to organize programming training in schools?

    Inessa: Every student needs to be given basic skills in using general-purpose software, teaching digital hygiene, safe work on the Internet, and the basics of programming. For children with relevant interest and abilities, add algorithms and data structures. Advanced programming courses should be conducted in the form of special courses. Each student in computer science lessons should be included in the project team for the implementation of the school IT project.

    Peter:I do not consider myself an expert in the mass education of schoolchildren in secondary schools, but I believe that it is necessary to adapt the training to the needs of schoolchildren. Interested students need to be given in-depth knowledge, the rest are sufficiently superficial ideas about programming.

    Sergey: The general program in the framework of the subject of computer science should be the same as it is now: programming is superficial and for educational purposes. More meaningful course - for specialized classes with a physical and mathematical bias. Vocational training is reasonable only within the framework of additional education.

    - The main problems of learning programming in Russia? How to solve them?

    Inessa:Within the framework of general education, a small number of hours is given to informatics (if these are not specialized classes) - it is not the main subject that would receive considerable attention. Hence, the consequence is that computer science teachers are not always professional in this particular subject, and for many students this subject is associated with a less important process implanted by the system.

    The solution could be the introduction of a legal norm allowing to take into account additional education as a discipline of general education. Children enjoy learning in programming courses at additional education centers. The opportunity to set off a course as a result of a general education program will attract the attention of an even greater number of students to mastering programming skills.

    Peter:If you do not take into account the different bureaucratic problems, then, probably, the main one is the very outdated knowledge (or lack thereof) of most teachers.

    Sergey: I think that the problems of teaching computer science are combined with the general problems of education in Russia, so that the teaching profession is not prestigious. And a teacher teaching programming is no exception.

    - Is it worth trying programming programming before school? What form is it worth implementing?

    Inessa: Before school, you need to develop general mathematical skills, an interest in reading, a motivation for knowledge as such. And I don’t want to give children what they are not psychologically ready for yet.

    Peter:I don’t have a clear answer, but I believe that developing games and programming tasks have the right to exist. For example, I bought my three-year-old daughter the game Taxi from Mosigra.

    Sergey: I think it’s early to learn programming before school. It would be nice to first learn how to read, write and read.

    - There is a common opinion that programming today is the same necessary skill as driving license and English. What do you think?

    Inessa: Yes it is! Even if you do not program at work, understanding how programs and information systems are structured will allow you to feel confident in the future digital environment.

    Peter:Strongly disagree. First, rights and language (the latter - slightly less) need 90% of people not only for work, but also for personal life. Programming outside of work is necessary for a relatively small number of people, and in most cases only as a hobby. At work, programming is also not necessary for everyone - in this it is not very different from a driver's license or language.

    Sergey: Of course not, otherwise many would feel uncomfortable without the necessary skill. Programming is a fairly narrow specialty that only a few learn. In English, and especially driving a car, people learn much more often.

    About the features of learning programming languages

    - What are the most complex and interesting programming tasks?

    Inessa: I think it depends primarily on the idea of ​​the task, and not on the topic. In other words, how graceful and beautiful is the idea underlying the task, how much later one can admire the unusual nature of the task or the lightness of the idea that underlay and demanded to go the hard way.

    Peter: The most interesting is the difficult tasks that require an unusual way to look at standard algorithms or standard theory. For example, the task "K" from here.

    Sergei: It is believed that the most complex topics are recursion, data structures (especially segment trees and a Cartesian tree), and graph theory. Of course, in any topic there may be simple tasks. As in any simple topic of the form, “simple mathematics” may not be simple mathematics at all, albeit without programming. Therefore, all this is rather subjective, it cannot be argued that all the tasks of one of the topics are necessarily more difficult than any other. For me personally, the most difficult tasks seem from game theory, in particular, those that use the minimax method.

    - Is it possible to start learning C ++, bypassing Pascal and Basic?

    Inessa: Yes, definitely possible. Confirmation is my experience with children.

    Peter:Specifically, in C ++, you can, but I do not recommend it. I would recommend replacing C ++ with Python. Pascal and already Basic are definitely not needed.

    Sergey: Of course. I've been doing this for 15 years now. If the main goal is to acquaint students with programming elements in a short time, and not to teach programming in a targeted manner, then Python is better suited.

    - In what order do you need to start learning C ++ in order not to get lost in the wilds?

    Inessa: I advise you to start right away with solving the simplest tasks. An example of a good course is Mikhail Gustakashin 's Introduction to C ++ Programming.

    Peter:I believe that in any language, you must first master the basic things that allow you to write simple programs (variables, if, cycles, arrays, strings, real numbers). With them, almost any Olympiad problem can be solved. The rest is as needed.

    Sergei:I personally turn to the language itself only after four lessons aimed at acquaintance with programming with examples of fascinating algorithms - like games and videos from the annual “Hour code” action. Then I introduce the guys to the pros and cons of the profession of a programmer, including my many years of experience. In fact, the chosen programming language for studying is not so fundamental; the order of topics will always be approximately the same. Knowledge of the syntax of the language is not the most important thing; any humanist can master it. The most important thing is the ability to algorithmize and write clear and error-free code.

    - How to write clear C ++ code?

    Inessa: For schoolchildren, the correct naming of variables, style design is important. Clear code is structured code that is readable for other people on your team.

    Peter: As in any language, dividing the code into rational entities, naming variables, etc. But at the school level, almost none of this is necessary, the maximum is to set adequate indents.

    Sergey : This is especially important in the framework of the project, on which a group of programmers is working. Sometimes you have to understand other people's programs, and for this, some agreements must be respected. But in any case, there are general principles that can hardly be substantively described in terms of a single issue. I will highlight only a few:

    • program structure: logical units should be allocated in separate blocks (indents in the text of programs, functions, libraries);
    • the names of variables and functions should speak for themselves, what they contain;
    • Be sure to use comments when describing blocks of algorithms; each function must contain a complete specification of input parameters and return values.

    - How do you feel about using Boost for training purposes?

    Inessa: I do not use it in my work.

    Peter: In principle, positive, but this is not necessary at school.

    Sergey: In real programming, I have nothing against this extension. But I teach children olympiad programming, and there students will not be able to use it, because Boost is not included in the standard set of libraries of any of the standard C ++ compilers. So you have to be content with what is, for example, STL (Standard Template Library).

    - Do you have a successful recipe for preparing students for programming programming contests?

    Inessa:Computer science theory plus the basics of discrete mathematics and mathematical methods of data processing. And also the constant trainings raised to the system.

    Peter: Basic theory, problem solving, understanding of the format of the Olympiad, accurate testing.

    Sergey: I think that it is necessary to invest not only experience, time, but also soul in teaching pupils in programming. Only the teacher who is most interested in the subject is able to interest students. When teaching programming, it is important to select a group of talented students, and within the same secondary educational institution it is very difficult to do this. Therefore, it is more effective to work in institutions of additional education, where it is possible to work with children from different schools

    - is there anything in your program that makes it unique?

    Inessa: The key point in the method itself. I lead a group of children, formed by the level of training and abilities, and not by age. Education is not only a teacher-student model, but also a student-student model. The older ones help the younger ones: they do the analysis of solved problems, check the style of the code of writing programs, assist the teacher. The classroom supports the environment of the children's community - the mood for success, promotion, results. Events of an olympiad character, external workouts are done together, together, with joy.

    Peter:Firstly, classes are conducted completely online, there is the opportunity to engage remotely from anywhere in the world. Secondly, the lack of a calendar plan, each student is engaged at his own pace. Third, attention to testing and finding errors in the code. Fourthly, the free license of materials developed by me.

    Sergey: First, the use of the author's resource "School programmer . " Secondly, the use of copyright printed manuals. Thirdly, all the theoretical material is presented in the presentations to more clearly illustrate the materials of the educational program.

    About self-education

    - Self-study and regular training. How is it better to combine?

    Inessa: Teaching with the teacher according to the classical scheme - it is autumn that is important in order to master the base, build up a level, “get on the wing”. When a child becomes a winner, the winner of serious competitions is the continuation of classical training, the training process, visiting schools, and self-education (distance courses, personal regular training).

    Peter: Combine as, for example, in my course. Schoolchildren study the material on their own, but I personally check the problem solving, plus the guys can always consult with me if something is not clear to them.

    Sergei:That's it, that self-study is best combined with regular training. This allows you to study the subject of programming faster, as a talented teacher can competently direct the student in the right direction, tell him what, where and how.

    - They say that programming should be studied up to a certain age, and this age is less than 30 years. Then the efficiency drops dramatically. How do you feel about such age limits?

    Inessa:Of course, it would be good to learn everything at once and at once, but life changes, knowledge improves, languages ​​develop. Therefore, learning is continuous throughout life. Olympiad programming, which requires speed, psychological concentration, many hours of training, is for the young. Learning programming after 30 years - I see no problems here, if there is motivation and a mathematical way of thinking.

    Sergei:Basically, I agree. But perhaps there are exceptions. After 30 years there are difficulties not only with the study of something, but also with the programming itself. Of course, this happens very smoothly and there is no clear boundary. I used to be able to do programming for 10 hours a day, and now - dismiss. Therefore, I systematically switch from programming to teaching programming: I program less and teach more and more.

    - How do you feel about the numerous courses for programmers that open today? Do not you think that they give too superficial knowledge?

    Inessa:Courses courses discord. In the course selection process, you should always look through the first lectures in order to relate your level to the course level, evaluate the usefulness of knowledge, and so on. Therefore, I believe that prior acquaintance with the course is necessary.

    Peter: I believe that there are sensible courses, and superficial ones. Plus a lot depends on the student.

    Sergey: I see nothing bad in the fact that there are courses that provide only superficial knowledge. Children just need some familiarity with this subject before they sign up for a serious course aimed at teaching professional programming. And there can not be many professional courses: there are simply no such capable children to learn serious programming, this is quite a narrow direction.

    - What was the most difficult thing for you during your own training? What stages can highlight?

    Inessa: The first stage is the primary development, when it seems that everything is new and little understood. The second stage is a deep study of the material, when everything falls into place. At this stage, consultation with colleagues is important, and if possible, the completion of the material being taught. In addition, I consider important the constant repetition in the process of teaching and the motivation to learn new things.

    Sergey: If you remember that it was 1989, when there was no Internet, a home computer and teachers, but only one programmable calculator with instructions, then yes, there were certain difficulties. But I could still master the basic principles of programming. Then I was in the ninth grade. This was the first stage.

    The next stage is training in the framework of the CPC in grades 10-11 on computers without hard drives. But already with the keyboard, the monitor (which was played by a black and white TV) and the teacher. Then I studied Basic and Pascal. Further in the university my possibilities and knowledge in the field of programming have greatly expanded. We studied C ++, Lisp, Prolog and Assembler. From the fifth year I started teaching myself, began to teach Pascal to schoolchildren.

    The next significant stage in my life is connected with my mastering the direction of web programming in website building. This step, perhaps, turned my life upside down and attracted a large number of employers to me, from whom I still fight back :)

    Only in 2003 I became interested in Olympiad programming and switched to teaching this to schoolchildren.

    - What mistakes did you make during your own learning? What can you advise in this regard?

    Inessa: Error in the learning process - an attempt to cover scattered information, a certain amount of poor-quality information. I advise you to use quality courses with good reviews, recommendations from colleagues on them. It is also important to clearly allocate time for learning.

    Sergei:Perhaps my main mistake is the wrong choice of programming tools for creating websites. I still use technology from Microsoft: Windows + IIS + ASP + MSSQL. All developments require not only a license, but also large computational resources. Much better to build on free software. At that time, and still it is still relevant to create programs and develop websites for Unix using Apache + PHP + MYSQL.

    Also popular now: