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.
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.
We are immersed in a technological revolution. As math instructors, we may ignore it only at our own peril.
For more than a decade I have spent considerable amount of time teaching Calculus and other basic math courses, mostly to engineering students. I wonder if my teaching is increasingly irrelevant to their professional development.
What is the problem? By design, these math courses overemphasize training in operational abilities. The implicit belief, I suppose, is that mastery of operational abilities will eventually lead to understanding. Or at least, that it is a first step towards that goal. But I increasingly doubt this is the case.
As an example, let us look at an exam problem that I recently posed to my students at the end of their first Calculus course:
None of my students could find a solution to this problem. More revealing, the answer of those who tried was a frantic attempt to compute the limit. But there was nothing to compute! Indeed, all the ingredients for just writing down a solution had been provided in the question.
At that moment I realized that all the time spent solving exercises had been almost futile: if a student could not solve this simple conceptual exercise, then it appeared to me that he or she didn’t really understand the basic ideas of Differential Calculus. At best, all what they had learned was how to apply operational recipes.
Worst yet, we Calculus teachers were deceiving our students by making them believe they were learning something deep or useful. In truth, we were doing little more than training second-class calculators.
I believe that, in spite of our stubborn attempts, most of our students will eventually understand the futility of training almost exclusively to solve problems that a computer or a smartphone with internet access can solve in a few seconds. This is conducing to a loss of interest and a cynic attitude towards the course.
Ideally, a math course targeted for engineering students should first emphasize the conceptual aspects of the subject matter, and contain an abundance of application examples that contextualize them. The operational training, without being abandoned, should be demoted in importance.
The only way to achieve this is to embrace the use of technology.
The technological revolution
The fact that a computer can solve in a fraction of a second most of the exercises for which today we train our Calculus students should give us pause: is our educational practice becoming irrelevant? Additionally, the internet and the cheapening of computers makes access to computational resources ever more ubiquitous. We may choose to ignore the technological revolution in which we are immersed, but at our own peril.
Used appropriately, the computer may allow to:
Make routine calculations much faster and efficient compared to what we can do by hand.
Explore examples whose sophistication goes beyond what we can do with paper and pencil, and explore more examples.
Use the time saved in routine computations to reflect on their meaning and to discuss their conceptual framework.
Unmask the futility of viewing math as a recipe collection and motivate the student to view Mathematics as a language with which one can formulate with precision questions and descriptions about the real world.
Enrich the language with which math is understood, incorporating the syntax of a computer language in the statement and solution of problems.
Now, it should also be pointed out that the use of technology brings about important challenges. Without a clear vision, one runs the risk of trivializing the course. And given that many of our current students have an “operational” view of math, a change of paradigm may confuse them. Students will need to be carefully guided in the transition.
And of course, a change of paradigm requires the elaboration of new coursework.
The constructionist view of Seymour Papert
Seymour Papert, one of the most influential minds in modern education theory, postulates in his constructivist theory of learning that we learn by doing, and emphasizes the role of concrete reasoning. In his own words:
In the practice of education, the emphasis on abstract-formal knowledge is a direct impediment to learning.
As math instructors we intuit the importance of concrete reasoning when we invest classroom time to discuss examples. Indeed, it is important that the student carefully performs all the steps of a computation in a certain number of instances. But I believe that it is a mistake to limit the role of concrete thinking to perform hand calculations. Going beyond that, the student can
Construct and solve examples that involve visual/geometric reasoning, with little formal/algebraic content. Example: sketch (by hand) the graph of an increasing function with decreasing rate.
Solve and interpret examples involving numerical data. Example: give an strategy to approximate a tangent line to the graph of a function prescribed by a numerical table.
Analyze and interpret recursive phenomena. Example: study the behavior of the logistic sequence.
Write programs of varying complexity to automate computations and generate graphs, manipulable objects and animations. Example: write a program that, given a list of functions, computes its Wronskian; write a program that iterates the reflections of incident rays on a conic.
Analyze results in light of some application. Example: given the differential equation that models waste concentration in the blood of a diabetic patient (e.g. urea and creatinine), and given the corresponding parameters, determine the dialysis procedure that reduces those values to normal levels.
It is clear that items 3. and 4. require, and item 5. greatly benefits from, the use of a computer. In this sense we are in Papert’s company when claiming that the computer is an instrument for learning and construction. Moreover, the computer has the potential of promoting concrete thinking by freeing the student from the need of performing every calculation by hand, thus liberating time that can be used to study a greater number of examples and more realistic ones.
Some ideas for the future
It has been said many times that technology is changing the way humans think. Actually this has been true since the dawn of mankind. But the accelerating pace of technology innovation makes this ever more palpable.
I do believe that this change has its perils. On the political sphere, we do see how technology, in the form of social media, has had nefarious consequences by demoting the ideal of truth. Does the introduction of technology in the math classroom runs the risk of demoting the ideal of understanding?
Undoubtedly, there are right and wrong ways of introducing technology in math education. I do not claim to have a clear answer of how this should be done. But I do believe that staying still and not embracing technology is one of the wrong ways.
There is an abundance of software with symbolic and numeric capabilities that can be used in basic math courses. For example: Julia, Magma, Mathics, Matlab, Maxima, Pithon, SageMath, Wolfram-Mathematica and R. With respect to software specialized in interactive geometric constructions we can mention: Cabri, C.a.R., Cindarella, Geogebra, Geometer’s Sketchpad, Geometrix, KSEG and Tabulae.
With this abundance of resources it is somewhat surprising that technology has not been incorporated in math courses in a more fundamental way. On the other hand, if the students are exposed to too many software packages, that can be overwhelming and confusing.
Ideally, a university or college should have a set policy of which program or programs should be given preference. And there should be time allocated for students to get familiar with these few tools. My personal view is that Wolfram-Mathematica offers perhaps the best syntax and collection of tools that can serve as a foundation for a rich blending of technology and mathematics instruction.
In any case, it is my conviction that current math courses overemphasize the formal and operational aspects of math learning. There should be many more drawings, manual constructions with paper, wood or other materials, more experimentation, and more visual thinking. Computer programming should be made an integral part of math education. Math lectures should not be oblivious of the ubiquitous presence of technology. And technology should be used always with the objective of enhancing conceptual understanding.
This brings us to the topic of human-machine interaction, which fascinates me. I plan to continue writing about this.
Papert, Seymour (). The children’s machine: rethinking school in the age of the computer. Harper Collins Publishers, Inc.