# What are the merits of including the history of computers in the entry level curriculum?

Should some portion of introductory CS curriculum include something about the history of computers, especially with respect to Moore's law and what that might imply about the growth of computing power?

Would this help give students a perspective regarding the potential of how computing and programming might change in the near future, based on how things have changed in the past?

• I was recently contemplating cross curricular computing and what this should be: not using a word processor in English, and creating a power point for history. But instead History teaching the history of computing; English teaching the poetry “there is no place like ::1” (also 127.0.0.1 and ~); Geography considering computing culture, moor's law, and the fact that the internet is full (the internet is dead, long live IPv4); – ctrl-alt-delor May 25 '17 at 19:21
• Isn't this purely opinion? Without knowing the goals of the course, it is impossible to guess. – Ben I. May 26 '17 at 2:13
• I think that the question is attempting to ask about if history should be part of the course goals. I'd prefer to say that this is too broad, but then again "Should I talk about history?" is 90% of the time "Yes," but because of the "why" aspect of the question it may still be too broad. – thesecretmaster May 26 '17 at 3:03
• IMO, this really only becomes relevant as you face going out into the workforce to maintain legacy code. Understanding that the first databases weren't relational is only useful when you're looking at code that's a holdover/hangover from those days. – G. Ann - SonarSource Team May 26 '17 at 12:27
• Which curriculum? You don't teach the same thing to future programmers and to future accountants. – Gilles May 26 '17 at 19:57

There are some history topics that link really well with computing - for example a history of communication, taking in writing, printing, semaphore, the telegraph and Morse code etc, through to the internet and the web. The English history curriculum for 5-7 year olds suggests that pupils compare William Caxton and Tim Berners Lee.

Another great topic would be cryptography, perhaps starting with the Caesar cipher, mono-alphabetic and poly-alphabetic substitutions, Enigma, Colossus and other work at Bletchley Park, public / private key encryption (with applications to SSL), some of the contemporary issues around privacy and perhaps a look ahead to quantum cryptography.

YMMV, but I think context like these may make these topics more engaging than a straight history of computing unit.

To give another perspective, when teaching an intro to web development course it's very useful to teach things in a way similar to how they were discovered and contextualize the different concepts in history. It's easy to understand why HTML is a markup language rather than a full fledged language when you consider the time: The Web was used for serving plain text pages, and they wanted a little markup to make it nicer. HTML was born. When styling become larger than HTML could encompass, CSS was born. When interactions wanted to be built in, JS was born, etc. Otherwise you can get into extended discussions about why the front-end environment is the way it is.

In cryptography it's the same way. By following the history you can see the mistakes of those before you, and thus avoid those mistakes. Crypto is all about the cycle of making a new algorithm then having it broken, and the arms race that it causes. History illustrates common pieces of advise, like to avoid security by obscurity, and history also shows why perfect forward secrecy is needed. It shows the need for key exchange, and shows the relationship between unsolved math problems and crypto. All of these are great reasons to teach crypto in chronological order, from the oldest discoveries to the newest.

I would guess that this sense of parallels between the order in which things are invented and the order in which things are taught exists in other fields as well, and so teaching history along with the normal coursework could be very useful.

In short, yes. When introducing students to programming and how a computer works, historical perspective can prove highly valuable in several areas. Consider this one image of Margaret Hamilton next to NASA code:

Encapsulated here are several important ideas:

• Women played an essential role in the development of the space program (Hidden Figures also brought this fact to the cultural forefront recently)

• The term computer used to refer to the person, not the machine.

• Languages have developed from low-level to high-level in significant ways, so we stand on the shoulders of abstraction when we program today.

This leads to a discussion of the Apollo Guidance Computer itself. Low-level details like a 16-bit 2.048 MHz processor on a 70-pound machine contrasts heavily with the magnitudes of order faster devices we have now. There's a great perspective to be gained, especially in terms of speed and memory.

An additional resource I'd recommend for integrating the historical development of computers and computing is Brian Kernighan's book D is for Digital. It weaves in historical information throughout as a way of explaining just how we have arrived where we are now. Its examples are even more recent, so it provides an insight into just how much and how fast advancement has been recently. My students are reading part of it for summer reading, and here is the guide I made with sample questions that might related to your goal of teaching history: D is for Digital Reading Guide.

• Good point about languages. I'm sure C would be different if it were replaced now, and it's pretty mainstream in the right domains. – Sean Houlihane Jun 11 '17 at 16:45
• You beat me to mentioning using the history of computing to highlight women's contributions. – Ellen Spertus Jun 15 '17 at 2:59
• Apparently, a single Google search uses more compute power than the whole Apollo program. I still can't wrap my mind around that. search.googleblog.com/2012/08/… – Ellen Spertus Jun 15 '17 at 3:00
• I have that image in my LMS, and a picture of the Guidance Computer interface. – user737 Jun 15 '17 at 20:12

I think the ancient history is less relevant to a general curriculum, the context that many of us learnt to program with is not likely to help students understand the environment they will be working in in the future.

Similarly, Mores law does not predict the future (and is expected to only continue with step changes in tech beyond 5nm).

What probably is relevant is to look back 10 years, and see how phones have changed, how battery tech has improved, how everyone carries broadband with them, sat-phones cover the whole planet, and many houses have well over 20 Mb Internet.

So not only are computers near enough free (outside of supercomputer) but they are far better connected. This is fairly new, and things are still changing, but you ought to be able to demonstrate some comparisons which are accessible and help students imagine how things might change.

Domestic drones are my current best example of tech which has only recently been accessible at a sensible price.

I enjoy computing history and some of the mankier bits of Computing history are partly my fault, I'm even holding a dinner in the City to mark the 50th anniversary of Real Time Computing https://www.eventbrite.co.uk/e/real-time-computing-50-years-on-and-50-years-hence-tickets-32702374683, but it's a hobby, not a subject.

Firstly, there are no good texts to provide the 'common thread' that some people desire. Some books do incidents well, but I've never seen a thematic text of any value, some are interesting, but mostly because they are wrong in novel ways.

Secondly, to be done properly it is astonishingly hard. I've written IT history professionally and you find yourself explaining the economics of chip fabrication in the context of Agile vs Waterfall software development methodologies. Unless you can do this, today and without further research and not scratch your head on why they are related, you aren't qualified. I don't think I'm qualified either.

Next, it's a cop out. Teaching logic, applying set theory, expounding of floating point, the legalities of licencing, O(N) notation, and why in the name of god does VB do that is hard. History is comfortable and easy. There are no nasty error messages on the screen saying you are wrong, the kids understand stories they are told about heroes and everyone goes home happy. But not educated.

Computing history's big. Computing is a big thing that has been big for a long time. All you really can teach is a few anecdotes, fine but that's not a theme. There are themes, but they require a huge level of investment in time by a teacher if they are to avoid merely spouting corporate propaganda or uncritically propagating the heroic myths of Hopper and Lovelace. Imagine yourself pointing out that Hopper helped fight the Vietnam war and Lovelace was a drug addict who helped on a colossal failed government funded computer project. If you're not pointing out the bad as well as the good, then why not just shoe them Disney's Frozen instead ?

I enjoy history, I even write some, but don't pretend it is useful to the student and that has to be the measure of any structure

• I think it is possible to sidestep the bad and good aspect by simply saying: "this is what happened." You can explain why Oracle has a big product without saying anything about its CEO. We are here to teach what is, not ethics. – user737 Jul 10 '17 at 14:24

First, remember that every course should have a through-line - a central story that it tells. This story is what provides coherence to the pieces. If history is part of that central story, then the answer to your question is self-apparent. For instance, the information obviously belongs in a Social History of Computing in Society course.

Questions like this arise, however, when the material in question doesn't comfortably nestle inside that core through-line. In those instances, I recommend the following approach:

Non-curricular "extras" are wonderful if they substantially enhance or broaden students' perspectives, but don't bog things down too much. So: if it's really valuable, make sure you can keep it short and to the point.

The question, then, is whether the cost to the pacing of the class is overridden by the generalized benefit of gaining some context. Since these extras aren't a part of the central story of a class, and aren't cornerstone pieces of the key course goals, they inherently slow down the pacing of the course and muddy that central through-line. If you enter into too many side-paths, the central message of the course can get truly lost, and the whole course will begin to feel rudderless. A few diversions down side-paths can be enriching, but too many destroy the arc of the class.

If you're unsure about whether your through-line is being communicated, you can poll students about the purposes of the various exercises and lessons how do they all fit into the bigger picture? If your students seem to know what's going on, you're in good shape. If the results are more mixed, I would spend time re-telling your big story, and steer clear of side pursuits until the central line is firmly reestablished.

• But might not history be part of the central story? Physics class labs often include significant time repeating some of Archimedes and Galileo's ancient experiments before moving on to tensors, statistical mechanics, etc. – hotpaw2 Jun 11 '17 at 18:03
• Good point! I fleshed out my answer to clarify. – Ben I. Jun 11 '17 at 18:23
• I follow the ideas in your 3rd paragraph: say what needs to be said without clutter. Personally, I understand something much better when I have some idea of where it came from, why it exists, and where it is going. It is like if you go to a new city: a brief orientation of the important places and roads is enormously helpful. – user737 Jul 10 '17 at 14:22