Creating a bicycle is a thankless task ... However, 1C has a great experience in this regard. Another financial accounting program that has actually become standard software in Russian accounting, is another programming language that forty percent of Russian programmers use now ...
Here is another training course.
What for?
In the IT industry - rapid growth. And against the background of the demographic pit, this means a terrible personnel shortage is approaching.
There are not enough students, it is becoming popular to hire children right after school. That's just the knowledge of schoolchildren programming is not enough.
1C Company has set itself a task - in each yard
on a parachute tower to a programmer club for schoolchildren. Judging by the information on
club.1c.ru , in 133 cities such clubs already exist. For these clubs, 1C and develops a line of IT-shnyh courses. Among them are not only specific, corporate, for teaching schoolchildren in 1C, but also courses on “ordinary” application programming, and even on system administration. In this case, 1C is actually a pioneer.
But why another course in teaching schoolchildren to algorithmic programming, when there are a great many manuals, and well-developed approaches, that is, the learning system itself?
First of all, apparently, this is an old programming tradition: why use ready-made when you can write yourself. Moreover, all systems have their drawbacks and can be overcome in their “product”.
At once, we say 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 talk mainly about the differences of the 1C course from others, they have much in common.
What, above all, do you want from the new course, what is especially lacking in already existing developments?
Quick self start
First of all, this is probably the possibility of autonomous work from the very beginning. The course was not thought of as a tutorial, but in practice it is necessary that the child, when learning algorithmic programming, can move in some cases independently. In this regard, there are serious problems for beginners. Even an adult is hard to grasp and get used to the fact that you need to write programs that are completely devoid of the user interface, precisely follow the format of input and output data, and the like.
At the first lesson there is a detailed story about the difference between algorithmic (olympiad) programming and project programming. It describes in detail the interaction with the testing system and provides an example of a running program. Now, after double testing, it became clear that even such a degree of detail is insufficient for most children. We will try to supplement the course with a very simple, clear introductory part, with which we will begin teaching the course at the Summer School this year.
')
Visibility
Another significant problem is the lack of visibility. After becoming familiar with programming a graphical interface, it is rather difficult to convince schoolchildren of the need to use paper and a pencil to develop algorithms. In any case, when studying algorithmic programming, the main work takes place “in the mind”.
Some tricks to increase visibility is still there. (Let's not talk about algorithms visualizers - this is a great help for studying algorithms for a long time, but not for beginners who have serious difficulties with coding.)
It is highly desirable to introduce the debugger to learning algorithms. The debugger built into Eclipse is simple and intuitive. It is proposed to devote the second lesson of the first module of the course to work with the debugger and use it constantly in the next classes, shifting most of the work to the computer. In this lesson, it is proposed to solve special “opposite-tasks”, where the text of the program-solution has already been given. True, the solution contains errors and it is proposed to pick up the input data so that the solution “collapsed” - 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 problem solving teacher on the projector. The usual pattern of teaching other 1C courses, when children are guided by the teacher’s actions and actually repeat after him, and the teacher tells and simultaneously writes a program-project, seems completely inapplicable in teaching algorithmic programming. It really is. The main task of teaching algorithmic programming is to teach the student to think independently. And here it is difficult to imagine another teaching scheme besides the usual one: a theoretical lecture, then an independent solution of problems. And this is how this course is taught. However, especially at the initial stage of education, it is more interesting to solve problems with children as if “in parallel”. At the same time, faster children in learning actually solve “their problems in their own way”, but at the same time they observe with interest what is happening on the projector, correct errors that occur and suggest their own approaches to the solution. This approach helps more sluggish students not to get stuck for a long time on technical trifles, and thanks to this, they definitely get something. And the situation of success is very important to maintain interest. And here comes the third, perhaps the main problem of teaching algorithms - complexity.
Comprehensibility
Algorithmic programming is really very difficult. This fact fully explains the fact that when applying to universities and working in leading IT-companies they prefer olympiads. The logic is simple. If a person has mastered the construction of complex algorithms, it will not be difficult for him to explore the capabilities of a particular library.
High complexity basically assumes that Olympiad programming is not for everyone. But in 1C they view it as an acquaintance, an element of a common programmer culture, and not as a “sport”.
First of all, difficulties in understanding arise from lack of speaking.
It often happens that the only way to understand the solution of a problem is to analyze the source code of the authoring program-solution. Firstly, it is very difficult. Of course, an olympiad with good experience can easily see, say, a fragment of a program that sorts an array.
But a newbie is hard to do. The phrase in the natural language “further we sort the array” is much easier perceived.
A very important feature of this course is that sufficiently 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 solution sequence. “Fast” schoolchildren usually do not read it before solving it, but they are strongly recommended to read the analyzes for all tasks, because for many tasks there are several ways of solving, some of which are simple to implement, but not trivial.
Another type of reticence is phrases like "proof provided to the reader." Often, the “reader” cannot do this. In the best case, the information is ignored, in the worst there is a strong irritation, he cannot calm down until the problem is solved, and there is no possibility 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 tutorial is actually a workbook. The theoretical section constantly asks questions, suggests tasks for adding missing commands to source texts, filling in tables, drawing graphs of certain types, and the like. It is assumed that during the lesson in the process of explaining the theory, the student actively uses printed manuals, making notes in it in pencil. However, there are answers to all tasks and questions in the special help section or in the Reference book.
For convenience and to increase the speed of algorithm development, not only in the printed version, but also in electronic form, the Handbook is attached - working fragments of programs that implement standard algorithms. From the directory can be copied. It also does not leave students “alone” in intractable situations. It may seem that this approach involves thoughtless copying of solutions, but this is not the case. Algorithms in the Directory are given only in a standard form and, in any case, they must be adapted to a specific condition.
How does it work?
Technically, the course is a methodological complex: a printed manual and a Web part.
Thematically, the course is fairly standard.
First, in the first module, we study simple basic algorithms such as determining the simplicity of a number, sorting an array.
Further, in the second and third modules, familiarity with more complex algorithms follows: recursion, algorithms on graphs, and dynamic programming problems.
The fourth module completes the course, which mainly deals with data structures and algorithms on them, which allow solving problems faster.
Throughout the course, and especially in the fourth module, the capabilities built into the programming language are considered, allowing the algorithms to be implemented clearly and succinctly.
Special mention should be made of the language used in the course. There is an opinion that the teaching of algorithms can be conducted in any programming language. This is true, but with a slight reservation. Some languages ​​are more suitable for implementing algorithms, others less. Indeed, in programming tasks it is important not only to invent, but also to correctly encode the solution.
Python is definitely leading now in this respect - it has a lot of interesting mechanisms for algorithms development and a large functional library built into the syntax.
One can argue about the expediency of using the Java language for solving Olympiad problems, but in any case, Java also has, like Python, a large class library that can be used to encode algorithms. This includes a library of collections — embedded data structures — and rich functionality, for example, for working with strings.
Before the arrival of Python in Olympiad programming, despite the fact that even a minimal Java program contains about ten lines of code and assumes familiarity with the object-oriented approach, many serious Olympiads preferred the Java language.
Almost all 1C courses for schoolchildren are built on the basis of this language. Studying its application in courses and algorithmic and applied programming, they receive a universal tool for solving any software problems.
Generally
The company "1C" offers another course of algorithmic programming.
It certainly has its drawbacks, but its merits are also visible: it is an attempt to acquaint schoolchildren of any level with 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 the places at the Olympiads are the result of studying this course. But the fact that almost no one left the training after the first or second module says that it is interesting and understandable.
The online part of the course is presented openly on the website
informatic.mccme.ru in the section of the author’s courses under the name
1C Company. “Algorithms. Olympiad programming in Java for schoolchildren . " All materials on the first module in pdf format are also posted there.
Author of the article: Ilyin Vladimir Vladimirovich (oivt@ya.ru), teacher, School 179 MIOO of Moscow