Subject: What Is CS? and some updates From: "William J. Rapaport" Date: Tue, 26 Jan 2010 13:14:53 -0500 (EST) 1. Here's a bad argument inspired (but not explicitly stated) by http://weblogs.java.net/blog/n_alex/archive/2003/08/computer_scienc.html 1. "Logic is the foundation of philosophy." 2. "It's also the foundation of Computer Science." Therefore(?), 3. "Computer Science is Philosophy" Question: Why is it bad? :-) 2. Here are some notes from a recent conversation with Shapiro about his view of CS as the natural science of procedures: a) Procedures are natural phenomena in the sense that they are subject to physical constraints. Similarly, the rules of actual chess games are natural, because they are subject to time constraints, but the abstract, mathematical rules of chess are not natural, because in principle there is a winning strategy that could be determined if we ignore physical constraints. b) Bird-nest-building procedures and beaver-dam-building procedures are (naturally occuring) procedures, as are chemical reactios c) Computer science's subject matter is hard to "see" because it is *behaviors*; CS is the study of such behaviors. Compare the history of computational cognitive science, which began by trying to understand (human, psychological) behavior (stimulus-response behavior) as expressible by a computer program; see, e.g., Miller, George A.; Galanter, Eugene; & Pribram, Karl H. (1960), Plans and the Structure of Behavior (New York: Henry Holt), esp. Ch. 1: Images and Plans http://www.cse.buffalo.edu/~rapaport/Papers/Papers.by.Others/milleretalch1.pdf (Their "test-operate-test-exit (TOTE) unit" for explaining behavior is essentially a while-loop.) 3. I have updated the Argument Analysis and What Is Philosophy? websites, as well as the syllabus. http://www.cse.buffalo.edu/~rapaport/584/S10/directory.html ======================================================================== Date: Tue, 26 Jan 2010 19:28:17 -0500 (EST) From: "William J. Rapaport" Subject: Re: What is CS? A student writes: "There are a bunch of definitions for algorithm, but I wonder if an algorithm requires an agent (and isn't entirely natural). Presumably, an interesting algorithm picks out something other than the normal causal chain of events. If I found a recipe that said "wait here until all the ingredients fall into your plate", I wouldn't call that cooking. "I don't think procedures circumvent physical constraints, but do they at least stand above some of them and direct causal events of their own. I guess I'm having trouble seeing chemical reactions as procedures since they couldn't happen any other way." Good observations; hold onto the question of what an algorithm is till we get to that part of the course; then we can revisit this. As for your comment about chemical reactions not being able to happen in any other way vs. procedures, which, presumably can, consider this: Algorithms, at least, are supposed to happen in the way they are written; if they don't, they're considered to have a bug. Or did you have in mind the possibility of a single algorithm having a different outcome depending on how an "IF THEN" statement is executed? In any case, again, we'll return to this later. If anyone else wants to comment on this, please use UBLearns email so that we can all be part of the conversation. ======================================================================== Subject: What is CS? -- Autonomy From: "William J. Rapaport" Date: Tue, 26 Jan 2010 20:51:52 -0500 (EST) A student writes: "I was just reading the Hartmanis & Lin and noticed a curious paragraph on p166. Two sentences suffice to show my intrigue: "But in a program that involves many such decisions, the sequence of steps cannot be known in advance. Thus the programmer must anticipate all possible execution paths." Does this mean that computers are inherently autonomous????? If this is the case, then I think I just solved the problem of free will lol. Even if we aren't computers, our brains are light-years ahead in technology." Interesting observation; this, by the way, is exactly the kind of writing that should be going into your Reading Journal. Now, let's look at what H&L say more closely: The previous sentence says: "When a program does not involve such decisions [i.e., if-then-else statements and while-loops--WJR], the exact sequence of steps...is known is advance." What do they mean here? I think they mean that a so-called "straight-line" program, i.e., one without branches or loops, when executed, consists of a simple sequence of steps, each one of which is known in advance to correspond to one of the statements in the program. But when you add a "selection" or "branching" statement (if-then-else), then you cannot predict in advance which branch will be taken, because you cannot predict in advance what the input will be so that you could know whether the "if" statement will be true or false. (And similarly for while-loops.) If a program has lots of branching statements (which they typically will), then, the more it has, the less predictable its behavior. But note that this is unpredictability in practice, not in principle: We know that if P, then the computer will do S1, else it will do S2. We just don't know (now) which it will do because we don't know (now) whether P or not-P. The computer does have to be "autonomous": No human is supposed to be needed to help the computer decide what to do. The programmer must envisage all possibilities ahead of time and encode them in the program, precisely so that the computer doesn't have to ask for help, so to speak. Of course, you could write a program that asks for help: It could stop and ask for further user input, and then behave accordingly depending on what the input is. And this is, indeed, related to issues of free will, though I doubt that it solves that problem :-) How is it related? Well, maybe what we think free will is is just a very complex program encoded in our brains that has all possibilities worked out in advance.