Sunday, October 28, 2012
It should be clear from earlier postings that, in this class, we want to investigate algorithms not as theoretical structures born of definitions and theorems, but as real, manifest, and colorful-- whatever that means, whatever they turn out to be, whatever flavor of ontology turns out to apply. And we want to get there by going straight ahead down the path of inquiry, not branching through a thicket of terminology.
I wish to guide the class into ideas that come directly from their own experience of algorithms. I admit to a lack of rigor. I look about, ready to seize upon any justification for this plebeian approach. And I find one-- experimental philosophy.
The young professor Joe Ulatowski, already known to us and visiting here for a year, came to my class for a discussion of experimental philosophy. From this, the students gained (1) a general definition, based on the usual ethical issues such as trolley problems, (2) an understanding, and validation, of how the querying of our own and others' thoughts might aid the articulation of the concept of the algorithm.
I tossed out a couple of thought experiments, thinking that they were trivial and would be supplanted by more sophisticated version. They have served well, however, and are still providing food for thought.
1. Company A runs this algorithm to generate payroll: Take hours, take rate of pay, multiply together hours 40 or less to get the pay, then multiply hours over 40 by (rate*2), and add that to the pay.
Company B runs this algorithm: Take hours, take rate of pay, multiply together hours 40 or less to get the pay, then multiply hours over 40 by (rate*1.5), and add that to the pay. Are they executing the same algorithm? Answer by consensus: Yes, because the overtime rate is easily parameterized. But what if Company B applies different overtime rates to different positions? What if Company B adds a bonus in its payroll processing?
2. In Company A, a manager wants to see a list of all of the staff, available in database table or spreadsheet form, grouped together by division. Her assistant runs the sorting algorithm on the "division" field, knowing that the grouping is a result. Is this single program executing two different algorithms?
While probing our intuitions about algorithms, we have built up a question set. At first, I hoped to organize it into some kind of hierarchy, but that did not happen; the need faded away. It remains heterogeneous and unorganized, like traditional brainstorming results. Here are a few samples.
2. Does an algorithm have to be digital? Or symbolic?
8. Is the algorithm a "natural kind?"
12. Is the imperative construct compositional?
19. Is developing algorithms an art or a science?
36. What did Al-Kwarizmi actually say about algorithms?
The question set is the students' basis for both expository and philosophical essays, now underway. And, by the way, we're still arguing about whether a recipe is an algorithm.