📜 ⬆️ ⬇️

How to catch a programmer on cheating and is it worth doing?



I visited here in the glorious city of Pereslavl-Zalessky at the 13th conference “Open software in high school” , organized by Basalt SPO and IPS RAS . And it seemed to me that this conference raised questions that may be of interest to Habr's readers. Among them:


I would especially like to highlight two reports, or rather, the problems that were raised in them.

I will be glad to discuss these topics in the comments.

The first important report: “Errors in the state supervision of higher education - the main problem of higher education in Russia”


In this report, the author outlined the problems of the ineffectiveness of current education. A possible reason for this is bureaucratization. I will not spread much about the problem of bureaucratization, since everyone involved in the educational process somehow came across it. The author expressed the opinion that the main problem of education is that the process is controlled, and not the result. That is, the university imposes formal requirements on the process, and they are checked. The real value of education is the demand for its graduates. The author referred several times to such controlled parameters as illumination and room temperature. The latter may have been the result of not very high temperature in the room where the conference was held. The speaker noted that the formal requirements do not fit, for example, in online education, which is now spreading more and more.
')
The author proposed an approach that allows, in his opinion, to improve the quality of education. The approach is to evaluate universities on the demand for its graduates. Well, the demand for graduates offered to be evaluated according to a somewhat controversial, in the opinion of many, criterion - the white salary of graduates in the Russian Federation for three years after graduation from the university, that is, according to NDFL-2. The term was determined based on the fact that over time the influence of the university decreases. White wages only in the Russian Federation have been chosen on the assumption that graduates replenish the budget, some of which will be used to provide training for the next generations. He proposed only two amendments: regionalization (rationing wages based on the average for the region) and the coefficient of importance for the state (since there are significant sectors with low wages).

Many did not like the evaluation criterion, because everything, in fact, was reduced to money. In my opinion, the proposal, at least, deserves attention and discussion. Because if the state pays out of the budget, then I want to see how effective the investments are, that is, how effectively education at this university affects the replenishment of the budget.

What personally caused skepticism in me was the question of the author, who needs to save the current inefficient system. The author is sincerely confident that his proposal will free up intelligent and educated officials to perform more useful tasks for society. By the way, in their mental abilities and education, I also do not doubt at all.

The second important report: “How I did a copy-paste test for a special course on Python3 and what came of it”


The author taught a special course on learning the language Python. In the process of teaching, students were offered teaching tasks with a limited number of options, and it was impossible to give each student an individual task. The author tried to automate the verification of assignments, assignments were taken online and, of course, there was a problem of plagiarism or, simply, cheating. The author developed a program in which he led the program to a “canonical” uniform form. In addition to formatting PEP8, he also changed the names of variables in the internal syntactic parse tree and got more an algorithm nugget than a program nugget. According to this impression, it was possible to make clusters of similar solutions; the original author of this cluster is the first to pass.

When testing, the utility showed very good results, but there were a lot of false positives. The author even had to introduce the rule that a cluster of single-type solutions with a dimension of more than 5 elements was false. The number 5 was taken by the author from those considerations that people familiar to the group of more than 5 people could hardly enroll in his course. And still there were a lot of false positives, and I had to look through all the solutions for possible plagiarism with “eyes”. As a result, the author wondered if it was right to try to reduce it under the conditions of a strong “informational connectivity”. For example, the essence of opensource is just a collaboration, and in general, modern IT technologies are largely based on the principles of collaboration, and there is nothing wrong with borrowing good solutions. Moreover, he said that he did not know where in Russia they were taught to quickly look for information for a solution, and if there is no such place, then Moscow State University will be the first.

On the sidelines, I continued the discussion with the author and found out that although he acknowledged the futility of combating collaboration in programming (at least in this way), he is still asking the original question. Namely, how to identify the original authors as the most intelligent, talented and hardworking representatives of the students? When I offered to give up control, and test knowledge by checking the received PR at some adequate repository, I was rightly told that it is more likely to be on the basics of the language course, and if it does, it will be more likely to test the ability to interact with the community and push PR. In a fever, I expressed the opinion that secondary specialists are trained with the help of control. It even sounded (no longer from me) that programming can be taught in technical schools (colleges, if you will), with which I strongly disagree. Coders - yes, you can learn and in technical schools, and they do not necessarily know the complex math and advanced algorithms. After all, a huge code base with many algorithms is already written and you just need to know how to use them in the right place. And yes, coders who know how to use a particular library, technology or set of technologies need significantly more than programmers. They are really faster to solve similar tasks of the same type and, therefore, more efficiently from a business point of view. But it is precisely those very same ones that the author is trying to reveal (and one of which, I am sure, he himself is), and make progress. Many of them can not get along and go through the control system and fly out of universities, because, as you know, not the smartest and strongest survive, but the most adaptable.

Accordingly, in my opinion, the university should be a place where people are taught not to coders, but to programmers. And consequently, the university does not need to strongly control the consciousness of people; they are already so motivated to study in order to gain knowledge. After all, for some reason, in the decaying west, there is no such acute problem in cheating. They just understand that if your diploma is fake, it will come to light very quickly in the process. And consequently, it is not your assessments that come to the fore, but the knowledge gained.

Preschool education


Although the conference has the phrase “high school” right in its title, there were quite a lot of reports on the developments for preschoolers. The thesis sounded as follows: it is necessary to start teaching IT earlier than at a university, and then terrible things happen: for example, one graduate learned 31 Python programs by heart for passing the exam.

One of such reports was dedicated to the PictoMir project. The product is the simplest graphical language and emulator for controlling robots. This product is currently being introduced in the Khanty-Mansi Autonomous Okrug and in several other places in Moscow and is being tested on children from the age of six. Physical robots that support this language, as I understand it, there are only two, and since, as the author put it, the project is being developed at NIISI RAS , both are military or semi-military. True, the author of the report, after the demonstration at the coffee break, presented the organizers with three children's robots from the world of PiktoMir (Vertun, taskman and pusher, if I'm not mistaken) :)

→ Source code on gitlab .

Another robot project for teaching children programming was presented. This is a UMKI project. It is being developed by another institute of the Russian Academy of Sciences, albeit by a much smaller IPLIT RAS . The project aims to create a robotic platform (typewriter) based on Arduino. Communication takes place via the ZigBee interface, so a mesh network can be organized on the basis of several machines, that is, a group of machines is a multi-agent system. The author brought to show a few machines, but I could not play with them, because it was necessary to leave on the same day.

→ Source code on github .

Student and university free projects


Alexey Novodvorsky (Chairman of the Organizing Committee of the Conference) noted that, unfortunately, we have very few projects that are being developed, supported, or initially started in the university environment. Here I agree, and in my article “Where to get a programmer,” I noted that although the university is the right place to work on open source projects, we have quite a few of them.

Two similar projects were presented at the conference - this, as you understand, Embox and the simple IDE project “Kuzya” .

In my report, I tried to compare the approaches to the development of different operating systems used for educational purposes. I came to the conclusion that Minix, which in the course of its development (version 3) came to a full-fledged open-ended project, is more interesting from the point of view of teaching students than, for example, Nachos, which can only be used as a teaching tool. I also allowed myself to call our project a success, since it continues to develop for more than eight years and is in demand in industry. I linked this success primarily with the initial focus on creating a full-fledged software product within the framework of an open source project. Naturally, I don’t say about the openness of the project, it is meant as the basis of success :)

→ Source code on github .

The project Kuzya was named after the cat of one of the developers. It is developed at the Ivan Franko National University of Lviv and is a simple (I would even say the simplest) IDE. The simplest is because it is aimed specifically at learning C / C ++. Kuzya does not even have a project file, editing is done in a single compilation file. There is an integrated graphics module.

→ Source code on github .
Description in Russian is on sourceforge .

Also two reports were presented by the students themselves, but unfortunately, they were not of very high quality. Students clearly lacked the experience of performances. The only thing I can say - the involvement of students in the opensource - the right start.

The problem of the participation of "non-programmers" in free projects


That was the name of one of the reports at the conference. The author, on the example of the problems of writing documentation in software projects, spoke about the problems of involving people who are not busy writing code. According to the author, unlike programmers, “non-programmers”, being involved in a project, cannot learn and share experiences. But I am writing this article to refute the thesis about the difficulties of "non-program" contribution to free projects. As another “non-programmatic” contribution, Stas Fomin belonesox suggested making a page on Wikipedia dedicated to this conference. He also invited students to study and leave comments on the video with technical reports (videos from this conference are also available) on 0x1.tv. So there are no problems for participation, there would be a desire! :)

PS

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


All Articles