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

 3r3501. 3r3-31. This year VKontakte, with the support of Promsvyazbank, launched a scholarship program 3r-32r. VK Fellowship
for teachers of computer science. Together, we selected 15 teachers from the regions of Russia: the creators of original programming courses, school teachers, directors of advanced education centers, trainers who prepare students for international programming competitions. They received scholarships from VKontakte and Promsvyazbank and now participate in our outbound schools.
 3r3501.
 3r3501. “Pascal and even more so Basic is definitely not needed”: interviews with coaches in sports programming  3r3501.
 3r3501. 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.
 3r3501. from here.
 3r3501.
 3r3501. Sergey 3r3489. : 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.
 3r3501.
 3r3501. [b] - Is it possible to start learning C ++, bypassing Pascal and Basic?

 3r3501.
 3r3501. Inessa: Yes, definitely possible. Confirmation is my experience with children.
 3r3501.
 3r3501. Peter: 3r3489. 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.
 3r3501.
 3r3501. [b] Sergey: 3r3489. 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.
 3r3501.
 3r3501. [b] - In what order do you need to start learning C ++ in order not to get lost in the wilds?

 3r3501.
 3r3501. Inessa: I advise you to start right away with solving the simplest tasks. An example of a good course is “Introduction to C ++ Programming” Mikhail Gustakashina.
 3r3501.
 3r3501. Peter: 3r3489. 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 already as needed.
 3r3501.
 3r3501. [b] Sergey: 3r3489. I personally turn to the language itself only after four lessons aimed at acquaintance with programming with examples of fascinating algorithms - by the type of games and videos from the annual “Code Hour” 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 important; 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.
 3r3501.
 3r3501. [b] - How to write clear C ++ code?

 3r3501.
 3r3501. Inessa: For schoolchildren, the correct naming of variables and style design are important. Clear code is a structured code that is readable for other people on your team.
 3r3501.
 3r3501. Peter: 3r3489. As in any language, dividing the code into reasonable entities, naming variables, etc. But at the school level, almost none of this is necessary, the maximum is to set adequate indents.
 3r3501.
 3r3501. [b] Sergey 3r3489. A: This is especially important in the framework of a project a group of programmers is working on. 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:
 3r3501.
 3r3501.
 3r3501.
program structure: logical units should be allocated in separate blocks (indents in the text of programs, functions, libraries);
 3r3501.
 3r3501.
the names of variables and functions should speak for themselves, what they contain;
 3r3501.
 3r3501.
Be sure to use comments when describing blocks of algorithms; each function must contain a complete specification of input parameters and return values.
 3r3501.
 3r3501.
 3r3501. [b] - How do you feel about using Boost for training purposes?

 3r3501.
 3r3501. Inessa: I do not use it in work 3r3486.  3r3501.
 3r3501. Peter: 3r3489. In principle, positive, but at school it is not necessary.
 3r3501.
 3r3501. [b] Sergey: 3r3489. 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).
 3r3501.
 3r3501. [b] - Do you have a successful recipe for preparing students for programming programming contests?

 3r3501.
 3r3501. Inessa: Computer science theory plus the basics of discrete mathematics and mathematical methods of data processing. And still the constant trainings erected in system.
 3r3501.
 3r3501. Peter: 3r3489. Basic theory, problem solving, understanding of the format of the Olympiad, accurate testing.
 3r3501.
 3r3501. [b] Sergey: 3r3489. I believe that not only experience, time, but also soul should be invested 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 make it. Therefore, it is more effective to work in institutions of additional education, where it is possible to work with children from different schools 3r3-3486.  3r3501.
 3r3501. [b] - Is there anything in your program that makes it unique?

 3r3501.
 3r3501. 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 program writing code, 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.
 3r3501.
 3r3501. Peter: 3r3489. 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. Thirdly, attention to testing and finding errors in the code. Fourthly, the free license of materials developed by me.
 3r3501.
 3r3501. [b] Sergey: 3r3489. First, the use of the author's resource "Programmer's School" . Secondly, the use of copyright printed manuals. Thirdly, all the theoretical material is presented in presentations to more clearly illustrate the materials of the educational program.
 3r3501.
 3r3501.  3r3501.
 3r3501.

On self-education


 3r3501. [b] - Self-study and regular training. How is it better to combine?

 3r3501.
 3r3501. Inessa: Teaching with a teacher according to the classical scheme is for a younger age. When a child grows up, classical education is replaced by self-education (the study of sources, distance courses).
 3r3501.
 3r3501. Peter: 3r3489. 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.
 3r3501.
 3r3501. [b] Sergey: 3r3489. That's it, that self-learning 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.
 3r3501.
 3r3501. [b] - They say that programming is worth studying 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 restrictions?

 3r3501.
 3r3501. 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 - this is for the young. Learning programming after 30 years - I see no problems here, if there is motivation and a mathematical way of thinking.
 3r3501.
 3r3501. Sergey: 3r3489. 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.
 3r3501.
 3r3501. [b] - How do you feel about the numerous courses for programmers that open today? Do not you think that they give too superficial knowledge?

 3r3501.
 3r3501. 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.
 3r3501.
 3r3501. Peter: 3r3489. I believe that there are sensible courses, and superficial ones. Plus a lot depends on the student.
 3r3501.
 3r3501. [b] Sergey: 3r3489. 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 not enough capable children to study serious programming, this is a rather narrow direction.
 3r3501.
 3r3501. [b] - What was the most difficult thing for you during your own training? What stages can highlight?

 3r3501.
 3r3501. 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.
 3r3501.
 3r3501. Sergey: 3r3489. If we recall that it was 198? 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.
 3r3501.
 3r3501. 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.
 3r3501.
 3r3501. 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 :)
 3r3501.
 3r3501. Only in 2003 I became interested in Olympiad programming and switched to teaching students this.
 3r3501.
 3r3501. [b] - What mistakes did you make during your own learning? What can you advise in this regard?

 3r3501.
 3r3501. Inessa: An error in the learning process is an attempt to capture 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.
 3r3501.
 3r3501. [b] Sergey: 3r3489. 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 computing 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.
3r3501. 3r3501. 3r3501. 3r3494. ! function (e) {function t (t, n) {if (! (n in e)) {for (var r, a = e.document, i = a.scripts, o = i.length; o-- ;) if (-1! == i[o].src.indexOf (t)) {r = i[o]; break} if (! r) {r = a.createElement ("script"), r.type = "text /jаvascript", r.async =! ? r.defer =! ? r.src = t, r.charset = "UTF-8"; var d = function () {var e = a.getElementsByTagName ("script")[0]; e. ): d ()}}} t ("//mediator.mail.ru/script/2820404/"""_mediator") () ();
3r3501.
3r3501. 3r3501. 3r3501. 3r3501.
+ 0 -

Add comment