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



    I visited here in the glorious city of Pereslavl-Zalessky at the 13th conference “Open Software in Higher Education” , organized by Basalt SPO and IPS RAS . And it seemed to me that at this conference questions were raised that might be of interest to the readers of Habr. Among them:
    • How to build a more effective higher education system?
    • How, and is it worth it at all, to control cheating when learning programming?
    • Is it possible to contribute to an open project without changing its source code?


    I would especially like to single out two reports, or rather, the problems that were raised in them.
    • “Errors in the state supervision of higher education is the main problem of higher education in Russia” (author S. M. Abramov)
    • “How did I check copy-paste for a special course on Python3, and what came of it” (G.V. Kuryachy)

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

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


    In this report, the author outlined the problems of the inefficiency of current education. A possible reason for this is bureaucracy. About the problem of bureaucratization I won’t spread much. everyone connected with the educational process, one way or another, faced with it. The author expressed the opinion that the main problem of education is that the process is controlled, not the result. That is, formal requirements are imposed on the university, and they are verified. The real value of education is the demand for its graduates. The author several times referred to such controlled parameters as illumination and room temperature. The latter, perhaps, was a consequence of the not very high temperature in the room where the conference was held. The speaker noted that formal requirements do not fit, for example,

    The author proposed an approach that, in his opinion, allows improving the quality of education. The approach is to evaluate universities by the demand for its graduates. Well, he suggested that the demand for graduates be assessed by a somewhat controversial, according to many, criterion - the white salary of graduates in the Russian Federation for three years after graduation from the university, that is, according to personal income tax-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 are selected on the basis that graduates replenish the budget, some of which will be used to provide education for the next generations. He proposed only two amendments: regionalization (salary rationing based on the average for the region) and the importance coefficient for the state (since there are significant sectors with low salaries).

    Many did not like the evaluation criterion, since everything, in fact, came down to money. In my opinion, the proposal, at least, deserves attention and discussion. Since if the state pays from the budget, I want to see how effective investments are, that is, how effectively education in this university affects budget replenishment.

    What personally aroused my skepticism was the question of the author who needs to maintain the current inefficient system. The author is sincerely confident that his proposal will free smart and educated officials to perform tasks that are more useful for society. By the way, I also have no doubt in their mental abilities and education.

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


    The author taught a special course on teaching the Python language. In the learning process, students were offered learning 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 tasks, tasks were accepted online and, of course, there was a problem of plagiarism or, simply, cheating. The author developed a program in which he brought the programs to a “canonical” uniform form. In addition to formatting PEP8, he also changed the names of variables in the internal parsing tree and received an algorithm snapshot rather than a program snapshot. According to this cast, it was possible to compile clusters of similar solutions, the original author of this cluster is the first to pass.

    When checking the utility showed very good results, but there were many false positives. The author even had to introduce a rule that a cluster of similar solutions with a dimension of more than 5 elements was false. The number 5 was taken by the author for the reasons that it was unlikely that people familiar with a group of more than 5 people could enroll in the course. And still there were a lot of false positives, and I had to look at all the solutions for possible plagiarism “eyes”. As a result, the author asked himself whether it is correct to try to lower it under conditions of strong “informational connectivity”. For example, the essence of opensource is just a collaboration, and indeed, 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 search for information to solve,

    On the sidelines, I continued the discussion with the author and found out that although he recognized the futility of the fight against collaboration in programming (at least in this way), he still asks the original question. Namely, how to identify the original authors as the most intelligent, talented and hardworking students? When I proposed to give up control, and to test knowledge by checking the accepted PR in some adequate repository, I was rightly answered that the course on the basics of the language would not work out, but if it did, it would rather be a test of the ability to interact with the community and push through PR. I expressed a fever that with the help of control they train secondary specialists. It even sounded (not from me anymore) that programming can also be taught in technical schools (colleges, if you want), with which I strongly disagree. Coders - yes, you can learn in technical schools, and they don’t need to know complex mathematics and advanced algorithms. After all, a huge code base with many algorithms has already been written and you just need to know how to use them in the right place. And yes, coders who know how to use one or another library, technology or set of technologies need much more than programmers. They really solve similar problems of the same type faster and, therefore, are more effective from a business point of view. But it is precisely the very same ones whom the author is trying to identify (and one of which, I am sure, he himself is), and drive progress. Many of them cannot get along and go through the control system and fly out of universities, because, as you know, it’s not the smartest and the strongest that survive, but the most adaptable. Coders - yes, you can learn in technical schools, and they don’t need to know complex mathematics and advanced algorithms. After all, a huge code base with many algorithms has already been written and you just need to know how to use them in the right place. And yes, coders who know how to use one or another library, technology or set of technologies need much more than programmers. They really solve similar problems of the same type faster and, therefore, are more effective from a business point of view. But it is precisely the very same ones whom the author is trying to identify (and one of which, I am sure, he himself is), and drive progress. Many of them cannot get along and go through the control system and fly out of universities, because, as you know, it’s not the smartest and the strongest that survive, but the most adaptable. Coders - yes, you can learn in technical schools, and they don’t need to know complex mathematics and advanced algorithms. After all, a huge code base with many algorithms has already been written and you just need to know how to use them in the right place. And yes, coders who know how to use one or another library, technology or set of technologies need much more than programmers. They really solve similar problems of the same type faster and, therefore, are more effective from a business point of view. But it is precisely the very same ones whom the author is trying to identify (and one of which, I am sure, he himself is), and drive progress. Many of them cannot get along and go through the control system and fly out of universities, because, as you know, it’s not the smartest and the strongest that survive, but the most adaptable. and they don’t need to know complex maths and advanced algorithms. After all, a huge code base with many algorithms has already been written and you just need to know how to use them in the right place. And yes, coders who know how to use one or another library, technology or set of technologies need much more than programmers. They really solve similar problems of the same type faster and, therefore, are more effective from a business point of view. But it is precisely the very same ones whom the author is trying to identify (and one of which, I am sure, he himself is), and drive progress. Many of them cannot get along and go through the control system and fly out of universities, because, as you know, it’s not the smartest and the strongest that survive, but the most adaptable. and they don’t need to know complex maths and advanced algorithms. After all, a huge code base with many algorithms has already been written and you just need to know how to use them in the right place. And yes, coders who know how to use one or another library, technology or set of technologies need much more than programmers. They really solve similar problems of the same type faster and, therefore, are more effective from a business point of view. But it is precisely the very same ones whom the author is trying to identify (and one of which, I am sure, he himself is), and drive progress. Many of them cannot get along and go through the control system and fly out of universities, because, as you know, it’s not the smartest and the strongest that survive, but the most adaptable. After all, a huge code base with many algorithms has already been written and you just need to know how to use them in the right place. And yes, coders who know how to use one or another library, technology or set of technologies need much more than programmers. They really solve similar problems of the same type faster and, therefore, are more effective from a business point of view. But it is precisely the very same ones whom the author is trying to identify (and one of which, I am sure, he himself is), and drive progress. Many of them cannot get along and go through the control system and fly out of universities, because, as you know, it’s not the smartest and the strongest that survive, but the most adaptable. After all, a huge code base with many algorithms has already been written and you just need to know how to use them in the right place. And yes, coders who know how to use one or another library, technology or set of technologies need much more than programmers. They really solve similar problems of the same type faster and, therefore, are more effective from a business point of view. But it is precisely the very same ones whom the author is trying to identify (and one of which, I am sure, he himself is), and drive progress. Many of them cannot get along and go through the control system and fly out of universities, because, as you know, it’s not the smartest and the strongest that survive, but the most adaptable. technology or a set of technologies, you need significantly more than programmers. They really solve similar problems of the same type faster and, therefore, are more effective from a business point of view. But it is precisely the very same ones whom the author is trying to identify (and one of which, I am sure, he himself is), and drive progress. Many of them cannot get along and go through the control system and fly out of universities, because, as you know, it’s not the smartest and the strongest that survive, but the most adaptable. technology or a set of technologies, you need significantly more than programmers. They really solve similar problems of the same type faster and, therefore, are more effective from a business point of view. But it is precisely the very same ones whom the author is trying to identify (and one of which, I am sure, he himself is), and drive progress. Many of them cannot get along and go through the control system and fly out of universities, because, as you know, it’s not the smartest and the strongest that survive, but the most adaptable.

    Accordingly, in my opinion, a university should be a place in which they teach not programmers, but programmers. And therefore, the university does not need to tightly control the consciousness of people, they are already 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 therefore, not your assessments, but the knowledge gained, come to the fore.

    Preschool education


    Although the conference has the phrase “higher school” right in its title, there were quite a few reports on developments for preschoolers. The thesis was as follows: you need to start teaching IT earlier than at a university, or terrible things happen: for example, one graduate memorized 31 Python programs by heart to pass an exam.

    One of these reports was dedicated to the PictoMir project . The product is a simple graphical language and an 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. As far as I understand, there are only two physical robots supporting this language, and since, as the author put it, the project is being developed at the NIISI RAS, both robots in military or semi-military performance. True, the author of the report, after a demonstration on a coffee break, presented the organizers with three children's robots from the world of PictoMir (a pinworm, a puller and a pusher, if I'm not mistaken) :)

    → The source code for gitlab .

    Another robotic project for teaching children programming was presented. This is a UMKI project . Developed by another institute of the Russian Academy of Sciences, albeit much smaller in size IPLIT RAS. The project aims to create a robotic platform (machine) based on Arduino. Communication is carried out via the ZigBee interface, so on the basis of several machines you can organize a mesh network, that is, a group of machines is a multi-agent system. The author brought to show several cars, but I could not play with them, because I had to leave that day.

    → Source code on github .

    Student and university free projects


    Alexey Novodvorsky (Chairman of the Conference Organizing Committee) noted that, unfortunately, we have very few projects that are 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 few of them.

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

    In my report, I tried to compare approaches to the development of different OSs 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 project, is more interesting in terms of student learning than, for example, Nachos, which can only be used as a teaching tool. I also allowed myself to call our project successful, since it continues to develop for more than eight years and is in demand in the industry. I linked this success primarily with the initial orientation to creating a full-fledged software product as part of an open source project. Naturally, I'm not talking about the openness of the project, it is implied as the basis for success :)

    → The source code on github .

    The Kuzya project was named after the cat of one of the developers. It is being developed at the Ivan Franko National University of Lviv and is a simple (I would even say the simplest) IDE. The simplest 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 .

    Two reports were also presented by the students themselves, but unfortunately they were not of very high quality. Students clearly did not have the experience of speaking. The only thing I can say is that involving students in opensource is the right thing to do.

    The problem of the participation of “non-programmers” in free projects


    That is exactly the name of one of the lectures at the conference. The author on the example of problems of writing documentation in software projects talked 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 by writing this article, I refute the thesis about the difficulties of a “non-programmatic” contribution to free projects. As another “non-programmatic” contribution, Stas Fomin belonesox suggested making a wikipedia page dedicated to this conference. He suggested that students study and leave comments on videos 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

    Also popular now: