Starting module of the course “Algorithms. Olympiad programming "or Year in the way
On your marks!
If you ride a bicycle for a whole year (see 2014 article: A yellow bicycle with red wheels or another course of algorithms from 1C ), then you can circumnavigate the Earth twice. Let’s say, with a cross: first along the meridian 37.57571, then along the parallel 55.81842 and return to the main building of the 1C firm on Timiryazevskaya, from which it all started. (To mathematicians: yes, the parallel is shorter than the equator succeeds; to biologists: yes, with stops for rest it will be much more than a year; boring: yes, yes, to swim in the ocean).
It is worth stopping and taking stock of our journey. But let's start from the very beginning.
Even earlier - we will return two years ago.
In 2013, to 1C: Summer School, the First Module (12 lessons) of a new course on algorithms for schoolchildren was written. It turned out to be quite good, but difficult. It was difficult to deal with without preliminary preparation, studying the basic syntax of the language and understanding the basic algorithmic constructs. The preliminary course on Java in 1C: Club of Programmers - (this is an introduction to project programming) practically did not solve the problem - after all, the first game on the basics of Java was written with great help from the teacher and solved more of the design problem, almost without encountering the development of algorithms. But the development of the course continued - the second and third modules were written and tested. The plans were to develop the fourth ...
And again - 1C: Summer School, already 2014.
I have been given the task: I need to make it so as to occupy completely beginner children, but already interested in algorithmic olympiad programming. And in the fall to add more to them so that the "old" with the "new" - all worked together?
Solution: you need to start from scratch and move very slowly. And it all turned out in volume ... neatly in one more module.
And everything fell into place: the Starter appeared in the course - the zero module (programmers must number from scratch!) - material for quickly and easily entering a real course of algorithms.
As in the rest, in the Start module there are not only Tasks, but Tips and Analysis. The manual can be used both as a workbook, it has special places for filling with a pencil, and as a tutorial: 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 on the First module, but it is precisely the Start classes that should ensure “smooth entry” and group alignment, which is very important.
The topics studied in the Start module can be well known to students “in theory” from previous programming courses. The task of the Start-up module, of course, is not to “repeat” the previously studied algorithmic constructions for six months, but to learn how to correctly and quickly use them to develop algorithms.
In the perception of a child studying programming, the cycle for organizing the movement of an object-picture on the screen and the cycle for determining the simplicity of a number are completely different. The review of algorithmic programming "... my brain is not designed to solve algorithmic problems, it is capable of writing code for games ..." seems funny, but this is actually a normal, natural situation. Actually, the task of teaching the Start module is to change this state of affairs.
About what everyone needs, but what everyone does not have enough time for
It is in the Start 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 place spaces, indents in the code, correctly name variables. When it is worth using one or another algorithmic construction, and vice versa, which is often more important - when not. What condition should be put into the loop, is it worth using equality, or is strict inequality better? Which is better: chain from if-else or switch-case? break and continue: when is it evil, and when is a useful tool?
If this is not done, students can develop (and often develop) their own “style” of programming, and “retrain” them in this case can be very difficult. For example, a child independently “discovered” the possibility of exiting the cycle in approximately the following way:
for (int i = 0; i < 10; i++) {
if (…) i = 11;
…
}
Once it worked. The system “approved” and that’s all - in all other programs the way out of the cycle is as follows. A very important task of the teacher leading the Start-up module is to detect such situations and prevent such approaches from becoming a skill.
Algorithmic Racing
And, of course, competition. Olympiad programming is still a sport.
The training in Start is organized in this way: the first “Olympiad” immediately after the first acquaintance with the conditional operator and cycles. The word "Olympiad" is in quotation marks, because it contains very simple tasks with conditions on the topic 1C. The wording of the problems is funny, and the solution is the standard simple algorithms.
For example - the simplest "olympiad" task:
“1C programmers during a break in the buffet decided to gamble on sandwiches. They secretly write some numbers on napkins and give them to the barmaid. The barmaid gives all the sandwiches to the first, if his number is greater, or to the second, if the first is less. But if suddenly the numbers turn out to be the same - both sandwiches remain in the buffet. According to the numbers on the napkins, print the number of the full programmer or 0 if both remained hungry ”
(it should be noted that in 1C the buffet plays a huge role in the life of future programmers)
Children are very pleased to find that this is actually a normal search for the maximum. This is interesting because the child "participates in the Olympics" almost immediately at the beginning of the course and achieves success.
By serpentine
Learning is a spiral. First, the most necessary things, then immediately the olympiad lesson. Further, a more detailed discussion of conditional and cyclic operators. For those who have a poor understanding of the cycles in the third lesson, it will be comfortable to “return” to the conditions in the sixth and seventh. However, these are far from easy tasks. For example, to check the ability to pack two rectangular boxes in a third box, even with a height restriction - boxes cannot be placed on their side, but you can put one on top of the other - technically very difficult task.
In the last classes - functions (this will provide a good understanding of recursion) and in conclusion the Final Contest. All the tasks that the participants are invited to solve according to the olympiad rules - without any hints - are simple, but taken from real olympiads.
Beauty!
Due to the fact that Start was created last, taking into account the accumulated experience, it, like the first part of Star Wars, the posts of the third and fourth, looks very impressive.
We painted it with thematic advisers and quotes from a Typical programmer, added side footers that let you scroll through quickly to find the necessary parts of the manual, and the presentation style turned out to be fun.
We can say that it’s even a little hooligan, but this is the style that younger students appreciate and love (for programming teachers, grades 7-8 are younger).
The web part of the course and the Manual for the First module in pdf are available at informatics.msk.ru .
there is also a pdf of several lessons from the Starter Module Handbook .
In conclusion:
Track for the year
A little bit about the current results. They are small but tangible. 7 groups were formed, with a total number 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).
The author of the article: Ilyin Vladimir Vladimirovich (oivt@ya.ru), teacher, School 179 of Moscow Institute of Public Relations