Real-Time Programming and the Big Ideas of Computational Literacy

Christopher Hancock's dissertation, mentioned before but I think it deserves its own post somewhere, especially since it is very similar to Bret Victor's work (but is from 2003!).

Though notoriously difficult, real-time programming offers children a rich new set of applications, and the opportunity to engage bodily knowledge and experience more centrally in intellectual enterprises. Moreover, the seemingly specialized problems of real-time programming can be seen as keys to longstanding difficulties of programming in general.

I report on a critical design inquiry into the nature and potential of real-time programming by children. A cyclical process of design, prototyping and testing of computational environments has led to two design innovations:

  • a language in which declarative and procedural descriptions of computation are given equal status, and can subsume each other to arbitrary levels of nesting.
  • a "live text" environment, in which real-time display of, and intervention in, program execution are accomplished within the program text itself.

Based on children's use of these tools, as well as comparative evidence from other media and domains, I argue that the coordination of discrete and continuous process should be considered a central Big Idea in programming and beyond. In addition, I offer the theoretical notion of the "steady frame" as a way to clarify the user interface requirements of real-time programming, and also to understand the role of programming in learning to construct dynamic models, theories, and representations. Implications for the role of programming in education and for the future of computational literacy are discussed.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Live, Interactive

Just a note on terminology: I have not seen this described as "real-time programming" outside of this article. I have seen it described as Interactive programming, Live coding, Live programming. (I understand there are some subtle distinctions of connotation between those, but I've never seen them formalized.) The phrase "real-time programming" brings to my mind the idea of programming real-time systems - which is relevant to this topic, but not the same.

Anyhow, this is a very long paper, and well aligned with my interests. I've skimmed it before, but I think I'll take this opportunity to read it thoroughly.

He uses "live programming"

He uses "live programming" in much of the paper, which is where I originally borrowed the term from. "real-time" programs seem to just be interactive, and real-time programming seems to just be the programming of real-time programs. Not the best terminology to be sure, and I wonder if he meant to conflate the two terms a little bit (I mean live and real-time programming).

Chapters of interest?

I went to print this and realized it was the full thesis -- any suggestions on particularly compelling chapters?

The chapters I mainly

The chapters I mainly focused on are 5/6/and 7 at the end. Chapters 3 and 4 are on an earlier system that is less interesting to me, while 1 and 2 are setup.

Thanks, should make my

Thanks, should make my flight more interesting :)

Lucky, I need to find 20

Lucky, I need to find 20 hours of reading material :) See you in Tucson!