Some thoughts for Ada Lovelace Day

This Scientific American article tells the tale of one of the genesis stories of complexity science, this one from 1952, describing what, until relatively recently, was known as the Fermi-Pasta-Ulam (FPU) problem (or ‘paradox’, though it is not in fact a paradox). It is now more commonly known as the Fermi-Pasta-Ulam-Tsingdou (FPUT) problem, in recognition of the fact that it was only discovered thanks to the extraordinary work of Mary Tsingou, who wrote the programs that revealed what, to Fermi, Pasta, and Ulam, was a very unexpected result. 

The team was attempting to simulate what happens to energy as it moves around atoms connected by chemical bonds. This is a classic non-linear problem that cannot be observed directly, and that cannot be solved by conventional reductive means (notwithstanding recent work that reveals statistical patterns in complex systems like urban travel patterns). It has to be implemented as a simulation in order to see what happens. Fermi, Pasta, and Ulam thought that, with enough iterations, it would reveal itself to be ergodic: that, given long enough, every state of a given energy of the system would be visited an equal number of times. Instead, thanks to Mary Tsingou’s work, they found that it was non-ergodic. Weird stuff happened, that could not be predicted. It was chaotic.

The discovery was, in fact, accidental. Initial results had shown the expected regularities then, one day, they left the program running for longer than usual and, instead of the recurring periodic patterns seen initially, it suddenly went haywire. It wasn’t a bug in the code. It was a phase transition, perhaps the first unequivocal demonstration of deterministic chaos. Though Fermi died and the paper was not actually published until nearly a decade later, it is hard to understate the importance of this ‘accidental’ discovery that deterministic systems are not necessarily ergodic. As Stuart Kauffman puts it, ‘non-ergodicity gives us history‘. Weather is non-ergodic. Evolution is non-ergodic. Learning is non-ergodic. We are non-ergodic. The universe is non-ergodic. Though there are other strands to the story that predate this work, more than anything else this marks the birth of a whole new kind of science – the science of complexity – that seeks to deal with the 90% or more of phenomena that matter to us, and that reductive science cannot begin to handle. 

Here’s a bit of Tsingou’s work on the program, written for the MANIAC computer:

Mary Tsingou's original algorithm design, drawn in freehand

It was not until 2008 that Tsingou’s contribution was fully recognized. In the original paper she was thanked in a footnote but not acknowledged as a co-author. It is possible that, had it been published right away she might have received proper credit. However, it is at least as possible that she might not. The reasons for this are a mix of endemic sexism, and (relatedly) the low esteem accorded to computation at the time.

The relationship between these two factors runs deep.  Historically, the word ‘computer’ originally referred to a job title.  As scientists in the 19th Century amassed vast amounts of data that needed processing, there was far too much for an individual to handle. They figured out that tasks could be broken up into smaller pieces and farmed out in parallel to humans who could do the necessary rote arithmetic.  Because women were much cheaper to hire, and computing was seen as a relatively unskilled (albeit very gruelling and cognitively demanding) role, computing therefore became a predominantly female occupation. From the 19th Century onwards into the mid 20th Century, all-women teams worked on astronomical data, artillery trajectories, and similar tasks, often performing extremely complex mathematical calculations requiring great precision and endurance, always for far less pay than they deserved or that a man would receive. Computers were victims of systematic gender discrimination from the very beginning. 

The FPUT problem, however, is one that doesn’t lend itself to chunking and parallel computation: the output of one iteration of the computation is needed before you can calculate the next. Farming it out to human computers simply wouldn’t work. For work of this kind, you have to have a machine or it would take decades to come up with a solution.

In the first decade or so after digital computers were invented significant mathematical skill was needed to operate them. Because of their existing exploitation as human computers, there was, luckily enough, a large workforce of women with advanced math skills whose manual work was being obsoleted at the same time, so women played a significant role in the dawn of the industry. Mary Tsingou was not alone in making great contributions to the field.

By the 1970s that had changed a lot, not in a good way, but numbers slowly grew again until around the mid-1980s (a terrible decade in so many ways) when things abruptly changed for the worse.

graph showing the huge drop in women in IT from the 1980s onwards

Whether this was due to armies of parents buying PCs for their (male) children thanks to aggressive marketing to that sector, or highly selective media coverage, or the increasing recognition of the value of computing skills in the job market reinforcing traditional gender disparities, or something else entirely (it is in fact complex, with vast self-reinforcing feedback loops all the way down the line), the end result was a massive fall in women in the field. Today, less than 17% of students of computer science are women, while the representation of women in most other scientific and technical fields has grown considerably.

There’s a weirder problem at work here, though, because (roughly – this is an educated guess) less than 1% of computer science graduates ever wind up doing any computer science, unless they choose a career in academia (in which case the figure rises to very low single figures), and very few of them ever do more mathematics than an average greengrocer. What we teach in universities has wildly diverged from the skills that are actually needed in most computing occupations at an even sharper rate than the decline of women in the trade. We continue to teach it in ways that would have made sense in the 1950s, when it could not be done without a deep understanding of mathematics and the science behind digital computation, even though neither of these skills has much if any use at all for more than a minute fraction of our students when they get out into the real world. Sure, we have broadened our curriculum to include many other aspects of the field, but we don’t let students study them unless they also learn the (largely unnecessary in most occupations) science and math (a subject that suffers even lower rates of non-male participation than computing). Thinking of modern computing as a branch of mathematics is a bit like treating poetry as a branch of linguistics or grammar, and thinking of modern computing as a science is a bit like treating painting as a branch of chemistry. It’s not so much that women have left computing but that computing – as a taught subject – has left women. 

Computing professionals are creative problem solvers, designers, architects, managers, musicians, writers, networkers, business people, artists, social organizers, builders, makers, teachers, or dreamers. The main thing that they share in common is that they work with computers. Some of them are programmers. A few (mostly those involved in designing machines and compilers) do real computer science. A few more do math, though rarely at more than middle school level, unless they are working on the cutting edge of a few areas like graphics, AI, or data science (in which case the libraries etc that would render it unnecessary have not yet been invented).  The vast majority of computing professionals are using the outputs of this small elite’s work, not reinventing it. It it not surprising that there is enormous diversity in the field of computing because computers are universal machines, universal media, and universal environments, so they encompass the bulk of human endeavour. That’s what makes them so much fun. If you are a computing professional you can work with anyone, and you can get involved in anything that involves computers, which is to say almost everything. And they are quite interesting in and of themselves, partly because they straddle so many boundaries, and ideas and tools from one area can spark ideas and spawn tools in another.

If you consider the uses of computer applications in many fields, from architecture or design to medicine or media to art or music, there is a far more equal gender distribution. Computing is embedded almost everywhere, and it mostly demands very different skills in each of its uses. There are some consistent gaps that computing students could fill or, better, that computing profs could teach in the context they are used. Better use could be made of computers across the board with just a little programming or other technical skills. Unfortunately, those who create, maintain, and manage computers and their applications tend to mainly come out of computer science programs (at least in North America and some other parts of the world) so many are ill prepared for participating in all that richness, and computing profs tend to stick with teaching in computer science programs so the rest of the world has to figure out things they could help with for themselves.

I think it is about time that we relegated computer science to a minor (not unimportant) stream and got back into the real world – the one with women in it. There’s still a pressing need to bring more women into that minor stream: we need inspirations like Mary Tsingou, we could do worse than preferentially hiring more non-male professors, and we desperately need to shift the discriminatory culture surrounding (especially) mathematics but, if we can at least teach in a way that better represents the richness and diversity of the computing profession itself, it would be a good start.

Originally posted at:

Incarceration in Real Numbers

This is stunning, both in terms of content and in terms of its presentation.

The content is depressingly familiar – the fact that the US incarcerates (in real numbers and as a percentage of population) vastly more people than any other country in the world, the fact that it really likes to do so to visible minorities in particular, and the fact that the system is shockingly corrupt at every level – but the detail is deeply disturbing. I was particularly amazed to learn that around 2% of those vast numbers of incarcerated Americans have actually had a trial. It provides lots of effective comparisons (with other countries, with different demographics, between different demographics, etc) that provide a good sense of the scale of the problem.

What makes this so powerful, though, is the brilliant, JavaScript-powered, interactive presentation. This is one extraordinarily long web page that shows individual images (in symbol form) of all 2.3 million incarcerated Americans, including a count of where you are now to put this into context. To read it, you have to keep scrolling. Keep scrolling, even if you get tired: it’s worth it. It’s particularly effective on a tablet, and less likely to lead to RSI. Some ingenious (but not at all complicated) coding brings phrases, infographics, statistics, and the occasional interactive element into view along the way, hovering for a while whilst you scroll, or becoming part of what you see as you scroll. You control this – you can slow down, go back, pause, and interact with much of the content as it appears. Watch out for some brilliant ways of representing proportions of population, showing graphs at their true scale, and emphasizing agency by showing the likely effects of different interventions.

The experience is deeply visceral – it’s an engagement with the body, not just the eye and brain.  The physical act of scrolling repeatedly hammers home what the numbers actually mean, and the fact that you play such an active role in revealing the content makes it much more impactful than it would be were it simply presented as text and figures, or hyperlinks. I’ve not seen this narrative form used in such a polished, well-integrated way before. This is a true digitally native artwork. The general principle is not dissimilar to that of most conventional e-learning content of the simplest, most mundane next-previous-slide variety. In fact it’s simpler, in many ways. The experience, though, is startlingly different.

It’s quite inspiring. I want to explore this kind of approach in my own teaching, though I don’t know how often I could use it before the effect gets stale, there may be some accessibility issues, and, if it were used in a course context as a means of sharing knowledge, it could easily become as over-controlling as a lecture. That said, it’s a brilliant way to make a point, far more powerfully than a PowerPoint, and  more engagingly than text, images, or video alone. It could be very useful. At the very least, it might provide a little inspiration for my students seeking ideas for using JavaScript on their sites.

Originally posted at:

Turns out the STEM ‘gender gap’ isn’t a gap at all

Grace Hopper and Univac, image from least in Ontario, it seems that there are about as many women as men taking STEM programs at undergraduate level. This represents a smaller percentage of women taking STEM subjects overall because there are way more women entering university in the first place. A more interesting reading of this, therefore, is not that we have a problem attracting women to science, technology, engineering, and mathematics, but that we have a problem attracting men to the humanities, social sciences, and the liberal arts. As the article puts it:

“it’s not that women aren’t interested in STEM; it’s that men aren’t interested in poetry—or languages or philosophy or art or all the other non-STEM subjects.”

That’s a serious problem.

As someone with qualifications in both (incredibly broad) areas, and interests in many sub-areas of each,  I find the arbitrary separation between them to be ludicrous, leading to no end of idiocy at both extremes, and little opportunity for cross-fertilization in the middle. It bothers me greatly that technology subjects like computing or architecture should be bundled with sciences like biology or physics, but not with social sciences or arts, which are way more relevant and appropriate to the activities of most computer professionals. In fact, it bothers me that we feel the need to separate out large fields like this at all. Everyone plays lip service to cross-disciplinary work but, when we try to take that seriously and cross the big boundaries, there is so much polarization between the science and arts communities that they usually don’t even understand one another, let alone work in harmony. We don’t just need more men in the liberal arts – we need more scientists, engineers, and technologists to cross those boundaries, whatever their gender. And, vice versa, we need more liberal artists (that sounds odd, but I have no better term) and social scientists in the sciences and, especially, in technology.

But it’s also a problem of category errors in the other direction. This clumping together of the whole of STEM conceals the fact that in some subjects – computing, say – there actually is a massive gender imbalance (including in Ontario), no matter how you mess with the statistics. This is what happens when you try to use averages to talk about specifics: it conceals far more than it reveals.

I wish I knew how to change that imbalance in my own designated field of computing, an area that I deliberately chose precisely because it cuts across almost every other field and did not limit me to doing one kind of thing. I do arts, science, social science, humanities, and more, thanks to working with machines that cross virtually every boundary.

I suspect that fixing the problem has little to do with marketing our programs better, nor with any such surface efforts that focus on the symptoms rather than the cause. A better solution is to accept and to celebrate the fact that the field of computing is much broader and vastly more interesting than the tiny subset of it that can be described as computer science, and to build up from there. It’s especially annoying that the problem exists at Athabasca where a wise decision was made long ago not to offer a computer science program. We have computing and information systems programs, but not any programs in computer science. Unfortunately, thanks to a combination of lazy media and computing profs (suffering from science envy) that promulgate the nonsense, even good friends of mine that should know better sometimes describe me as a computer scientist (I am emphatically not), and even some of our own staff think of what we do as computer science. To change that perception means not just a change in nomenclature, but a change in how and what we, at least in Athabasca, teach. For example, we might mindfully adopt an approach that contextualizes computing around projects and applications, rather than its theory and mechanics. We might design a program that doesn’t just lump together a bunch of disconnected courses and call it a minor but that, in each course (if courses are even needed), actively crosses boundaries – to see how code relates to poetry, how art can inform and be informed by software, how understanding how people behave can be used in designing better systems, how learning is changed by the tools we create, and so on.

We don’t need disciplines any more, especially not in a technology field. We need connections. We don’t need to change our image. We need to change our reality. I’m finding that to be quite a difficult challenge right now.


Address of the bookmark:

Originally posted at:

Computer science students should learn to cheat, not be punished for it

This is a well thought-through response to a recent alarmist NYT article about cheating among programming students.

The original NYT article is full of holy pronouncements about the evils of plagiarism, horrified statistics about its extent, and discussions of the arms wars, typically involving sleuthing by markers and evermore ornate technological fixes that are always one step behind the most effective cheats (and one step ahead of the dumber ones). This is a lose-lose system. No one benefits. But that’s not the biggest issue with the article. Nowhere does the NYT article mention that it is largely caused by the fact that we in academia typically tell programming students to behave in ways that no programmer in their right mind would ever behave (disclaimer: the one programming course that I currently teach, very deliberately, does not do that, so I am speaking here as an atypical outlier).

As this article rightly notes, the essence of programming is re-use of code. Although there are certainly egregiously immoral and illegal ways to do that (even open source coders normally need to religiously cite their sources for significant uses of code written by others), applications are built on layer upon layer upon layer of re-used code, common subroutines and algorithms, snippets, chunks, libraries, classes, components, and a thousand different ways to assemble (in some cases literally) the code of others. We could not do programming at all without 99% of the code that does what we want it to do being written by others. Programmers knit such things together, often sharing their discoveries and improvements so that the whole profession benefits and the cycle continues. The solution to most problems is, more often than not, to be found in StackExchange forums, Reddit, or similar sites, or in open source repositories like Github, and it would be an idiotic programmer that chose not to (very critically and very carefully) use snippets provided there. That’s pretty much how programmers learn, a large part of how they solve problems, and certainly how they build stuff. The art of it is in choosing the right snippet, understanding it, fitting it into one’s own code, selecting between alternative solutions and knowing why one is better (in a given context) than another. In many cases, we have memorized ways of doing things so that, even if we don’t literally copy and paste, we repeat patterns (whole lines and blocks) that are often identical to those that we learned from others. It would likely be impossible to even remember where we learned such things, let alone to cite them.  We should not penalize that – we should celebrate it. Sure, if the chunks we use are particulary ingenious, or particularly original, or particularly long, or protected by a licence, we should definitely credit their authors. That’s just common sense and decency, as well as (typically) a legal requirement. But a program made using the code of others is no less plagiarism than Kurt Schwitters was a plagiarist of the myriad found objects that made up his collages, or a house builder is a plagiarist of its bricks.

And, as an aside, please stop calling it ‘Computer Science’. Programming is no more computer science than carpentry is woodworking science. It bugs me that ‘computer science’ is used so often as a drop-in synonym for programming in the popular press, reinforced by an increasing number of academics with science-envy, especially in North America. There are sciences used in computing, and a tiny percentage of those are quite unique to the discipline, but that’s a miniscule percentage of what is taught in universities and colleges, and a vanishingly small percentage of what nearly all programmers actually do. It’s also worth noting that computer science programs are not just about programming: there’s a whole bunch of stuff we teach (and that computing professionals do) about things like databases, networks, hardware, ethics, etc that has nothing whatsoever to do with programming (and little to do with science). Programming, though, especially in its design aspects, is a fundamentally human activity that is creative, situated, and inextricably entangled with its social and organizational context. Apart from in some research labs and esoteric applications, it is normally closer to fine art than it is to science, though it is an incredibly flexible activity that spans a gamut of creative pursuits analogous to a broad range of arts and crafts from poetry to music to interior design to engineering. Perhaps it is most akin to architecture in the ways it can (depending on context) blend art, craft, engineering, and (some) science but it can be analogous to pretty much any creative pursuit (universal machines and all that).

Address of the bookmark:

Original page