Contest-Oriented Computer Education Is Not Real CS
In my view, there is no inherently wrong time to begin studying computer science. It depends far more on the propulsion of personal interest, and on a grounded, patient act of inquiry. Why, then, does learning computing at a supposedly “inappropriate time” so often leave the impression that one can “only solve problems” and has “no imagination”? I would argue that this is, first of all, the responsibility of the educational and evaluative system.
Computer education in China, especially before university, is highly contest-oriented in the general sense; one might even say that before university, the only people genuinely recognized as “studying computing” are participants in informatics competitions. The labeling of “algorithms” produced by this contest orientation continues to spread everywhere afterward. If the economic logic behind the envied status of algorithm positions lies in the high salaries generated by scarcity, then from another angle, there is also an elitist tendency sedimented by algorithm competitions. The shadow of the “contempt chain” is mottled and uneven, yet tacitly understood, sharply visible.
In such an environment, contests become almost the only target into which educational energy can be poured, and algorithm problems together with fierce competition become difficult to avoid. Yet the abilities trained by algorithm competitions do not necessarily migrate into engineering ability: algorithm contests pursue proximity to theoretical limits, while engineering places greater value on stability, extensibility, reusability, and similar measures. As I once joked:
“Code with ultimate performance is only a legend from the mythic age; a large body of usable code is the true path to victory!”
I will not attempt a full proof here, given the limits of space, and will only use a simple example: the segment tree is a basic structure in algorithm competitions, yet it is hard to find in the main text of Introduction to Algorithms; the red-black tree, by contrast, is so common that the C++ standard library directly provides support for it, and yet the students around me in the past were not necessarily more familiar with it than with segment trees. I have no intention of judging the culture of the competition circle, because I am not especially familiar with it. Still, much as in our analyses of the gaokao and graduate entrance examinations, once there exists some evaluative criterion, some fixed track, it is almost inevitable that an entire knowledge system will be invented around it. Starting from there, one’s metacognition of computer science naturally diverges by a great distance.
Seen this way, the claim that one is “not suited to learn computing” in childhood is not caused by the nature of computer science itself. Rather, China has not provided a sufficiently universal scheme for computer education. This backwardness is visible everywhere: in mathematics education’s rejection of advanced computational tools, for instance, and in the prejudice against the internet that remained clamorous until before the pandemic. For the individual, the solution is also exceedingly simple, yet difficult to carry out: as long as one does not think within this framework, one will naturally avoid the problems manufactured by this framework.
The autodidactic tradition in computer science has always been prominent; there was never any rule that knowledge must be obtained from a particular place. As The Scholars puts it, “credentials trap people, and the worthy and heroic sigh alike”: all kinds of “credentials” are the treasure in the problem-solver’s palm, but they are also stumbling blocks for those with larger ambitions. Once one bids farewell to these strange artificial limits, a wider sky and sea are not an extravagance.
Would it not also be good to become a small bird flying freely through computer science?