Science uses models not just to represent theories, but to think with. The models are most useful if they are powerful enough to capture the phenomena, and small enough to be comprehensible. This is not done enough in the expedient world of computing, where the artifacts tend to be functional rather than understandable. Much coding today uses techniques from the 60s, often resulting in millions of lines of code. But one's sense of intuitive entropy insists the mathematical content is tiny compared to the code size. Environments are not just used, but also lived in and learned. So advances in self-explanation would lift both software engineering (a disclosable system would be of great utility for practical programming) and computer science (the requirements for understandability and disclosure would naturally lead to the invention of better and higher level computational structures). These in turn would lift design (the visible system at all levels should be clean, compact, powerful, simple, and pretty, not dirty and ponderous). The PI's long and illustrious research career has combined interests and inventions in computer science (object-oriented programming, reflective whole systems, and networking), UI (overlapping windows and icons), education (particularly for children), design (striving for beauty as well as problem solving), and computer engineering (learning how to efficiently make whole hardware/software systems). The alternative systems he has developed have been small in comparison with standard practice. Squeak, for example, covers much of personal computing (including its own applications, operating environment, UI and development tools, etc.) in ~2.8MB of code (about 200,000 lines). With a careful new design the PI is confident it could be smaller by a factor of 10 or more. In this project the PI and his team will design and build an extremely compact and practical model of an entire personal computing system from the metal upwards, including the equivalents of an operating system, development tools, graphical user interface, applications, media, end-user programming, and internet communications, sharing and media (analogous to the web++) - as an "Exploratorium" for itself that can be readily understood by teenagers on up. Each part of the dynamic architecture will use wholly new or newly adapted powerful ideas that should help advance understanding of how to design and build whole systems from the metal up through UI and applications; much of the small model size will derive from abstracting "the many" into "the one" and other special mathematical approaches. This funding is for support of the central part of this large project (which is partitioned so that a complete and interesting system will result from the NSF support alone). The software developed will be freely disseminated on multiple platforms, and extensive user testing will be conducted in schools and universities. A key platform will be the under-powered "$100 laptop", an acid test of the pragmatic depth of the system.
Broader Impacts: Most early learning of programming is done in a non-scalable way, somewhat equivalent to banging together a doghouse with nails and planks. What is learned doesn't scale well by a factor of 5, let alone by factors of 100+. Even more critically, the deeper mathematics-like nature of the most powerful ideas in computing is poorly described and learned via papers, which even if they are read are often difficult to understand. Making a well-designed system that is also instrumented to promote learning and to facilitate changes will have a dramatic and positive impact on many areas of computing. It will constitute an example of "the system is the curriculum" for learning many important and powerful ideas, especially by teenagers and university students who comprise tomorrow's programmers, and who will find ways to make great use of a simpler yet stronger approach to personal computing.