The Law of Unintended Patterns

For any matched pair of non-trivial examples
there exists (n == 1) pattern that the creator of the examples intended to highlight
but there also exist (1 < n <= infinity) unintended patterns that students will find.

It’s difficult to live-code programming examples… the conventions we use by habit often invite students to find the unintended patterns.

As an instructor, how do I get students to see the single pattern in which I’m interested, rather than the possibly infinite patterns that exist? Or, is that even the best goal? Should I, instead, be encouraging students to look beyond the first pattern they detect in order for them to appreciate the inherent complexity of interpretation?

Designing Computing Spaces for Collaboration

Classrooms are, at their best, learning communities. Unfortunately, with the rise of the PERSONAL computer (PC), computing classrooms have evolved to meet the needs of the computer, rather than the learner. In so doing, often both the needs of the computer and the learner go unmet. Consider the all too typical situation of a room that has been retrofitted to provide dozens of electrical outlets and network connections, but with no improvements in the air conditioning. It seems to have escaped the attention of the room’s designers that computers, even at idle, generate many BTUs of heat… as do students! The body heat from 15-20 students in a room is considerable.

I stress the personal aspect of personal computer here not because I think you don’t know what I mean by a PC. Rather, it’s because that individual context, the idea that the computer is meant for individual, personal use is important in a learning environment. PCs are designed with the individual in mind. Even when the idea of having multiple users was adopted in consumer PC operating systems, the idea was still that one user would be logged in at a time, working alone. In the more advanced operating systems, you can switch between the individual user contexts.

What you can’t do easily with a personal computer is collaborate, and that’s a problem for educational uses of computers both in terms of the operating system design and the design of computing classrooms.

Ideally, computing classrooms would include

  • room configurations that support collaboration
    • movable tables to support small groups, seminars, and lectures
    • ready access to power outlets, both on the walls and in the floor
    • wired network access for a portion of the users, since not all devices support wireless
    • sufficient wifi coverage to support a full class, all downloading needed software at the same time, since not all devices support wired connections (e.g., iPhones, iPads, Macbook Air, other ultrabook format computers)
    • a high-resolution projector, so that applications that use significant screen real estate can be projected: Photoshop, Blender, Xcode, other programming integrated development environments.
  • network storage that supports collaboration (where will students and ad-hoc groups share files?)
  • a storage strategy that supports collaboration (how to handle collisions among students saving?)
  • Power outlets that are not sunk into tables, allow transformer bricks (e.g., the Apple iPad or MacBook’s power supply without the extension cable) to be plugged in, and are spaced far enough apart that multiple bricks can be plugged in.
  • Additional power support for direct USB charging of devices.
  • software that supports collaboration
    • MoonEdit,
    • SubEthaEdit,
    • Google Docs,
    • Wikis,
    • GIT,
    • etc.