In Exercise 25, we considered just how the possibility of advanced technologies--especially ones that make the computer behave more like a human--might impinge on our ethical and professional responsibilities. The more "far out" our application, the less likely we are to have experience with the situations it places in which the application places us.
In Exercise 26, you are beginning to explore direct manipulation, an interaction style that lets people "do their thing", not "use the computer".
The key question to ask yourself is: What is my user doing? Or: What would my user want to do if she weren't using a computer to do this task?
An example from a recent Presidential Scholars seminar: a proposal for a VR system that allows surgical students to learn and practice skills in a "real" environment. This system would mix direct manipulation with artificial intelligence to fill a niche currently empty...
What makes a good, hard question? More than memorization. A good, hard question requires understanding the idea, and the trade-offs that underlie it. It requires knowing enough details to support a complete answer.
One example from class: "List five problems with <x>, and describe how you would solve one of them."
This makes for a good question, I think. Good questions should tend to emphasize the most important ideas in a chapter (with an occasional foray into depth, to keep things interesting and to ensure that we understand the details of the topic).
What is the most important idea in Chapter 6? If you had to boil down the chapter into a single sentence, what sentence would you write?
What are the three most important ideas in Chapter 6? What are the most likely values of the variable x above?
I think the most important idea for designers of direct manipulation interfaces is that of metaphor. What can I as a designer do to map the user's objects and actions onto objects and actions in my software system?
What is the connection of direct manipulation to virtual environments? To non-computer programs (e.g., a car)?
Work in tha same teams...
Are you tired of typing programs yet? Don't you think that there might be a better way to do what we programmers do? Let's see if we can't apply the principles of direct manipulation to the task of computer programming itself...
Design a direct manipulation system in which a computer programmer can write programs.
Your goal should be to create a system in which the user can do as little typing of text as possible. What kinds of things does a programmer manipulate? What kinds of actions does a programmer do? What icons and actions can the system provide to stand in their place?
You may focus on either object-oriented programming or procedural programming, but remember that--ultimately--even OOP requires us to write an occasional if or for statement. You might even consider targeting your system to "replace" a particular programming language.
By the end of your work, answer the following questions:
Why might the world want to have such a tool?
Can we do it?
What is easiest? Perhaps top-level structure and procedure/object stubs.
What is hardest? Perhaps the "guts" of the code: bodies of loops and procedures. Is that a problem? Think of word processing and the task of creating documents...
Can we make loops and selections go away? Some languages and programming styles show that it's possible. For example, Smalltalk's collection messages and Lisp's mapping functions. But even there the programmer must write the "guts" of the loops.
Would you want to use your tool? A better version of it?
This is a "before" exercise. Your reading assignment for our next meeting will take you a bit deeper into attempts by programmers and interface people to bring programming closer to the non-programmer.