Trevis Rothwell's weblog

Almost, but not quite, entirely unlike tea

Euler’s Method in Hidden Figures

06 February 2017

201611-milwaukee-25Having thoroughly enjoyed seeing the movie Hidden Figures, I wondered about the “old math” breakthrough shown late in the story, when the Euler method is applied to aerospace calculations, after several scenes claiming that the math needed to do the calculations did not exist. While I remembered Leonhard Euler as the graph theory guy, I had to look up the referenced method.

It turns out that it is a method of doing numerical approximations of ordinary differential equations. But wait! Ordinary differential equations had been around since the days of Newton and Leibniz. We even saw differential equations written on chalkboards in the movie. Surely solving differential equations was not the mysterious new math that was needed?

The movie did not go into details, but perhaps the numerical approximation approach was key because the IBM 7090 Fortran programs that they were using to automate calculations was not able to handle symbolic differentiation and integration yet? Symbolic calculus on computers started becoming possible over the next decade, but a numeric approximation would clearly have been the best approach to feed into the computer they were using in the early 1960s.

This still doesn’t answer, though, why using Euler’s method would have been such a breakthrough. The method was written up in Hamming’s classic 1962 book on numerical methods, so while it was indeed “ancient” math as depicted in the film, it was hardly unknown. I guess we might have to presume that then (as now) a study of numerical approximations to symbolic calculations are not necessarily a mandatory part of a university mathematics education? I have worked with aerospace engineers for more than twelve years, and I would not be at all surprised if most of them have never studied numerical methods at all…  but hey, I didn’t take the class either… :-/

Fortunately, we have access today to unprecedented quantities of free and low-cost mathematics educational materials, and any movie that inspires us to take some time to study is surely a good thing.

Computer Science in High School Education… at long last?

27 June 2015

The Des Moines Register reports that the state of Iowa is contemplating requiring computer science coursework as part of its core high school curriculum. The team of science, technology, engineering, and mathematics experts who is recommending this to the state claim that requiring computer science coursework in Iowa high schools is a “very bold recommendation”.

The article quotes various people making statements about what this computer science coursework would tentatively include, suggesting that their rough plan is to convey to students

  • how computer systems work
  • how to write computer programs
  • computer science topics that reflect current industry needs

The first two points have been making appearances in K-12 education at least since the 1980s, in the form of Seymour Papert’s methodologies using Logo and Turtle programming, and more recently through the MIT Media Lab’s Scratch programming initiative. [I myself was introduced to computer programming at least in part in an elementary school Logo/Turtle programming class circa 1990.]

The third point sounds delightful, but, if formalized into published curricula, might be impractical. Core computer science knowledge like data structures, algorithms, and automata theory are always in style, but keeping up with the cool, hip programming languages and tools is evidently a challenge for textbook authors and for the teachers who adopt their books. This has been true in college-level computer science academia, and I imagine it would be at least as true at the high school level. It might be easier to pick some reasonably current set of technologies, like maybe Python (24 years old), Subversion (14 years old), and GNU Emacs (30 years old), and assume that the ideas behind those technologies will still be relevant when the students graduate.

[How do college computer science graduates cope with having not been taught the most current languages and tools of the trade? Despite new things coming out at a frenzied pace, programming languages that actually see much real-world use are still catching up with the core ideas of languages like Lisp (57 years old) and ML (42 years old), while typically retaining a great deal of syntax in common with C (43 years old). Learning those three languages, or some other set of similar languages, gives abstract knowledge more than sufficient to pick up any language the software development industry is likely to throw at its practitioners for the foreseeable future. For that matter, you could probably still spend a fifty-year-long career writing code in nothing but C, if you tried!]

An understanding of computer systems ought to permeate much serious decision-making in society; while some of these students may indeed discover their vocational calling in a high school computer science class, even non-programmers should wield enough computer science knowledge to make sound decisions on election day, if nothing else. So cheers to all of the state education departments who are requiring the next generation to learn a bit of computer science! But at the same time, I wonder, after all of the K-12 computer science education groundwork that was laid in the 1980’s… why did this take so long?

The Benefits of Dropping Out

23 April 2015

There’s an infographic floating around the business news blogosphere proclaiming that nearly one-third of all billionaires dropped out of college, showing the percentage of billionaires with degrees in various categories, including the largest category, none. The implication seems to be that the path of study most likely to lead to billionaire-level wealth is to leave school.

Of course, the obvious flip-side is that while one-third of billionaires hold no degree, two-thirds of billionaires do hold a degree. Obviously the best path toward being a billionaire is to finish college with a degree in something!

But the traditional college path in life has been criticized a lot recently, and perhaps rightly so. Costs continue to get higher — my own alma mater increased tuition by approximately 50% since I graduated, with only about half of that accounted for by inflation — and opportunities for success without a degree seem ever more abundant. Going into business for yourself on the internet, with minimal cost and no formal prerequisites, is a very real option today that was harder ten years ago, and much harder twenty years ago. And if you want the education that ostensibly goes along with obtaining a degree, there are numerous free and low-cost options for self-study that exist today. (Along with some options that have existed for centuries…)

Still, presenting the notion of dropping out of college as a path toward success seems dubious. Rather than asking, what percentage of billionaires are college dropouts, maybe we should ask, what percentage of college dropouts are billionaires? I haven’t yet found statistics on that, but Wikipedia has a nice overview of high school dropouts, suggesting that

  • high school dropouts are more likely to be unemployed than high school graduates
  • lifetime earnings of dropouts are on average $260,000 USD less than graduates
  • two-thirds of U.S. prison inmates are high school dropouts
  • a third of high school dropouts live in areas of poverty
  • high school dropouts have a shorter average life expectancy than graduates

And just as with college dropouts, there are counterexamples of successful high school dropouts, prominently including Walt Disney.

Statistical data pertaining to high school dropouts does not necessarily apply to college dropouts, but I suspect that the general message carries over: dropping out of school per se does not lead to success, neither for a 17-year-old high school student nor for an 18-year-old college student. What can lead a dropout to success, though, is doing something else productive with their time. And the same goes for graduates, who could easily choose to live a life of unproductive sloth after they finish school.

Recurrent Training for Software Developers?

14 May 2014

Software developers who have been out of school for a while and apply for new jobs routinely bemoan that they have forgotten details of things like algorithms and data structures and other computer science topics that tend to pop up for discussion in interviews. Even software developers working in their current job can stand to be reminded of things they’ve been taught in the past but haven’t thought about for years.

Pilots undergo intense training before getting certified to fly in the first place, but then also must undergo recurrent training on a regular basis.

Instead of checking off having learned algorithm design in college and never thinking about it again, would it be useful for software developers to engage in regular recurrent training to refresh themselves on things they might be letting slip from their thinking?

Taking a full semester-long class might be overkill, and too much to expect out of the schedule of working professionals with families and responsibilities outside of their jobs. Maybe a twice a year spend a day or two being refreshed on things that should have already been studied in detail in the past.

A format of alternating between 15-minute lectures, 15-minute in-class exercises (done by individuals on their own laptops), and 15-minute review of solutions might be a good way to go.

How could such training be set up? Large companies could do it all in house, paying a small staff to be dedicated to administering such classes. Local community colleges could potentially offers this format of class to small companies and individuals in the area, as part of their alleged charter to foster continuing education.

In theory, it could also all be done online, with prerecorded lectures by especially great speakers, but spending the time to meet in person can sometimes be more motivating than watching videos.

Book Review: The Children’s Machine

21 September 2013

This past spring I read Seymour Papert’s Mindstorms as part of the MIT Media Lab Learning Creative Learning course. Having been delighted with that book, I just finished reading Papert’s follow-up book, The Children’s Machine (Rethinking School in the Age of the Computer).

Published in 1993, this book comes across as technologically more modern than 1980′s Mindstorms, though still obviously dated. For me, it is dated in an especially nostalgic way, as it was around the late 1980s / early 1990s that I was first learning about computer programming, and I can personally identify with some of the stories and concepts that Papert discusses here.

Broadly, this book might be viewed as a refinement of Mindstorms, whereby Papert had over a decade of additional experience and observations with which to form stronger, clearer opinions and gather more data and anecdotes. But while Mindstorms seemed to focus more on the specific idea of creating virtual educational worlds on the computer in which students could more easily learn abstract ideas, the present book steps back even further to look at understanding learning itself better.

Papert advances the term mathetics for describing the study of learning, as opposed to pedagogy, the study of teaching. Are there methods we can use ourselves, or encourage in students, to identify what needs to be done on the learner’s side in order to learn better? To rely on “being taught” without exerting enough effort on “learning” puts things out of balance.

This concept of mathetics is woven into accounts of using computers to improve how learning takes place, especially through creative learning techniques of building virtual things with computers, and through the notion of learning a concept better by teaching it to the computer via programming. For example, we read some stories about the development and usage of the Logo programming language and the Turtle programming system that was developed with it, and how this grew into a form of cybernetics controlling robotic Legos. Here’s a short example, in this instance about using Mitch Resnick’s multi-turtle Logo variant, *Logo:

Two high school students who had recently received their driver’s licenses decided to use *Logo to show cars moving on a highway. The students started by creating several dozen turtles, each representing a car. The program consisted of two simple rules. If a car sensed another car ahead of it, it slowed down. If it didn’t sense another car, it speeded up. With this simple program the students did not expect much to happen, but when they ran it, the cars bunched into a realistic-looking traffic jam. … It is worth noting that the students appreciated the self-organizing nature of the traffic jam only because they had written the programs themselves. Had they been using a packaged simulation, they would have had no way of knowing the elegant simplicity of the programs underlying the jam.

The front cover quotes School Library Journal as saying, “Educators with a vested interest in the status quo will hate this book. It is about their demise.” Indeed, there are numerous points brought up for consideration about how the educational system could be improved, including scathing criticism of attempts to nationally standardize education and judge student development based on standardized tests. Along these lines, Papert poses an interesting query for educational administrators:

[O]n my reckoning, the fraction of human knowledge that is in the [school] curriculum is well under a millionth and diminishing fast. I simply cannot escape from the question: Why that millionth in particular?

If you must limit yourself to reading only one Papert book, Mindstorms came across to me as more fresh and exciting, but the creative learning aficionado will get valuable insight from reading both. The paperback edition is available at Amazon. No electronic edition appears to be available.