What can you do to or with an algorithm? In other words, what is a good verb to substitute for the hyphen in "— the algorithm"?
You can learn an algorithm. Discovering classical algorithms is a large part of the Bildungsroman of a computer scientist. Sorting algorithms, graph algorithms, parsing algorithms, numerical algorithms, matrix algorithms, graphical algorithms...
You can teach an algorithm. Whether a professor or just a team leader, you explain to others why the obvious solution is not always the right one. As when I saw that someone had implemented the traversal part of a garbage collection scheme (the "mark" of mark-and-sweep) using a recursive algorithm. Recursion is a great tool, but not here: it needs a stack of unpredictable size, and garbage collection, which you trigger when you run out of space, is not precisely the moment to start wildly allocating memory. In comes the Deutsch-Schorr-Waite algorithm, which improbably (as if tightrope-walking) subverts the structure itself to find its way forth and back.
You can admire an algorithm. Many indeed are a source of wonder. The inner beauty of topological sort, Levensthein or AVL can leave no one indifferent.
You can improve an algorithm. At least you can try.
You can invent an algorithm. Small or large, ambitious or mundane, but not imagined yet by anyone. Devising a new algorithm is a sort of rite of passage in our profession. If it does prove elegant, useful and elegant, you'll get a real kick (trust me).
You can implement an algorithm. That is much of what we do in software engineering, even if as an OO guy I would immediately add "and the associated data structures".
Of late, algorithms have come to be associated with yet another verb; one that I would definitely not have envisioned when first learning about algorithms in Knuth (the book) and from Knuth (the man — who most certainly does not use foul language).
You can fuck an algorithm.
Thousands of British students marched recently to that slogan (see e.g. here). They were demonstrating against a formula (the Guardian gives the details) that decided on university admissions. The starting point for these events was a ministerial decision to select students not from their grades at exams ("A-level"), which could not take place because of Covid, but instead from their assessed performance in their schools. So far so good but the authorities decided to calibrate these results with parameters deduced from each school's past performance. Your grade is no longer your grade: if Jill and Joan both got a B, but Jill's school has been better at getting students into (say) Oxford in the past, then Jill's B is worth more than Joan's B.
The outcry was easy to predict, or should have been for a more savvy government. Students want to be judged by their own performance, not by the results of some other students they do not even know. Arguments that the sole concern was a legimitate one (an effort to compensate for possible grade inflation in some schools) ceased to be credible when it came out that on average the algorithm boosted grades from private schools by 4.7. No theoretical justification was going to be of much comfort anyway to the many students who had been admitted to the universities of their dreams on the basis of their raw grades, and after the adjustment found themselves rejected.
In the end, "Fuck the Algorithm!" worked. The government withdrew the whole scheme; it tried to lay the blame for the fiasco on the regulatory authority (Ofqual), fooling no one.
These U.K. events of August 2020 will mark a turning point in the relationship between computer science and society. Not for the revelation that our technical choices have human consequences; that is old news, even if we often pretend to ignore it. Not for the use of Information Technology as an excuse; it is as old ("Sorry, the computer does not allow that!") as IT itself. What "Fuck the Algorithm!" highlights is the massive danger of the current rush to apply machine learning to everything.
As long as we are talking marketing campaigns ("customers who bought the product you just ordered also bought ...") or image recognition, the admiring mood remains appropriate. But now, ever more often, machine learning (usually presented as "Artificial Intelligence" to sound more impressive) gets applied to decisions affecting human lives. In the US, for example, machine-learning algorithms increasingly help judges make decisions, or make the decisions themselves. Following this slippery path is crazy and unethical. It is also dangerous, as the U.K. students' reaction indicates.
Machine learning does what the name indicates: it reproduces and generalizes the dominant behaviors of the past. The algorithms have no notion of right and wrong; they just learn. When they affect societal issues, the potential for societal disaster is everywhere.
Amid all the enthusiasm generated by the elegant techniques invented by machine-learning pioneers over the last two decades, one barely encounters any serious reservation. Codes of ethics (from ACM and others) have little to contribute.
We should be careful, though. Either we get our act together and define exacting controls on the use of machine learning for matters affecting people's fates, or we will see a massive rejection of algorithmic technology, the right parts along with the wrong ones.
The British students of the year 2020's weird summer will not be the last ones to tell us to fuck the algorithm.
Bertrand Meyer is chief technology officer of Eiffel Software (Goleta, CA), professor and provost at the Schaffhausen Institute of Technology (Switzerland), and head of the software engineering lab at Innopolis University (Russia).