March 9, 2021

# Education in the Age of the Computer

By Antonio Hernández G.

### Abstraction and Algorithms

Computation is one of the greatest achievements of the past century. Our current technology and economy would be inconceivable without computers. Yet science and engineering education have not yet been impacted by the idea of computation to the degree they should. Many have said, and I agree, that in the near future “computational thinking” will change the way the STEM disciplines are taught. For those of us interested in education, here we have a huge opportunity to make a difference.

Mathematics is the language with which God has written the universe

, said Galileo. What he probably meant is that abstract structures can be used to explain nature. I believe there is more to it: abstract structures are responsible for the behavior of natural phenomena. We call them laws of nature. And in many instances, they seem to be relatively simple, like the basic laws that govern the movement of celestial bodies, or the codification of life as DNA, which governs the machinery inside the biological cell. Simple laws with very complex consequences. And if these simple laws come from abstract structures, it is natural that human understanding and scientific predictions require abstract thought, which many times takes the form of *mathematical* reasoning. But *algorithmic* thought also plays a role in the understanding of nature. It is algorithmic thought what in many instances allows to uncover the complex consequences of simple laws – take the three-body problem in celestial mechanics as an example. Abstract structures are expressible not only in terms of mathematics but also in terms of algorithms. Thus the need to incorporate computational or algorithmic thinking in the curricula of our science and engineering students.

But what is the best way to incorporate computational thinking in the STEM curricula?

### The vision of the Wolfram Language

I will argue in the following paragraphs that the Wolfram Language, the creation of Stephen Wolfram and Wolfram Research, is currently the best tool for incorporating computational thinking in science and engineering teaching at the college or university level.

Wolfram language is a symbolic language. This means that the building blocks of the language are symbols, which have an intrinsic meaning independently of whether they have assigned values (e.g. floating-point numeric values). This allows the Wolfram Language to be both a very high level language and a knowledge based language. Let me explain what this means.

When you program in the Wolfram Language your code is close to the idea you want the computer to implement. At the other end of the spectrum of computer languages would be C, or even Assembler, where your code would be close to what the machine does step by step. The latter is important if you are coding an action packed comercial game –where responsiveness is of essence– but is mostly irrelevant when you are teaching a course in electromagnetism or organic chemistry. What you most often need in such courses is to implement ideas fast, since otherwise you risk boring your students. So you need an expressive language that allows you to do a lot with little code.

The Wolfram Language is one of the most expressive and concise languages out there. Moreover, it incorporates within the language a lot of algorithmic knowledge. All of it seamlessly integrated. In other words, many computational ideas that have evolved over the decades have been automated within the language. And the syntax needed to call them is consistent throughout.

Other high-level languages, like Python or R, have become very popular. But algorithmic knowledge is not integrated within those languages. Libraries need to be loaded, which prevents them to have a consistency a la par of the Wolfram Language.

Algorithmic knowledge isn’t the only advantage facilitated by the symbolic nature of the Wolfram Language. The vision of Stephen Wolfram has been to incorporate a great variety of knowledge into the language. For example, it knows about physical units. Or astronomical, historical or financial facts. Users of the web service *wolframalpha.com* are familiar with obtaining snippets of structured information about almost any topic that you type into its google-like input field. The same structured and curated data that makes Wolfram Alpha possible is also accesible and computable from within a Wolfram Language session (with internet access).

As a teacher I took advantage of Wolfram Language’s computational knowledge integration in a semester project I recently assigned to students of a basic Physics course. The project asked the students to obtain the Earth’s magnetic field by modeling the Earth’s inner core as a solenoid. They also had to compare their model against the actual magnetic field. Here Wolfram Language’s curated computable knowledge about the real magnetic field along the surface of the Earth facilitated the job. (The continuous curve on the graph shows the predicted magnetic field intensity along the meridian that passes through Mexico City, according to one of my student's model; the dots represent the actual magnetic intensity at the time of the report.)

### The advantage of a symbolic language

So I have argued that the symbolic nature of Wolfram Language powers its high-level character and its integration with computable data. On a more technical basis, it also allows a programming paradigm that is seldom used in other popular programming languages, namely, *rule-based programming*. This paradigm is based on symbolic pattern matching, and is very powerful. You can think of Wolfram Language as a term rewriting system. For starters it allows elaborate algebraic transformations. Down the line it allows for meta-programming.

As an aside, it is worth noting that symbolic pattern matching blends well with another high profile programming paradigm in the Wolfram Language: *functional programming*. This paradigm is increasingly popular in other programing languages, for a reason.

Going back to the big picture, its symbolic nature allows the Wolfram Language to be a true communication language – for both humans and computers. What I mean by this is that, since one line of code can specify a lot, it becomes a way of expressing ideas that both humans and computers can understand.

### Conclusion

No doubt computational thinking will increasingly become a paradigm for the XXI century in all kinds of fields. Those education institutions that embrace this new paradigm will leapfrog the ones that decide to stick with “tradition”. Mathematics and science education are enhanced when paired with computational thinking. Abstraction is important and computation can hasten it. But for this to be the case one has to choose the tool that best allows to concentrate on the problem at hand and not on the details of the implementation. There is no doubt in my mind that the Wolfram Language is currently the best tool.