📜 ⬆️ ⬇️

Where to start programming in add. education? Or SmallBasic and all-all-all

My name is Rostislav, for seven years now I have been running programming circles for schoolchildren of grades 7-10. For the past few years, I have taught C ++ courses in the laboratory of robotics at the Polytechnic Museum and at the Gecko Club Center for Computer Technologies, and my main work is web development and mobile application development. The most interesting thing for me is to work with medical services.

In this article I want to speculate on how people become cool specialists in a particular area, and how this will be affected by additional out-of-school education. How to build training programs and which language to choose for learning? What do you need to do with children so that motivated specialists grow out of them?

In IT, this problem is particularly relevant - there are not enough good programmers on the market, but there are a lot of under-qualified people who will never become specialists, simply because they have no passion for this.

For a start it is worth remembering how I came to this myself. For example, I remember exactly that the choice of school in fifth grade was partly due to the delicious rum at the canteen, and in this very school, before an English lesson, back in 2006, my rather marginal classmate rushes into the class with a shout “guys, I did site of our class on MyLivePage! Write down the address! It was a real discovery - it turns out that it can, and it is completely free. Then I decided to make my site and, of course, about computers. I bought computer magazines and copied interesting news from them, downloaded interesting software. My classmates came to the site, someone commented on something. It was delicious! And then it was necessary to place the informer from Yandex, it turned out that this is not trivial at all - you need to dig into a bunch of incomprehensible code. I rummaged, of course, poked him in the right place, but decided that I should deal with the code. No sooner said than done! On a sunny winter evening, I went to the bookstore and bought my first HTML textbook with accumulated money.
')
After a couple of weeks of learning, it became clear that HTML is cool, but this is completely incomprehensible how to process forms, but everyone is talking about some kind of PHP. The basic things turned out to be done according to the book, but the PLO did not succumb to me then and I decided to go to the courses.

I chose the C ++ course in the “Programming School” at DNTTM. And this was a real turning point. I found myself in a circle of people with similar interests, I immediately had many new friends. Firstly, it became clear that I really can do something, and secondly, where to go further. A significant role was played by the system of team projects, when it was necessary to first describe the TK, divide the work, and then report regularly on the work. We were like a small IT company. And I also really liked the intern program - thanks to her, I myself eventually became a teacher.

I spoke with some of my acquaintances and students and heard very similar stories. For example, Levan Kvirkvelia told me this, now a schoolboy, the developer of the popular mobile application “MRKO - independent electronic diary”, which consistently holds the first line of the AppStore and Play Market rating:
In the second grade, when I asked a computer science teacher “how to make a website?”, She said: HTML. With this strange word, I went home, and very soon made a terrible decision - I went to the bookstore. I didn’t like books, and I don’t like them even now, so I chose the thinnest book on the cover of which there was this word - “HTML and CSS for creating Web pages” by E. Castro. Sounds cool right? At home, I downloaded the necessary programs, tried, played. I made my first website, which was released in “production”, on the beautiful Narod.ru, (“Yandex”, I would not be without you).

Further development went. I constantly wanted to learn more and more, I wanted to make my site cooler, I wanted to be needed, I wanted to make money on it, I wanted to be great. Then I developed as a programmer: I searched for myself for two years, studied Java, C ++. In two more years there was a lot of things created. I did a huge number of projects that didn’t “shoot” (I didn’t spin anything, I didn’t have money), I earned the first 100 thousand on the site order from a relative. In the end, I found myself. I realized that more than anything I like:

  • make cool IT related projects;
  • do useful to people;
  • be well done (decipher: my product is the best, everyone should be fucked up from it).

Seva Zhidkov, a ninth-grader, winner of the STI Olympiad, Hackathon Vkontakte 2016 and an employee of Mail.ru (and also the creator of startups LeonardBot and Sheldon.ai) says:
In the second grade, I went to a computer club at a local university, there were logo worlds or something. Then, after a couple of years, I wanted to make money and tried to learn how to design and everything like that, so money was also one of the original motivations. I google “How to create a website” and learned HTML. The first site was for its class, I wanted to somehow stand out, “to become cool”

After listening to many such stories, you can draw certain conclusions about how to build a successful educational process for schoolchildren in IT:

  1. The driving force for development is often the opportunity to realize your own project, which you can show your friends as soon as possible (or better all over the Internet) or make some money on it. So these projects should be done as soon as possible . Purely educational projects need to try to stylize a real.

  2. Complex technologies are successfully studied when they are needed for the project. So first the task, and only then the way to solve it . And ideally - you need to walk to it yourself.

  3. The material is absorbed well when it evokes a strong emotional response. So, if the task is not project-based, it should be at least funny and strange , and better - very funny and very strange. Storytelling about Luntik, flying “Bugurts”, in battle all means are good. The main task is not to turn the process into a boring, nasty business. I have seen a lot of people who have been learning to play a musical instrument for many years in elementary school, but after graduating they never took it in their hands - this is the worst thing that can happen with the learning process.

How, then, based on all this, is it optimal to build a training program? So that, on the one hand, not to lose the child’s natural motivation, and on the other hand, try to give as much fundamental training as possible? And most importantly - what to learn?

When choosing a technology, I usually follow the following criteria:

  1. Ability to solve interesting problems. Many teachers agree that it is best to show the basic algorithms in drawing. Drawing is the first step to own game, and own game for the school student is very fascinating. So the ideal language to learn is the language in which you can draw as early as possible.

  2. The simplicity and the possibility of strictly consistent presentation. The language should be clear, and the world of programming for the child at each point in time should have tangible boundaries. On the one hand, at each stage, there should be visible perspectives in learning - the next steps, but at the same time, the arsenal should consist of clear and familiar tools by 90%. It is difficult to write a poem, but to write it in a language where the meaning of half the words is incomprehensible is most likely impossible.

  3. Applicability in real life. Technology or at least the result of working with it should be “adults”. Children want to work on an equal footing with adults, to feel their importance: real websites, real applications, and so that you can read the interview program for a real position and say “oh, I know that! It remains only to read the rest!

Most modern teachers agree that the ideal first “real language” (if you do not take into account the “toy” Scratch or school logo) is Python. And Python is really cool! On the one hand readable syntax, but on the other you can do real projects - even web services, even telegram bots. But personally, from my point of view, Python is far from the ideal choice of the first language. In order to draw, most likely you will need PyGame, and the connection of third-party libraries leads to the appearance in the code of constructions that are difficult to explain at this stage - objects and modules. Python is a very powerful and convenient language, it perfectly meets the first and third criteria, but it does not seem to correspond to the second.

At one time, I took an annual course on C ++, and I believe that this was a very correct decision. So correct that now I myself conduct such a course (the program of the course on GitHub is the first and second part). Pros are almost Latin in programming, knowing the pros, you can very quickly understand any C-like language (and therefore almost any). In addition, the pros build a very clear understanding of programming from low-level aspects to OOP. Moreover, each algorithm and data structure can first be “invented” by oneself, implemented, and only then can we learn about the implementation from STL and use it. Methodically it is very correct. However, many teachers believe (and they are absolutely right) that giving advantages as a first language is sadism. Pluses are truly “adult technology”, while studying it is very easy to consistently give material so that there are no unknown constructs in the code, but with drawing (and generally with beautiful tasks) there are obvious problems, no matter how hard you try to make the tasks fun. Either it is necessary to use third-party training libraries (and this does not meet the third criterion), or to wait for Qt - and this, sorry, is the 36th lesson in the quiet pace of work. Survive only the most persistent. So the advantages in the first stage disappear, we must give them later.

There are even more classic options - Basic, Pascal - but all this is no longer used in practice today. So, too, disappears according to the third criterion.



So what to choose? At the first stage, on the one hand, something bright and simple is needed, and on the other hand, it is similar to “adult languages” and with “adult” capabilities. And in my experience, this is Microsoft SmallBasic ( a course program on GitHub ). Why precisely he?

  1. A limited number of designs, each of which is visible when scrolling.
  2. Very friendly environment, help is automatically displayed in Russian.
  3. You can draw and start making your own game starting from the first lesson.
  4. All basic constructions - conditions, cycles, variables, functions in their places and work as they should. Arrays are also in their place ... well, almost.

And most importantly - this language is just awful! All variables are global, all the code is in one file, which is why at some point in working on a project, the code becomes completely uncontrollable and it’s impossible to continue development ... And at this moment we gently hint that it’s time to switch to python or pluses. The algorithm base is given, the goals of further training are now clear, which means there is a motivation to go ahead!

How to build a course optimally? As soon as possible to proceed to the process of building a game. Usually, in the first lesson, I give play to the console and the turtle in order to learn the variables and the concept of the algorithm in principle. Already in the third lesson, you can give drawing of “abstract paintings”, and in the fourth - go to the cycles, which can draw more complex images. And then there is animation, GUI, files and project work - thinking through and implementing your own game. In 12 lessons your own game will be ready!

At the end, it will become clear that Smallbasic is no longer enough to implement all the plans, and at this point we are talking about more complex and “correct” languages, motivating the children to develop further in order to continue developing.



At what age can you give SmallBasic? In my experience - from the sixth grade. Perhaps, it is possible earlier, but then the continuity of learning suffers - for more than a year SmallBasic is not enough, and C ++, in my experience, is definitely not worth telling before the seventh grade. There are successful sixth graders, but on average is very tight.



But after basic training in C ++, you can develop in any direction: you can learn Python in an hour and cut application projects, or you can go to Java and mobile development. With such training in the arsenal, any technology will be available.



By the way, it is according to this scheme that I act on programming courses for beginners at the “Gecko Club” Center for International Communication. This summer we are launching intensive SmallBasic intensive for children who have completed the sixth grade.

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


All Articles