It hurts me a lot to watch the education crisis in our country. I experience it as a personal tragedy. What made me write this note was an incident that happened in one of the programming-related chats.

One day, a chat participant posted a photo of the theoretical problems he had been given at an interview. Among the other problems and questions were these: “How many bits are in a byte? Convert a number from decimal to hexadecimal. Count the number of bits in a number.” I was surprised by the reaction from beginner programmers:

— Ha ha ha! Where in real projects do you need to count the number of bits in a byte?
— Pffft... What kind of idiotic assignments are these, why would a frontend developer need this?

The drama unfolded the very next day. One of the chat participants asked for help with this problem:

— Save me! Help! I’m adding 0.1 and 0.2, and the result I get is not 0.3 but 0.30000000000000004!

The very people who had mocked the assignments about bits in a byte just yesterday tripped over their own ignorance today, and over their unwillingness to study the fundamental basics of how computers work.

Modern computers are discrete. Numbers are stored as integers and real numbers. Real numbers are stored in fixed-point format or in floating-point format. The main feature is that the weight of each digit is a multiple of two. For integers, that’s 2⁰, 2¹, 2², 2³, and so on. And for fractions it’s the same thing, but in the denominator: 2⁻¹, 2⁻², 2⁻³, and so on. That is, 0.5, 0.25, 0.125, and so on. If we allocate two binary digits for the fractional part, then we can represent numbers that are multiples of 0.25: 0, 0.25, 0.5, 0.75, 1, and so on. But with that kind of digit grid, you can’t represent 0.2, or 0.1, or 0.3.

And how many other courses and disciplines are ignored by today’s community of programmers? Discrete mathematics, algebra, higher mathematics, graph theory, probability theory, statistics, data structures and algorithms, object-oriented programming, database management systems, systems engineering, information and coding theory, mathematical modeling, and so on, all the way through a full four years of a bachelor’s degree.

The geopolitical crisis led to an economic crisis. The economic one led to a cultural one. The cultural one led to an education crisis. The education crisis led to a professional one. The professional one is leading to an industrial crisis.