📜 ⬆️ ⬇️

Starting module of the course “Algorithms. Olympiad programming "or Year in transit

On your marks!


If you ride a bicycle for a whole year (see the 2014 article: A yellow bicycle with red wheels or another course of algorithms from 1C ), then you can go around the Earth twice. Let's say a cross: first along the meridian of 37.57571, then along the parallel of 55.81842 and return to the main building of the 1C company at Timiryazevskaya, from which it all began. (Mathematicians: yes, parallels shorter than what happens at the equator; biologists: yes, with rest stops more than a year; bores: yes, yes, sail the ocean).

It is worth stopping and summarizing our journey. But let's start from the beginning.

image Even earlier, we’ll be back two years ago.
')
In 2013, to 1C: Summer School was written the First Module (12 lessons) of a new course on algorithms for schoolchildren . It turned out quite good, but difficult. According to it, it was difficult to study without preliminary preparation, study of the basic syntax of the language and understanding of the basic algorithmic constructions. A preliminary course on Java in 1C: The Programmers Club - (this is an introduction to project programming) practically did not solve the problem - after all, the first game on the basics of Java is written with great help from the teacher and solves more of the design problem, practically without encountering algorithms. But the development of the course continued - the second and third modules were written and tested. The plans were the development of the fourth ...

And again - 1C: Summer School, already in 2014.

I have a task: I need to do so now to occupy very young children, but already interested in algorithmic olympiad programming. And in the autumn, to them to add more to the "old" with the "new" - all together engaged?

Solution: you need to start from scratch and move very slowly. And it all turned out the volume ... neatly even in one module.

And everything fell into place: the Start module appeared in the course — a zero module (programmers must be numbered from scratch!) - the material for quick and easy entry into the real course of algorithms.

As well as in the others, in the Starting module there are not only Tasks, but Tips and Analysis. The manual can be used as a workbook, it has special places to fill in with a pencil, and as a self-help manual: the manual has answers to all questions. Even for the simplest programs, fragments of the solution are given.

From the seventh grade or even earlier


Generally speaking, in some cases, training can immediately begin with classes in the First Module, but it is the Starter classes that should ensure “smoothness of entry” and leveling of the group, which is very important.

Topics covered in the Startup module may be quite familiar to students “in theory” from previous programming courses. The task of the Startup Module is, of course, not to “repeat” the algorithmic constructions studied earlier in six months, but to learn how to use them correctly and quickly for the development of algorithms.

In the perception of the child studying programming, the cycle for organizing the movement of the image object on the screen and the cycle for determining the simplicity of the number are completely different. The feedback on algorithmic programming "... my brain is not designed to solve problems in algorithms, it is capable of writing code for games ..." seems funny, but this is actually the usual, natural situation. Actually, the task of teaching the Startup Module is to change this state of affairs.

About what everyone needs, but what everyone doesn’t have time for

It is in the Startup module that a lot of time is devoted to things that are usually not enough time for classes or they are traditionally considered trivial, natural, although this is not so. Style - it is very important to learn how to correctly space spaces, indents, correctly name variables in the code. When it is necessary to use one or another algorithmic construction, and vice versa, which is often more important when it is not. What is the condition to put in a cycle, is it worth to use equality, or is strict inequality better? Which is better: a chain of if-else or switch-case? break and continue: when is it evil and when is it a useful tool?

If this is not done, pupils can develop (and often develop) their own “style” of programming, and it can be very difficult to “retrain” them in this case. For example, the child independently “discovered” the possibility of exiting the cycle in the following way:

for (int i = 0; i < 10; i++) { if (…) i = 11; … } 

Once it worked. The system "approved" and everything - in all other programs, exit from the cycle is carried out as follows. A very important task of the teacher, the leader of the Startup Module, is to detect such situations and prevent such approaches from becoming a skill.

Algorithmic Racing


And, of course, competition. Olympiad programming is all the same sport.

Training in the Starting is arranged in the following way: the first “Olympiad” immediately after the first acquaintance with the conditional operator and cycles. The word "Olympiad" is put in quotes, because it contains very simple tasks with conditions on the subject 1C. Problem statements are fun, and the solution is standard simple algorithms.

For example - the simplest "Olympiad" task:
“The 1C programmers at the break in the buffet decided to play a game of chance for sandwiches. They write secretly some numbers on napkins and give them to the barmaid. The barmaid gives all the sandwiches to the first, if its number is more, or to the second, if the first is less. But if suddenly the numbers are the same - both sandwiches remain in the buffet. According to the numbers on the napkins, print the number of the well-fed programmer, or 0 if both were left hungry.

(it should be noted that in 1C buffet plays a huge role in the life of future programmers)

It is with great pleasure that children discover that this is actually the usual search for the maximum. This is interesting because the child “participates in the Olympiad” almost immediately at the beginning of the course and achieves success.

Serpentine


Learning is a spiral. First, the most necessary things, then immediately Olympiad activity. Further a more detailed discussion of the conditional and cyclic operators. For those who have misunderstood the cycles in the third lesson, it will be comfortable to “return” to the conditions in the sixth and seventh. However, these are not at all simple tasks. For example, to check the ability to pack two rectangular boxes in the third, even with a height restriction - the boxes can not be laid on its side, but you can put one on another - it is technically a very difficult task.
In the last classes, the functions (this will provide a good understanding of recursion) and in conclusion the Final Contest. All the tasks that participants are invited to solve by the olympiad rules - completely without prompts - are simple, but taken from real olympiads.

Beauty!


Due to the fact that Starter was created last, taking into account the accumulated experience, it, like the first part of Star Wars, the third and fourth post, looks very impressive.
We painted it with thematic advances and quotations from the Typical Programmer, added side headers and footers that allow you to quickly scroll through the pages to find the right parts of the manual, and the writing style itself turned out to be fun.
You can even say a little hooligan, but it is this style that younger schoolchildren appreciate and love (for programming teachers, 7-8 classes are younger ones).

The course web-part and the First Module Manual in pdf are posted on informatics.msk.ru .
there is also a pdf of several lessons of the Startup Manual .

In conclusion:

Track for the year


A little about current results. They are small, but tangible. Formed 7 groups, a total of 80+ people. The guys are growing up, in a year the best of them will get into our team , and there, you see, Vseros will submit to them).

Author of the article: Ilyin Vladimir Vladimirovich (oivt@ya.ru), teacher, School 179 MIOO of Moscow

Source: https://habr.com/ru/post/268957/


All Articles