What’s wrong with modern computer science teaching

Hello, Habr! My name is Anna Aghabekyan, I am a mentor and author of courses in directions “Python Automation Tester“(QAP testing) and” Fullstack JavaScript developer “in SkillFactory, as well as teaching physics and computer science at the Lyceum. In parallel with teaching, I conduct scientific work on education problems, and on its basis I decided to make an article for Habr, since , in my opinion, the problem of quality education in the field of informatics and IT is now very acute, but it remains uncovered. As a teacher, I see that now the process of development of educational organizations lags behind the requirements of the IT sphere. I would like to share with you my vision of this problem and possible solutions.


One of the main problems of teaching computer science and information technology in secondary school is the “life cycle” of a textbook, which is completely inconsistent with the constantly accelerating “life cycle” of technology.

Some textbooks, the use of which in schools is recommended, is simply a shame to give into the hands of students, so archaic and funny for a modern child is what is written in them. This is especially true for the software products or operating systems described in these textbooks. In the curriculum compiled from these textbooks, there is practically no time left to consider real or promising technologies and trends in the development of ICT and programming technologies. Although they should become the basis for in-depth study in computer science lessons.

Often in modern schools, teaching computer science takes place predominantly at the user level. Children are taught to make simple presentations, edit images, create documents, work in spreadsheets, and come up with strong passwords. Lessons on “studying the device of a computer” or “creating a picture in the Paint editor” turn into a meaningless exercise, give nothing to the mind and generally discourage the student, lay a negative attitude towards the subject and school activities in general, working to reduce motivation for meaningful learning activities …

I would like to write that things are going better in higher education, but no, there are the same problems – the outdated state standards of education and the lame organization of the educational process. The most telling example of the obsolescence of educational programs is the ancient programming languages.

Programming languages ​​used in educational institutions

Once the most popular programming languages ​​in the schools of the world were BASIC and Pascal. BASIC has always been considered the easiest programming language, and Pascal is the most suitable language for teaching programming. But now this is not the case. Yes, BASIC is simple. But it was created at a time when humanity did not have any experience in creating computer systems, and is based on outdated and unjustified principles. Actually, there is no fundamental holistic idea at the heart of BASIC.

Evolution of programming languages
Evolution of programming languages

If you ask children what language they learn in computer science, the rating of the answers will be as follows:

  • Pascal;

  • BASIC;

  • Idol;

  • Fortran;

  • Algorithmic language.

  • Do you mean english?

As we can see, children are given knowledge of languages ​​that are not currently used in professional development. From the point of view of personnel, this is probably correct, because there is no need to retrain teachers and rewrite textbooks. But neither Pascal, nor BASIC, nor block diagrams are now needed in professional programming – the development idea has stepped forward a long time ago.

Pascal only helps to teach algorithms, but it is extremely difficult to write modern programs in it, and here’s why:

  • there is no tool for quickly creating a program interface;

  • weak graphic part, which can draw only the simplest objects;

  • restrictions on the size of the used memory in variables and loops;

  • no built-in support for web services and pages;

  • Pascal does not know how to work with modern databases, exchange protocols, cloud storage and services.

As an alternative for learning, you can consider a whole “ecosystem” of programming languages ​​that are constantly evolving, splitting and merging. They must be selected according to the following criteria:

  1. Cleanliness and clarity of the code, readability of the code.

  2. The purity and integrity of the paradigm underlying the language.

  3. Versatility and flexibility, the ability to write complex programs concisely and beautifully.

  4. Simplicity of syntax, transparency of interpretation of language constructions.

  5. The presence of standard libraries and means of integrating projects with each other and with other systems and technologies. Python is quite consistent with the sound criteria. So why not use it as an educational baseline?

According to the state standard requirements for the subject results of mastering the basic course of computer science, “the student must be able to understand programs in the chosen universal algorithmic language and master the techniques of writing a program to solve a standard problem using basic structures and debugging such programs.”

A universal algorithmic language should be understood as any imperative programming language, which does not contradict the use of the Python language. Python has standard algorithmic constructs and has a flexible program debugging system.

Thus, the teacher has the right to choose the Python programming language as a means of teaching the basics of algorithms and programming. For clarity, let’s compare Python with one of the languages ​​widely used now in schools and universities.

Comparison of PL used in teaching programming

Let’s analyze the main distinguishing features of the Python programming language and compare with Pascal.

1. Simple syntax and low entry threshold.

Python instead of punctuation marks or keywords (in Pascal, these are “begin” and “end”) uses indentation to indicate block execution. Programs written on a single line or with other structural irregularities cannot be executed in Python. This feature will reduce the size of the code and increase the readability of the program. Python syntax will teach students to write “beautiful” code, which will improve the writing and understanding of the code. So, for example, the loop records in Pascal and Python are different (table below).

Comparison of loop syntax with precondition in Pascal and Python

Pascal

Python

while s + n <150 do

begin

s: = s + 15;

n: = n – 5

end;

writeln (n)

while s + n <150:

s = s + 15

n = n – 5

print (n)

2. Dynamic typing.

Python is dynamically typed. This means that the variable is associated with the type at the time of value assignment, which means there is no need to declare the variable in advance. This simplifies the understanding of data types and resolves confusion in the various lengths of integer and real, string and character types, and also reduces the size of the code (table below).

Comparison of variable declaration syntax in Pascal and Python

Pascal

Python

var s, n: integer;

begin

s: = 0;

n: = 75;

end.

s = 0

n = 75

3. Concise and elegant code.

One of the obvious advantages of the language. Python – compactness of program code. For example, the solution to a problem – to swap the values ​​of two variables – is solved in Pascal in three operators, in Python – in one line (table below):

Comparison of variable reassignment syntax in Pascal and Python

Pascal

Python

c: = a;

a: = b;

b: = c;

a, b = b, a

4. High-level data types.

Python, being a very high-level language, has high-level built-in data types such as dynamic arrays (lists) and dictionaries.

There are no arrays in the Python language in the usual sense of the term, but there are lists that can be considered an extension of the concept of “dynamic array”. We can work separately with each element of the list, or we can perform operations with the entire list, for example, add and remove elements, copy parts of the list, sort. Consider an example of filling an array with the same values ​​(table below). Python copes with this task in one line by duplicating an array of one zero.

Comparison of syntax for filling an array in Pascal and Python

Pascal

Python

const n = 100;

var a: array[0..n – 1] of integer;

for i: = 0 to n – 1 do

a[i] : = 0;

n = 100

a = [0] * n

5. Wide application.

It is used for the development of web applications, games, it is convenient for automation, mathematical calculations, machine learning, in the field of the Internet of Things. There is an implementation called Micro Python, optimized for running on microcontrollers (you can write instructions, the logic of device interaction, organize communication, implement a smart home).

Based on these differences, we can conclude that the syntax and structure of the main algorithmic constructs in Python are in many ways similar to Pascal. However, they are improved, the code has become cleaner and shorter, in addition, Python supports modern data types and the necessary functions to work with them. This makes the language suitable for first acquaintance with programming, especially for schoolchildren and students, and easy to learn by the teacher himself.

So how can you fix everything?

In the case of the school, one of the solutions could be the modification of the subject “Informatics” itself into a new discipline called “Informatics and IT-technologies”, where these are not lessons on using an office suite, but the study of the principles of algorithms, computational thinking – those foundations that are not change over the years.

Of course, for such an “evolutionary” leap, it is necessary to improve the qualifications of teachers. If in terms of translation from one number system to another or drawing up flowcharts everything is very static, then new technologies, trends, programming languages ​​and their paradigms are changing very quickly, and so that the teacher can give interesting examples and compose a lesson with high quality, he must know a lot of things.

For example, if the curriculum only teaches Pascal, the teacher must understand other modern, industrial languages, especially if there is a student in the class who is interested in programming. Otherwise, a situation is created, as now, when an already middle-aged teacher monotonously submits information about what is needed in order to raise x to the power of 14 in Turbo Pascal.

And, of course, we cannot do without changes in the local bodies of the Ministry of Education and the school itself. They must have the mechanisms and resources to send a teacher for additional training, including private paid courses, even abroad. Also, do not forget about books and other sources of new, useful information. It is necessary to give more freedom to enthusiastic teachers who want, for example, to give their students Python or C ++, and not to impose Pascal, as in the new textbooks for grades 10-11, where according to the Federal State Educational Standards there is only the mentioned language. Unfortunately, in the current realities of Russia, all this looks like a utopia. Although there will still be developers using outdated languages, it should be borne in mind that in the near future they will be replaced by more common ones.

Another means of solving problems can be the development of a modern interactive online textbook, in which knowledge will be as relevant and compressed as possible and which will be regularly updated (such as, for example, project documentation).

I believe that rethinking approaches to IT education will make the bright digital better, regardless of whether our children want to start their careers in IT. Whatever the future, it is becoming more and more apparent that programming – the ability to read and write code in several common languages ​​- is becoming the new literacy.

find outhow to level up in other specialties or master them from scratch:

Other professions and courses

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *