<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin-top:0in;
        margin-right:0in;
        margin-bottom:8.0pt;
        margin-left:0in;
        line-height:106%;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Hello SIGCIS,<o:p></o:p></p><p class=MsoNormal>A fascinating discussion. I’d like to pull a few points together and a few of my own.<o:p></o:p></p><p class=MsoNormal>An algorithm is indeed a description of a step-by-step way of accomplishing something. It differs from program code in not being tied to a specific computer language, and leaving out implementational detail relevant to specific computing platforms. It differs from a specification in being about HOW to do something, not just about WHAT needs to be done.<o:p></o:p></p><p class=MsoNormal>To answer Kimon’s most recent point first. It is entirely reasonable to suggest that alphabetical ordering may, in Winner’s terms, be a technology with politics. See, for example, Bowker and Star’s book Sorting Things Out. And building that social system into computers magnifies its power and makes it harder to change. But we should not blame sort algorithms for this. There are many sort algorithms – early on sorting efficiently from tape was a hugely important practical problem and the Quicksort algorithm was seen as a major achievement. But they all produced the same results, differing in their efficiency with particular kinds of input, memory needs, and so on. In other words, all the sort algorithms had the same specification and did the same job, but they did it in different ways. <o:p></o:p></p><p class=MsoNormal>In this case the potentially oppressive alphabetical order is not in the algorithm at all. It’s built into the computer hardware as part of EBCDIC or ASCI, or more recently into the OS or a library as part of Unicode. So pointing the finger at Tony Hoare (creator of Quicksort) for any oppressive impact of alphabetical order would be misleading. In this case, separating out the algorithm from the rest of the “blob” helps.<o:p></o:p></p><p class=MsoNormal>As Alexandre pointed out, when we talk about “the Facebook algorithm” this is grouping together the collective functioning of what must be hundreds or thousands of algorithms, implemented as programs, running on hardware and responding to vast amounts of data and many configurable parameters. So the issue is ignoring all the infrastructure, executable code, and materiality behind the system, and also missing the hugely complex interactions of all those pieces. In a way, it is privileging the history of abstract ideas over the history of technology.<o:p></o:p></p><p class=MsoNormal>Another point: in the case of AI systems the problem may not be the algorithm at all, but the data used to train it. When Google makes a racist autocomplete or an AI chatbot starts talking like a Nazi the more direct cause is the racism of Internet users who type queries or post tweets. The backpropagation algorithm certainly has specific affordances which may make it irresponsible to use it in such circumstances, but again the situation is complicated and calling everything “the algorithm” obscures more than it reveals. <o:p></o:p></p><p class=MsoNormal>Likewise, the devastating consequences of the system Facebook uses to rank items in its newsfeed surely has more to do with parameters set by Facebook managers and data scientists as it does with the algorithms crafted by programmers. There must be switches set to weight different characteristics, and the decision to set parameters that weight strong emotional reactions is likely not in the algorithm itself but in a matrix of weights processed by the algorithm. Just pragmatically, you wouldn’t want to have to throw the code away and change the algorithm every time you want to try out a different weighting scheme.<o:p></o:p></p><p class=MsoNormal>Of course Facebook does not want us to know anything about what is going on in its black box, so that’s deliberate. I loved the point that very early publication of Google’s PageRank algorithm helped to give the misconception that it continues to rely on a single algorithm.<o:p></o:p></p><p class=MsoNormal>Another important point is that you can’t understand everything an algorithm will do by reading it. The attempt to predict dynamic behavior from static code is one of the central concerns of computer science, but in many situations, particularly when multiple programs are interacting with each other and with data the results are unpredictable. Facebook surely has huge data science teams running constant experiments. I do not want to let programmers off the hook for their complicity in a truly reprehensible company, but we must also recognize that not all the emergent properties of code are legible to its creators.<o:p></o:p></p><p class=MsoNormal style='text-align:justify'>A final point. A couple of years ago I found myself in conversation with a media scholar who had just written a book about the history of algorithms and their nasty effects. One of his case studies was what he called “the Black-Scholes algorithm” (used to price derivatives). I pointed out that this is a formula, not an algorithm. A mathematical formula is, in the terms I gave in the first paragraph, a specification. It defines a relationship between several terms. To calculate the value of one of the terms when you have the others you need an algorithm: a step-by-step method. <o:p></o:p></p><p class=MsoNormal style='text-align:justify'>The business of coming up with a good algorithm to do that computation is not trivial. Apparently simple things like differential equations have given rise to huge fields devising what applied mathematicians call “methods” but computer scientists would call “algorithms.” (That is particularly relevant here because Black-Scholes relies on solving a partial differential equation). Many work well under some circumstances but not others. They will even produce different answers, because numerical solutions are often approximate. Implementing those methods is also a complex process, particularly in code that is portable. The entire field of numerical analysis exists only because equations are not algorithms. Also the entire field of computational complexity. Problems of optimization are trivial to specify but enormously hard to solve. Public key encryption only works because equations are not algorithms and screening all possible solutions is infeasible (while verifying a solution is easy).<o:p></o:p></p><p class=MsoNormal style='text-align:justify'>I was, frankly, a little shocked that somebody who had written a book about algorithms would seek to erase that vital distinction between algorithms and equations. His response was that he has his own definition of algorithm and did not care what computer scientists thought an algorithm was. According to his definition, Black-Scholes was an algorithm. (I was reminded of Lewis Carrol: “’When I use a word,’ Humpty Dumpty said in rather a scornful tone, ‘it means just what I choose it to mean—neither more nor less’). My view is that algorithms matter hugely and can indeed embed social assumptions, but that we will never be able to understand how they matter if we call everything an algorithm. Code, infrastructures, equations, platforms, data, and infrastructures matter too. If we each invent our own definitions of what those things are then we will never be able to communicate with each other, or with the people who have the power to change them.<o:p></o:p></p><p class=MsoNormal style='text-align:justify'>Best wishes,<o:p></o:p></p><p class=MsoNormal style='text-align:justify'>Tom<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>