thinair Boulder, Colorado. elevation 5400 feet.

Ideal Job in Computational Education

My life's work is computational education : the systemic transformation of education as we know it through effective use of computing and networking technology. Systemic reform demands system-wide and system-deep solutions: no single area will be sufficient and all areas need attention. Although I have ideas for every dimension of the system, I'll focus here on a few specific areas where I would like to start now: ubiquitous computing, spatial reasoning, and programming.

Ubiquitous computing

Computing first stormed the gates of education back in the 1970's when the price of computers went down from 100s or 10s of thousands of dollars to only thousands of dollars. The widespread adoption of Apple II computers in school launched a few generations of computer geeks in their careers and thereby laid a foundation for the transformational changes we've seen in the decades since. But sadly education remained mostly unchanged for decades. We're in the midst of another drop in the cost of computing by another order of magnitude. Changes by an order of magnitude are important. There's a new gold rush going after mobile computing but I think the more important concept is ubiquity. Most people can now afford a powerful networked computer that fits in their pocket and turns on instantly -- access to all the world's knowledge wherever there's a wireless signal. But unless we learn from history, it'll be a decade or more before ubiquitous computing changes anything in education.

We can soon provide every educator and every child with their own mobile computer. What will we do with them? I'd like to be inventing the answers to that question because the best way to predict the future is to invent it.

Here are a few examples of educational opportunities I see in mobile computing: distributed computing, messaging, lessons in emergence, agents, artificial life, digital collection of experimental data in the field by capturing images, sound, and video.

Spatial reasoning

I'm particularly excited about things we can do with computers that cannot be done in any other media. Three-dimensional modeling and representation is something that's been prohibitively difficult and expensive to do on paper. Time is also challenging to model on paper. The computer quite literally can take us to new dimensions in communication and creative expression.

Few people know or appreciate that the design professions (architecture, urban planning, landscape design) also offer excellent preparation for software design. With advances brought by computing, sophisticated spatial reasoning need no longer be confined to design professionals (and sculptors ;-). Anyone can build interactive pictures which communicate in both space and time. That's a paradigm shift (and I don't use that phrase lightly).

For an example of untapped potential in spatial modeling of knowledge, see my daydream of modeling the Map Room at St. Peter's Basillica There are a number of other examples to be found in the history of perspective. Someday (hopefully soon) I'll be able to recreate the perspective animations I created earlier in my life. Also, Google Maps and it's competitors invite home grown GIS applications to connect spatial data to maps where the only cost is the time needed to create the mashups. For a particularly inspiring example of spatial reasoning in action, take seven minutes to watch Blaise Aguera y Arcas demos Photosynth

Consider also the possibilities for applying Sketch-up and sketchyphysics and stereoscopic projectors... there's a whole lot of exciting and largely untapped material for education.

Programming

The relevance of this takes a little explaining, especially for non-programmers, but probably even for programmers.

The printing press completely changed the economics of books. With that change came widespread literacy to the point now where people are embarrassed if they cannot read or write. Programming is to computers what literacy is to books. To really harness the power of computing as a transformational medium, we need widespread computational literacy. This metaphor of computers to books is important. Throughout European history, power was concentrated in the hands of the very few people who were literate. The printing press and widespread literacy completely changed the balance of power. We currently live in an age where the power of computing can only be harnessed by the few who can master programming languages. Google and Apple and Microsoft, and also Yahoo and Facebook and others hold some incredible power for their ability to pay programmers to harness computing and networking. All of their customers benefit, but are also somewhat controlled by the design choices of the software on offer. Concentrations of power invite abuse of power and these companies are collecting a lot of power.

Programming languages are also powerful bridges between language and mathematics. Superficially, they look a lot like algebra and pre-calculus. However, much of programming is the art of choosing the right names and categories and the right abstract concepts to organize a large body of software. Although it's rarely thought of as such, programming is also language art. On a related note, to belabor the point, programming language communities display cultural dynamics just as natural language communities do. Perl culture is distinct from Python culture which is distinct again from the cultures of JavaScript, C++, Java, Objective-C, Lisp and Haskell.

Programming need not be confined to a narrow community of computer hackers. We can and should teach these skills more broadly. Alan Kay's keynote speeches over the past few years have pointed at a particularly exciting example. I'm also quite excited by the work of Open World Learning, and Scalable Game Design in demonstrating the potential to teach programming skills broadly.

Some other interesting technologies

WebGL
Processing and jython (especially the last section of that page entitled "Why?".
Android and jython, jruby, clojure, or other dynamic language environment

What kind of work exactly?

I'm thoroughly committed to test-driven development and have about a decade of experience writing code in this way. I just think about solving problems with software and automation and a large portion of my work will naturally include software and systems engineering.

I'm also a gifted teacher and a life-long learner. I enjoy stretching my own knowledge and skill and care a great deal about sharing what I've learned and helping other people grow. Teaching, mentoring, coaching, and pair-programming would all fit in this area. I would also enjoy and likely excel at instructional design.

I would also welcome the opportunity to collaborate with schools of education to help prepare future educators for a world of ubiquitous computing. The same tools I envision for students could well serve to prepare future educators too.