Computers Windows Internet

Educational programming languages. Development of programming skills using the Maple package when teaching computer science at a specialized level

At the end of the week before last, a small performance took place in Moscow, where he told the novice geeks about which language to start with. professional way and what kind of future career with relevant knowledge is worth striving for.

You can find some details of this meeting in the comments to the post, but for now let's try to find out here: so which language to learn first?

It actually looks like my son's teacher, who is in first grade, writing letters without signing, without a subject. Looking directly at the screen of mass, suddenly become conscious! It was also assumed that Matma taught thinking, but that did not work. ... The idea of ​​introducing programming to school is great. How it is introduced is a completely different matter, and there are many problems with it. Firstly, what was written by Pstrejček or an unprepared teaching staff. Sam wasn't a big dog, but he tried.

Earlier in elementary school, were there such people in the gymnasium and practically no one. And it also has 2 things to do. Alternatively, we can agree on how someone can program it instead of wanting to be a teacher. We all know how this social group makes money and it is very important to have a passion for teaching the next generation.

Old school

The first lessons of computer science, teachers with a squeak in their hearts let children near school computers in order to teach them the first programming language in their life. 15 years ago, in most cases it was Basic or Pascal procedural languages, but if you were very lucky with a teacher, you could also learn C.

Let's leave the latter out of brackets for now and figure out: is it so good to start learning with very limited languages. The pros are obvious: simple syntax, similar to the usual English language, and the ability to learn the basics of programming in just a few hours. But there is also a disadvantage: the lack of real practical application without studying further development these languages ​​(Visual Basic and Object Pascal). And in this case, you will be far from developing full-fledged modern applications.

Second, the program is even more important. In general, I don't like the idea of ​​teaching rigorous programming. We need to focus as everyone here writes about new technologies.

  • Even if not in the right direction, everything is fine.
  • You can fix it in the future.
  • It's better to work than not to work.
Which class should you program?

  • I am not qualified to answer the question specifically.
  • In my opinion, they should have a psychologist.
A very cool action, teaching children that the basis of programming is very accessible and interesting for them. The idea of ​​introducing educational programming is idiotic. Things can be put on the information wheel in high school, as well as use cases with tools available free for everyone to get into physics, chemistry, or math. As someone who is interested, he will find information about the Internet itself.

So if you are still quite a few years old, circumstances do not force you to choose your future profession, then procedural languages ​​are an excellent choice. To train, as they say, is best on cats. But if you want to start making money tomorrow, then ... However, more on that later.

Modern school

As you probably know, many modern schoolchildren start their way into programming with some simplified versions of "big" languages, such as Scratch, Blockly or Logo. In general, the advantages could be rewritten from procedural languages, if not for one "but": these languages ​​and applications built on their basis are an entertainment service for children.

Next up - a significant portion of young people are celebrities because they want to consume and not break the code wall - you need to have a predisposition for it. The program content is so great that if someone wants, he will find himself. Now the most important thing for children is to learn correct retention, logical thinking, very good learning of a foreign language - in the sense of continuity and distribution at the correct level. In any case, such things can be done on mat-physical so as not to bother these humanists and future medical programmers.

That is, the only thing that can be learned from such programming is the general structure of the program, the concept of loops and operators. So, if you are already 12 years old, then forget about these children's languages, it's time for you to enter the world of adults.

Quick start with perspective

Let's say that, discarding all the preludes, you want to immediately start learning one of the mainstream programming languages, at the same time learning all the basics of programming. Then it is worth answering only one simple question: what exactly do you want to do? If you program hardware, then there can be no discussion here: the answer is C, that is, the C language. It combines everything that a beginner needs: simple syntax, great opportunities, both for continuing to work in this environment, and for further retraining to " not an iron "profile. At the same time, in almost any major retail electronics store, you can find development boards, robotics starter kits and other joys for a beginner.

Because I had computer science and college and that was the bottom. Instead of thinking about the government, let the government take plagiarism and make the curriculum more realistic, because the stupidest information children have, the less we will have. interesting people because developing their passion after school and doing their job will no longer have power.

By the way, someone was mistaken in thinking that an adult works 8 hours and faience, and a child must go through books all day at school and after school, because in the end every teacher believes that his subject is the most important. It's a tedious job that no one will remember in a few years, but rich people will have more money to start a business with the hands of robotic minds, which seems to mean something more. You say that you mean more, that you have a mind, two hands and a desire.

  • The dumbest citizen, the better for the ruling caste and financier.
  • It's a computer or digging holes - it doesn't matter.
Everything is very beautiful, but as soon as you notice this: who will teach them to program?

If you consider the web as your vocation, then you need to start your journey as standard with HTML and CSS. This will allow you to create static pages and get a rough idea of ​​what you have to deal with. Next, it is highly recommended to tackle Python. First, because this language is really easy to learn. Secondly, according to some sources, Python is the most popular language, if we take into account only the statistics of students since 2011. Thirdly, the capabilities of this language are such that today you create the web with it (like DropBox or Google), and tomorrow you start developing a game (Civilization IV).

Teachers who cannot understand the basics of programming on their own? Don't be fooled, but this is reality. At the academic level, it is difficult to find teachers who teach programming very well, and only at school. It's nice to treat coding as fun, but this video was presented in a completely different light.

  • Of course the staff is the problem.
  • But nothing will change without action.
  • Actions appear, that's good.
And those poor parents who now do design projects for waffles now need to learn how to program and make programming projects ?: Oh Seriously, the problem of a weak staffing issue can be solved by communicating with the students who will conduct classes during the loans.


Hard to learn, easy to fight

Without letting go of the theme of the web, you can choose JavaScript as the first programming language (actually the third after HTML and CSS) of programming. This is exactly what they did in computer science lessons 15 years ago, and this had a very definite meaning: static pages with the addition of literally 4-5 lines have an active component, which raises the motivation to work in this direction. At the same time, the performance does not depend on the browser or on operating system... And that's not to mention the prospects for further development towards Node.js.

Then you need to create backup a student whose parents pay huge taxes? Is it possible for a student to take revenge on more than one parent whose parents charge 500 for younger brothers and sisters?

  • Students taking programming classes in primary schools Oh?
  • In addition to training, you must have experience or knowledge.
  • The computer student is rather the opposite of the teacher.
There are clearly defined goals! Now fashion, especially in the media, criticize everything because it has created a political option there.

It is worth discussing on the basis of facts and, in particular, the officially available "documentation". And videos like this one created an agency commissioned by the ministry and should probably hit the tastes of the general public, not the IT pros. Understanding, analyzing and solving problems based on logical and abstract thinking, algorithmic thinking and ways of presenting. information. Programming and troubleshooting with a computer and others. Digital devices: algorithms for laying and programming, organizing, searching. and information exchange using computer applications.

You can also start your journey on the web with PHP or Ruby, but if you have never done programming, then it is better to follow the path of least resistance, and leave these two languages ​​for future study. Compare at the same time.

And finally, to the development of applications. Three ways: Java, Swift, C #. The desire to start your learning to program with them is a very serious challenge, which in the absence of hard work can turn out to be stupid, because each one will require several months of intensive study. However, prospects can also serve as an incentive, be it a successful career in the mobile sphere (Java - Android, Swift - iOS) or gaming (C # + Unity).

Use of computers, digital devices and computer networks. including knowledge of the principles of operation of digital devices and computer networks, as well as the implementation of calculations and programs. Development of social competencies such as communication and team collaboration, including virtual environments, collaboration and project management. Compliance with laws and safety regulations.

The current core curriculum does not add anything new, so teachers can sleep peacefully and the level of computer science will not change. Programming is a part of computer science from an early age, influences how other subjects are taught, serves the correct meaning of IT concepts and computer science. It supports the development of skills such as logical thinking, clear presentation working together and efficient implementation of projects. If it's bad, you need to change it. Changes in the beginning will not necessarily go in the right direction, but better than being in the wrong place. Do you really think the officials' vision is correct? This project will definitely fail because there won't be the right people anyway, and there is a core in people. The school should be a place to support development in many ways, not just what sounds good or to which "officials" have been cut off from the world. Generally speaking, most of the information provided is negative and imposes on us what to think. Recently, the author of this blog posted on his blog a very interesting topic about programming schools, which is somehow related to the above article. If I had to "officially" say that I might have to read it, but luckily I don't need to. Your text was not received by me! This was my gratitude to the "professional" journalists of TVNOV, agoors and other people who, in connection with political blunders, discussed new base programming and did not relate to the essence at all. You don't really need to read the rules, set, and you can give your opinion, because this is your blog, for your money and nothing to do with it. On the other hand, the main stream operates on a concession basis and is usually a regulated market, therefore, at least, the theory should be more prepared. Teachers are often people who have no business experience and would certainly love to hear from you. You are the most important for the implementation of the program, do not discourage and, by the way, prepare future professionals. You know that the topic is very interesting. In my opinion, this is a very important perspective. The term was even agreed upon, but for some reason it didn't come out. Unfortunately, there are no mainstream media outlets yet. ... It is about creating inexpensive developers on the same basis as the communists who produce tape workers and special workers in factories.

Today I wrote an answer to Nina Shumilina from Tver, to a question about Python as the first programming language at school.

She quoted Konstantin Polyakov, the conclusion of his article in the September issue of Informatics:
For these reasons, the author is inclined to support the opinion of I.A. Sukina: Python is good for professional programmers, but using it as the first programming language can be a bad decision. As Python teachers admit, those who have learned to program in Python are reluctant to move to other (lower-level) languages. Having taught schoolchildren to sort arrays by calling the sort method, it is difficult to explain later why entire volumes have been written about sorting algorithms. And this can lead to the emergence of a galaxy of "Python-only programmers" who are not ready to overcome additional constraints in order to improve the efficiency of the program. In fact, the teacher finds himself in a situation that is well described by the phrase "Python has such opportunities, but you can't teach like that!" (E.V. Andreeva). At the same time, it would be beneficial to learn Python as a second programming language in advanced computer science classes (after Pascal or C, for example).

Training is a subsidiary body of the Ministry of National Education. Consultations are the final stage of work within the Council for Information Technologies of Education before the submission of a draft amendment to the program for the decision of the minister.

At the conclusion of the consultation, the ICT Education Council will present a report on their implementation and the final version of the project changes in the core curriculum and IT. Interestingly, education in the field information technologies expected in kindergarten... Young children use electronic digital devices to communicate with their loved ones and play with them. Middle school students will face the challenge of developing own programs and websites.

My answer has clearly outgrown the format of the letter, so for now I will publish it here, and then, perhaps, I will finalize it to an article.

There is no doubt that attitudes towards Python are different. Indeed, there are fears that dynamic typing and too much "high-level" language is harmful for learning, that it is impossible to replace the concept of "array" with high-level lists, since schoolchildren "deceived" by the ease of operations with lists will not understand the principles of internal organization, and so on.

However, the biggest challenge in realizing an ambitious commitment is the lack of properly trained and motivated teachers. The introduction of core curricula is designed to meet the growing demand for people with these skills in the labor market. The company manages the educational project “Master Coding”, which aims to popularize the science of programming in Polish schools and includes pupils from elementary schools throughout Poland. The teachers participating in the program were trained by the experts to continue their programming in their schools for the next 8 weeks.

But in my opinion, such criticism comes mainly from "theorists" who have never tried to teach programming in Python, the same Polyakov, although he began to publish articles about Python in "Informatics", but it seems that he never used it for teaching ... But I do not know of practitioners who criticize Python, that is, people who would try to teach children in Python for at least a year and then refuse.

Participation in the program is free. Unfortunately, school doesn't teach you everything you need to know to make your life easier. In fact, school often fills your head with nonsense that you most likely will never use, although every teacher considers them to be very important.

While we also learn useful things in school, some of the most important skills we need in adulthood are not even mentioned. We have to look to the good side, though: it's never too late to learn. Since technology is one of the most important topics today, it is hard to believe that computer science is not taught in many schools. And in computer science, we are not talking about the combination of mathematics and computers, but about the ability to work on a computer.

For example, EV Andreeva, allegedly quoted by Polyakov, three years ago decided to try to teach schoolchildren of grades 6-7 in "Intellectual" in Python. Before that, she was rather skeptical about this venture, but decided to try it. Six months later, she already spoke at conferences and said that it is best to teach middle-level schoolchildren in Python, that she did not really believe in it, but then she tried it and in a few months her views changed. So I don't know what Polyakov was citing and how old this quote is, but yesterday I specifically showed this correspondence to Andreeva and asked her to answer, to which she wrote "Shumilina's answer - middle school students definitely need to be taught in Python".

What are the benefits of Python? Not only in the simplicity of the language, but also in the fact that it is a huge, multifaceted, versatile world of programming. It is easy to start programming in this world, and it seems that there is no point in discussing the merits of Python as the first programming language - there is clearly nothing simpler (from programming languages general purpose). It is much more laconic than Pascal and programming in it is devoid of the need to mess with a lot of technical things, which is difficult for very beginners. It is much easier to write programs for beginners, if they consist of five lines, and not fifteen, they implement the same algorithms, but it takes less time to write and debug the code, which means that more problems can be solved, and further advancement, and to work with an array, it's much more convenient to write:

a = * 1000
how
var a: array of integer;
...
for i: = 1 to 1000 do
a [i]: = 0;

The result for the programmer is the same, the result is an array filled with zeros, but in Python it is one line instead of three, and the meaning does not change. And then skeptics, of course, will say that you can't write like in Python, that a student must understand that an array is a continuous piece of memory, that we must declare it, that is, reserve space for it, that we must initialize, filling it with zeros ... Well, our answer to skeptics is that the meaning for a novice programmer does not change, on the contrary, the line a = * 1000 better reflects what the student wants to get and immediately (I want a list of one number 0, repeated 1000 times), it is much easier to write and allows you to solve more problems!

Just look at the above two snippets, which one is clearer? Which one do you like best?

So Python is definitely better for beginners. Moreover, weak children can stop here, having received a general idea of ​​programming. But strong students can move on, and they will have at their disposal a modern universal programming language, actually used for development. software in the world's leading companies. For example, the statistics - "What they write in Yandex": http://blog.yandex.ru/post/ 77617 /. Websites can be written in Python, computer games, GUI, client-server applications, that is, whatever.

Now regarding the statement that there are many high-level things in the language, and there is a temptation to use them, instead of learning how it works. Well, this is a methodical problem, not a programming language problem. The general methodological approach here is as follows - first we understand how it works, then we are allowed to use the corresponding element of the language. For example, first we wrote the exchange of the values ​​of two variables through an auxiliary variable, then I show how this is done using the tuples (a, b) = (b, a). First, they wrote a maximum of two or three numbers, then you can use the max function. Then they wrote a program for finding the maximum in
sequence (array), then you can use the max function on the list. First, we wrote the sorts ourselves, then you can use the sort function, and I even insist that students use the standard sort function - it's faster and more convenient, and allows you to solve more problems, but only after they have learned how to write sort themselves.

In fact, there is a built-in sort in any modern language programming (Java, C ++, PHP), because now it is so accepted. It is absent only in classic Pascal (but in modern Delphi - there is), not in old BASICs (and in Visual Basic - there is), but this does not mean that all these languages ​​cannot be used, because they have built-in sorting? And it would never occur to anyone to prohibit the study of these languages ​​at school just because "what if the teacher teaches children to use the built-in sorting, and then you won't explain to these children why you need to study the complexity of sorting algorithms." So the problem is not if sort is in the programming language or not, but the problem is HOW to use it. It is enough for some schoolchildren to explain what "selection sorting" is - it is clear and very easy to write in the same Python, but with someone you can discuss efficient sorting algorithms, and the presence of built-in sorting does not interfere with this. Moreover, if I teach children programming in the same C ++, then I try to teach children how to use sort sort from the STL, and use it effectively, and this does not interfere with the study of sorting algorithms. At MIT (Massachusetts Institute of Technology), all initial programming courses were translated into Python a few years ago. At the new Faculty of Computer Science of the State University Higher School of Economics, created in 2014 with the participation of Yandex, it is Python that is the first programming language studied by students. Here I am citing the new faculty as an example, because in universities with already established programs, it is more difficult to change anything, for example, at the Faculty of CMC of Moscow State University, an attempt to replace Pascal with C, as the first programming language, was unsuccessful due to the reluctance to change the existing programs and the contingent of teachers.

Next, let's look at the statement "And this can lead to the appearance the galaxy of "Python-only programmers" who are not ready to overcome additional restrictions for the sake of increasing the efficiency of the program. "In a sense, there is nothing wrong with that. Programming is becoming more and more widespread profession, and many of the skills of a programmer do not belong to what is a higher education, that is, most programmers do not it is necessary to study volumes devoted to sorting algorithms.The complexity of sorting algorithms is, undoubtedly, the sphere of higher professional education, but programmers who can write a website in PHP or a program for accounting
in 1C, too, are needed, and you need a lot of them. In general, such programmers do not need to understand sorting algorithms, they just need to be able to use the standard sort function for any task and know that it can sort arrays better than if they wrote it themselves (and it’s quite strange to require knowledge from a web programmer of quick sort algorithms, of course, there will be nothing wrong with this knowledge, but it is completely unnecessary for him to work). So the training system for programmers should include both secondary vocational education (where they teach applied things and technologies), and the higher education system (where it is appropriate to discuss the complexity of sorting algorithms), just as it is in many industries. for example, in medicine (a physician with a secondary specialized education performs standard medical procedures, and a physician with a higher education knows how to prescribe treatment, that is, analyze the reasons and make a decision). Yes, there are specialties related to programming in secondary specialized education and in higher education, but the system here is not as built as in the same system of medical education. And, to be honest, I have a poor idea of ​​what is happening in secondary vocational education with teaching programming.

One analogy that I like to give here is the progress in the proliferation of cars. At the beginning and middle of the 20th century, the driver of a car had to know the structure of the car and make rather complex repairs himself. Any driver must be pretty much a mechanic. Now many drivers, well, if they have in common
idea about the device of a car, then they certainly never repair it, preferring to perform all maintenance in a car service. Is it good or bad? This, in my opinion, is inevitable. The breadth of distribution of cars has become such that it is difficult to demand from all motorists the skills of repair and in-depth knowledge of the device of the car. The widespread use of the car will inevitably lead to the fact that most drivers will not have a deep knowledge of the structure of the car. And cars, in turn, are becoming more convenient and reliable, so they can be used without special skills.

It is the same with programming - programming is becoming more common, and programming languages ​​themselves are becoming more convenient and simpler. Undoubtedly, the number of programmers is growing and will continue to grow (although there is still a huge shortage of qualified programmers in the industry), while the level of deep understanding of things will decrease. This is inevitable, but this is not a reason to abandon modern high-level programming languages, just as it would never occur to anyone to abandon modern cars just because they are more reliable and more convenient, and do not require special knowledge for constant use.