Yellow bike with red wheels or another course of algorithms from 1C

    Creating a bicycle is a thankless task ... However, the 1C company has huge successful experience in this regard. Another financial accounting program that has become virtually standard Russian accounting software, another programming language, which is now used by forty percent of Russian programmers ...
    Here is another training course.

    What for?

    The IT industry is booming. And against the backdrop of a demographic pit, this means - a terrible personnel shortage is approaching.
    There are not enough students, it becomes popular to hire children immediately after school. That's just the knowledge of students in programming is not enough.
    The company "1C" set itself the task - in each yard on a parachute tower programmer club for students. Judging by the information on , there are already such clubs in 133 cities. For these clubs 1C and is developing a line of IT-shny courses. Among them there are not only specific, corporate, for teaching schoolchildren 1C language, but also courses in "ordinary" applied programming, and even in system administration. In this case, 1C is actually a pioneer.
    But why another course for teaching schoolchildren in algorithmic programming, when there are a great many manuals and well-developed approaches, that is, the actual teaching system?
    First of all, apparently, this is an old programming tradition: why use the finished, when you can write yourself. Moreover, all systems have their own shortcomings and can be overcome in their “product”.
    We must say right away that, despite the numerous differences from the “classics,” this course remains “classic”: the topics studied, the technical organization of checking solutions using an automatic system, the division of classes into theory and practice, all this is very similar to other courses on algorithms. And, despite the fact that we will mainly talk about the differences of the 1C course from others, they have a lot in common.
    What, first of all, do you want from the new course, which is especially lacking in existing developments?

    Quick independent start

    First of all, this is perhaps the possibility of battery life from the very beginning. The course was not conceived as a self-instruction manual, but in practice it is necessary that the child, when learning algorithmic programming, can move independently in some cases. In this regard, beginners have serious problems. It is difficult for even an adult to realize and get used to the fact that it is necessary to write programs that are completely devoid of the user interface, precisely observe the format of the input and output data and the like.
    In the first lesson, there is a detailed story about the difference between algorithmic (olympiad) programming and project programming. The interaction with the checking system is described in detail and an example of a working program is given. Now, after testing twice, it became clear that even this degree of detail is not enough for most children. We will try to supplement the course with a very simple, visual introductory part, with which we will begin teaching the course at the Summer School this year.


    Another significant problem is the lack of visibility. After becoming familiar with GUI programming, it’s quite difficult to convince students of the need to use paper and pencil to develop algorithms. In any case, when studying algorithmic programming, the main work takes place “in the mind”.
    There are still some tricks to improve visibility. (We will not talk about algorithm visualizers here - this is a great help for those who have been studying algorithms for a long time, but not for beginners who have serious difficulties with coding.)
    It is very advisable to introduce the debugger to those who study the algorithms. The debugger built into Eclipse is simple and intuitive. The second lesson of the first module of the course is proposed to be devoted specifically to working with the debugger and in the next lesson to constantly use it, shifting most of the work to the computer. In this lesson, it is proposed to solve special "vice versa problems", where the text of the solution program has already been given. True, the solution contains errors and it is proposed to pick up the input data, so that the solution "fails" - it worked incorrectly. Schoolchildren usually like these tasks very much.
    Another idea, the benefit of which we “discovered” already in the process of teaching, sounds rather strange. This is a problem solving teacher on the projector. The usual teaching scheme for other 1C courses, when the children are guided by the actions of the teacher and actually repeat after him, and the teacher tells and writes the program project at the same time, seems completely inapplicable in teaching algorithmic programming. It really is. The main task of teaching algorithmic programming is to teach a student to think independently. And here it’s hard to imagine a teaching scheme other than the usual one: a theoretical lecture, then an independent problem-solving. And that is how this course is taught. However, especially at the initial stage of training, it is more interesting to solve problems with children as if “in parallel”. At the same time, children who are faster in learning actually solve "their tasks in their own way," but at the same time they observe what is happening on the projector with interest, correct errors that occur and offer their approaches to solving. This approach helps slower students not to get stuck on technical details for a long time, and thanks to this, they will definitely get something. And a situation of success is very important to maintain interest. And here the third, perhaps the main problem of teaching algorithms arises - complexity. And a situation of success is very important to maintain interest. And here the third, perhaps the main problem of teaching algorithms arises - complexity. And a situation of success is very important to maintain interest. And here the third, perhaps the main problem of teaching algorithms arises - complexity.


    Algorithmic programming is really very difficult. This fact fully explains that when admitting to universities and to work for leading IT companies, it is the Olympiads who prefer it. The logic is simple. If a person has mastered the construction of complex algorithms, it will not be difficult for him to study the capabilities of a particular library.
    High complexity basically implies that Olympiad programming is not for everyone. But in 1C they consider it precisely as an acquaintance, an element of the general programmer culture, and not as a "sport".
    First of all, difficulties in understanding arise due to lack of understanding.
    It often happens that the only way to understand the solution to a problem is to analyze the source code of the author’s solution program. Firstly, it is very difficult. Of course, an experienced olympiad can easily see, say, a fragment of a program that sorts an array.
    But it is difficult for a beginner to do this. The phrase in the natural language “further sort the array” is much easier to read.
    A very important feature of this course is that fairly detailed analyzes of all tasks are given. And for the first tasks of each lesson, parsing in natural language is accompanied by code fragments. That is, it is actually a sequence of decisions. “Fast” students usually don’t read it before the solution, but they are also strongly advised to read the analysis for all problems, because for many problems several solutions are proposed, some of which are simple to implement but not trivial.
    Another type of understatement is phrases such as “provide evidence to the reader.” Often the "reader" does not succeed. In the best case, this information is ignored, in the worst there is severe irritation, he cannot calm down until the problem is solved, and there is no way to solve it.
    On the other hand, when teaching, it is necessary to provide the student with the opportunity to think independently.
    The course of algorithmic programming 1C solves this problem as follows. The manual is actually a workbook. In the theoretical section, questions are constantly asked, tasks are offered on adding missing commands to the source texts, filling in tables, drawing graphs of certain types and the like. It is assumed that in the lesson in the process of explaining the theory, the student actively uses the printed manual, making notes in it with a pencil. However, to all tasks and questions there are answers in a special section of the tips or in the Directory.
    For convenience and to increase the speed of development of algorithms, not only in the printed version, but also in electronic form, the Reference is attached - working fragments of programs that implement standard algorithms. You can copy from the Directory. This also does not leave students “alone” in insoluble situations. It may seem that this approach involves mindless copying of solutions, but this is not so. The algorithms in the Directory are given only in a standard form and in any case they need to be adapted to a specific condition.

    How is it arranged?

    Technically, the course is a methodological complex: a printed manual and a Web part.
    Thematic course is fairly standard.
    First, the first module studies simple basic algorithms such as determining the simplicity of a number and sorting an array.
    Further in the second and third modules there follows an introduction to more complex algorithms: recursion, graph algorithms, and dynamic programming problems.
    The fourth module completes the course, in which data structures and algorithms on them are mainly considered that allow solving problems faster.
    Throughout the course, and especially in the fourth module, features built into the programming language are considered that allow you to implement algorithms clearly and concisely.
    Of particular note is the language used in the course. There is an opinion that the teaching of algorithms can be done in any programming language. This is true, but with a slight caveat. Some languages ​​are more suitable for implementing algorithms, others less. Indeed, in programming tasks it is important not only to come up with, but also to correctly code the solution.
    Now Python is definitely leading in this regard - it has a lot of interesting mechanisms for developing algorithms built into the syntax for developing algorithms and a large functional library.
    One can argue about the appropriateness of using the Java language for solving olympiad problems, but in any case, Java also has, like Python, a large library of classes that can be used to encode algorithms. This library of collections - built-in data structures - and rich functionality, for example, work with strings.
    Before Python came to Olympiad programming, despite the fact that even a minimal Java program contains about ten lines of code and involves familiarity with the object-oriented approach, many serious Olympiadists preferred Java.
    Almost all 1C courses for students are built on the basis of this language. By studying its application in courses and in algorithmic and applied programming, they get a universal tool for solving any programmatic problems.


    The company "1C" offers another course of algorithmic programming.
    It certainly has its drawbacks, but its advantages are also visible: it is an attempt to introduce students of any level to algorithms. It's too early to talk about success. They exist, but very little time has passed (in fact, one year), and it cannot be said for sure that places at the Olympiads are the result of studying this course. But the fact that almost no one quit training after the first or second module suggests that it is interesting and understandable.
    The online part of the course is presented openly on the website in the author’s courses section under the name 1C Firm. “Algorithms. Olympiad programming in Java for students . " All materials on the first module in pdf format are also uploaded there.

    The author of the article: Ilyin Vladimir Vladimirovich (, teacher, School 179 of Moscow Institute of Public Relations

    Also popular now: