tag:blogger.com,1999:blog-82729561369967485032024-03-13T23:39:19.432-06:00Teaching the Philosophy of Computer ScienceRobin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.comBlogger16125tag:blogger.com,1999:blog-8272956136996748503.post-43221212882253840812020-01-28T09:09:00.001-07:002020-01-28T10:09:06.251-07:00Teaching a First-Year Seminar in Computer ScienceAfter an absence of some time, the author has returned with an item about teaching in response to a particular request for more specific materials. Since I have already fallen into a pattern, I can explain the progress of the course in terms of that framework.<br />
<br />
For the introduction and motivation, please see my new CACM blog series on the philosophy of computer science, at:<br />
<a href="https://cacm.acm.org/blogs/blog-cacm/238427-lessons-from-a-first-year-seminar/fulltext">https://cacm.acm.org/blogs/blog-cacm/238427-lessons-from-a-first-year-seminar/fulltext</a><br />
<br />
<hr />
<br />
<br />
<i>The instructor who wishes to apply the ideas in this article should plug in her or his own specific materials, such as detailed computing topics and a classic work of literature with a theme shared by Internet issues.</i><br />
<br />
<b>Framework for a First-Year Seminar in Computer Science</b><br />
<br />
<br />
Major Subject Areas (each about half of the material)<br />
COMPUTING: Low-level fundamentals of computing, to introduce enough technical material that students construct a solid, though sparse, conceptual framework of computation, to support subsequent exploration and additional learning.<br />
INTERNET: Issues that have emerged from the quick and broad penetration Internet services, particularly social media. Computing is firmly connected to glaring bad outcomes that the inclusion is necessary, not contrived.<br />
<br />
Reading and References<br />
1. Blown to Bits, by Abelson, Lewis, and Ledeen 2008, available for free as a PDF document online (both COMPUTING and INTERNET)<br />
2. Several articles from respectable news outlets, and other freely available journalism (for INTERNET)<br />
3. Web sources for introductory programming, and my own programming materials (for COMPUTING)<br />
4. Classic work of fiction on a theme related to an Internet issue, supporting assignments to foster humanities skills, such as reading, analysis, and discussion. I choose a classic work of literature that illustrates a situation similar (given abstraction) to those we see today.<br />
Fall 2018 class read "Frankenstein"; the shared theme was the unintended consequences of technology.<br />
Fall 2019 class read "The Scarlet Letter"; the shared theme is public shaming.<br />
Future Possibilities:<br />
"Things Fall Apart" where the theme is damage done to a way of life by hubris and intrusion from outside.<br />
"Madame Bovary" (or even "Emma") where the theme is the hubris of an intended social benefit that proves harmful.<br />
<br />
More on the COMPUTING subject area:<br />
I teach the barest fundamentals that allow a grasp of the computational paradigm--<br />
Bits, bit strings and how they represent data, leading to their diverse interpretations by processing instructions.<br />
Number systems, leading to binary and hexadecimal representations, and discrete symbols.<br />
Programming -- minimal structures are sequence, assignment statements, conditionals, and repetition, leading to algorithms and rudimentary design.<br />
Arrays, leading to identification by location; hence, addressing.<br />
<br />
The general pedagogical purpose of a first-year seminar, to foster student work at the college level, is fulfilled in part by the research paper assignment. Students choose a topic of interest to them, related to computing; we go through example topics to demonstrate narrowing down the scope to something meaningful and tractable. In addition to the usual incremental research paper assignments -- topic development, annotated bibliography, sentence outline, and drafts -- the students write pieces that explain aspects of computing.<br />
<br />
Technology and humanities subjects can feed into each other. My students:<br />
1. Mine the novel for unfamiliar words for purposes of lookup and search exercises.<br />
2. Study the technical concerns of writing, such as character codes, in terms of data.<br />
3. Design a simple graphic icon based on events or settings of the novel, which is then used as a subject for algorithms such as encoding and compression.<br />
<br />
A group presentation assignment takes up some issue of the modern Internet and Web, with a topic drawn from current events. In my experience, first-year students struggle to achieve adequate quality in research papers and presentations, and can be shocked by assessment at college standards.<br />
<br />
Special needs for a first-year seminar in Computer Science include a list of research sources -- scholarly, with peer-reviewed options, but suitable for freshmen (still under development, not satisfactory).<br />
<br />Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com0tag:blogger.com,1999:blog-8272956136996748503.post-62286855174760930982016-09-01T14:49:00.002-06:002016-09-01T14:49:54.221-06:00Blog at CACMThis blog is <i>still </i>cheerfully neglected by me, its author. If you, its reader, are checking it for some reason, please note that I am writing a blog for the Communications of the ACM on the philosophy of computer science.<br />
<br />
Two posts have appeared so far, covering matters that may be of interest to you. You can see them, and all of the Blogs@CACM here: <a href="http://cacm.acm.org/blogs/blog-cacm">http://cacm.acm.org/blogs/blog-cacm</a>Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com0tag:blogger.com,1999:blog-8272956136996748503.post-66405592457627198962015-01-15T15:52:00.000-07:002015-01-15T15:52:01.387-07:00PublicationThis blog is cheerfully neglected as I become more active in the development of the field Philosophy of Computer Science itself. The class that I taught, on the ontology of algorithms, led to a talk, as mentioned before, and also to a full paper on that topic.<br />
<br />
This paper, "What An Algorithm Is," has been published in the journal Philsophy & Technology, DOI 10.1007/s13347-014-0184-5 (but not Open Access). Please see the site of the Commission on the History and Philosophy of Computing for this reference, and more research of interest, under Publications: http://hapoc.orgRobin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com0tag:blogger.com,1999:blog-8272956136996748503.post-40066713682764218532014-06-27T11:26:00.000-06:002014-06-27T11:26:24.039-06:00A Call for More Philosophy in the Philosophy of Computer ScienceDelving more deeply into the current philosophy of computer science reinforces my view that enticing subjects have escaped exploration. New concepts and artifacts have come out of computer science-- algorithms, data structures, parallel processing protocols, axiologies of programming practices, privacy and security concerns, and networking and communication designs have all emerged. But the research that has been done on them, in great measure, treats them within their computational context rather than as objects of interest in their own right. Shouldn't we apply philosophy to the phenomena that have been exposed by computing, as we apply philosophy to phenomena exposed by other social and scientific movements?<br /><br />I have attempted to do that with regard to algorithms, as will be discussed at HaPoC 2014. Some of these questions will have been addressed already-- I am not conversant with all research in the philosophy of computer science-- and I hope that alert readers will note that.<br /><br />In metaphysics, for instance-- Do arrays exist in nature; what are the natural phenomena that correspond most closely to arrays (or linked lists, or other abstract data types that we find useful), and in what ways? And what about the semantic web, which represents a major effort to establish a universal, or near-universal, ontology, shared among Web users for the benefit of all? While considering the challenges of this symbolic work, the syntax and semantics, the tension between expressive and inferential power, we could also expand the metaphysical questions pertaining. If we were to start from scratch to build an ontology of everything on paper, for people, and we were to start from scratch to build an ontology of everything in some data model, for a database, would they turn out to be the same? Suppose, as seems likely, each effort fails at some point; would they have carved out the same portion of the universe to represent? To what extent does a breakdown into entities, attributes, and relationships fit the real world? What are the alternatives? Is there some greater abstraction, some sort of category theory (computational or not), of information capture? <br /><br />And we can follow this path into novel issues of epistemology. How about the epistemology of Web search? What is search, anyway? What type of doxastic re-structuring does a search result engender; how does finding an answer compare to learning a fact in some other way? What type of knowledge acquisition in the panoply of epistemic theories best accounts for search?<br /><br />We can even follow this path into aesthetics. What is the nature of the satisfaction that comes from solving a symbolic problem, as in a game or a software design, and how does it relate to the appreciation of other arts? Why is programming fun? Why are there no elegant algorithms for calendar work (determing the day of the week for a given date, for example)? Is it because our calendar is inherently ugly, and if so, in what sense-- because, developed incrementally and ad hoc, the calendar doesn't fit any of the clean preferred patterns that we admire? Do "hand-made" data structures somehow escape the digital abstractions that we have developed? Or is it because the cycles of human-scale time are arbitrary? But we view the irregularity of nature, with its spots, wrinkles, colors, shreds, and other unorganized details, as beautiful. What does that say about us, and what does it say about the computational paradigm?<br /><br />These questions might inspire student interest, as well as fostering respectable philosophical contributions based on scrutiny and interpretation of the computing phenomena that surround us. Many of the papers that appear, on computational models of ethics (or action or explanation), or on information theory, or on intelligent agents, instead interpret philosophical questions in terms of symbolic computing. There seems to be an inclination to set up a formal system to capture the concept, but the formal methods strip out some of the interesting material. The approaches are complementary, and both should be pursued.<br /><br />Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com0tag:blogger.com,1999:blog-8272956136996748503.post-77118279687667231752014-06-10T18:16:00.000-06:002014-06-10T18:16:16.709-06:00And Further Development-- IACAP 2014I will be speaking on a panel, "History and Philosophy of Computing," that should prove to be an interesting look at that greater topic, at the annual conference of the International Association for Computing and Philosophy. The symposium is organized by the Commission for the History and Philosophy of Computing. It will be held in Thessaloniki, Greece, in July.<br />
<br />
See the plan here:<br />
<a href="http://www.hapoc.org/events/iacap">http://www.hapoc.org/events/iacap</a>Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com0tag:blogger.com,1999:blog-8272956136996748503.post-4788204497164320912013-10-01T11:28:00.000-06:002013-10-01T11:30:02.944-06:00An Outcome: Inchoate View of Algorithm OntologySince Moshe Vardi's Editor's Letter coincided so nicely with my own formulation of the theme of the philosophy of computer science class of Fall 2012, I wrote a letter to the editor (of the Communications of the ACM) outlining some of the questions that suggest a more grounded and less formal view of the algorithm. I am now investigating the consequences. (Here's a
sentence that was deleted during editing: "Let us suspend the notion
that what a computer DOES must inform what an algorithm IS.")<br />
<br />
The letter can be found here. Please scroll down, as it is not the top entry.<br />
<br />
<a class="moz-txt-link-freetext" href="http://cacm.acm.org/magazines/2013/6/164592-how-to-claim-your-fair-share-in-academic-publishing/fulltext">http://cacm.acm.org/magazines/2013/6/164592-how-to-claim-your-fair-share-in-academic-publishing/fulltext</a>
Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com0tag:blogger.com,1999:blog-8272956136996748503.post-23090639215619238622013-05-27T17:55:00.001-06:002014-06-27T11:27:35.969-06:00A New Topic: Objective Search<br />
Here is a new and different topic for a Philosophy of Computer Science class. <br />
<br />
Objective web search-- search that carries no geographic or demographic predilections-- would seem to be critical for research. Google offers the option to turn off search history personalization, and to change the geographic context. One attractive way to accomplish this would be for the search engine to explicitly list<br />
all the factors at play (date and time, Internet activity, IP address area, recent purchases, social network contacts) in a search, and allow piecewise disabling of the filters.<br />
<br />
Two types of parameters affect the results, of course-- the user's demonstrated interests and preferences, maintained in personalization data, and other people's opinions, reflected in the priority of results presented. Is there any way to request "universal" search, which would return the same results under any circumstances, thwarting both types of parameters? In the category of others' opinions, the Google algorithm PageRank, determining the order of appearance of retrieved web pages, obviously exerts an enormous influence on what users see. What kind of factors affect the PageRank algorithm's authority measures? Would objectivity require forgoing PageRank altogether, and if so, could some other efficient ranking organize the millions of results? For example, could a known bias in one parameter be offset somehow by a conflicting bias?<br />
<br />
Along with the question, "Can we get completely objective results from Internet search engines?", other questions arise:<br />
<br />
1. Do students, and even academic staff and sophisticated researchers, understand the implications of personalized search?<br />
<br />
2. As a free service, is Google required to provide services and options like this that the public, or the academy, demands? Should it be treated as a public utility, under regulations that would force it to do so? If so, how does the international nature of the Internet bear on that treatment and those regulations?<br />
<br />
3. Is a "universal" or truly objective point of view for web searches possible, meaningful, desirable? Is Google responsible for not just reflecting, but successfully defining, such objectivity in its presentations of results? Is Google responsible for exposing all the factors pertaining to its searching and ranking algorithms? Does the rise of the Internet affect traditional issues of subjectivity in research?<br />
<br />
Under this topic, objective web search, the philosophical subject matter includes ethical and governance issues respecting social justice, as well as, perhaps, the epistemology of the prediction of requests. The computer science subject matter includes design and analysis of search algorithms, as well as myriad issues regarding efficient distribution and retrieval of data. The topic invites a multi-disciplinary approach. The libraries of any educational institution would have cogent contributions to make. The social sciences could advise on the effects of community, local, and regional factors manifest in socio-economic and business data. History can tell us of the long-term effects of limited or distorted information. Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com0tag:blogger.com,1999:blog-8272956136996748503.post-3901803118622849772012-12-14T15:12:00.001-07:002012-12-14T15:28:55.933-07:00The Early ResultsAs the semester winds up, I feel that the course has been a success. This precedes grading of the final exam, and inspection of the student evaluations, and is colored by the usual relief on achieving the minimal standard that no disaster occurred. No one dropped out after the first week, no one imploded, and no one ran screaming from the classroom. (As they must, for greatest significance, these statistics include the instructor.)<br />
<br />
As a quick means of illustrating the outcomes, while keeping student work confidential, let me simply provide the questions from the Take-Home part of the final exam (which was complemented by an In-Class part).<br />
<br />
========<br />
<br />
<br />
<div class="p1">
1. Although we still haven’t decided whether an algorithm that we refer to by name, such as Selection Sort, includes all of its dynamic instantiations (executions), we know that it can’t be defined fully by just one execution trace. Why?</div>
<div class="p1">
<br /></div>
<div class="p1">
<br /></div>
<div class="p1">
2. We have seen that games rely on input data during execution. Theoretically, the result of any deterministic process that has all input known at start can be computed by an observer without even running. Consider an auction, as well, and explain whether these things are algorithms, in your opinion.</div>
<div class="p1">
<br /></div>
<div class="p1">
<br /></div>
<div class="p1">
3. (From the Final Review class): If a description, including task and preconditions, is part of an algo- rithm, what kind of part is it? What is the ontology of the description, and how does it relate to the ontology of the instructions? Here are some possibilities.</div>
<div class="p1">
<br /></div>
<div class="p1">
(a) The preconditions, because they are don’t fit our definition, are a separate but necessary part of an algorithm. The algorithm object is really a pair of things, one a written description and the other a written set of instructions as we have conceived of it.</div>
<div class="p1">
<br /></div>
<div class="p1">
(b) The preconditions are implicit in the instructions themselves, and don’t require a separate recognition. The algorithm is nothing without those conditions. So Binary Search, for example, because it works only on sorted data, “assumes” sorted data, without any need to say so explicitly.</div>
<div class="p1">
<br /></div>
<div class="p1">
Choose one, or make up your own, and defend it based on our accepted definition of algorithm, and your own view of the unsettled questions.</div>
<div class="p1">
<br /></div>
<div class="p1">
<br /></div>
<div class="p1">
4. Choose one of the questions below to answer. Your answer may be speculative, but give reasons for your claims.</div>
<div class="p1">
<br /></div>
<div class="p1">
(a) We have never clearly discussed one of the questions from the textbook: Do we ourselves embody algorithms? This does not mean executing an algorithm deliberately and consciously; it means how we accomplish tasks in our daily lives. We have discussed performing Binary Search in a naive form, when searching in a phone book, for example. How about others, such as transmission protocols and LIFO processing? Does your view on these questions tell us anything about algorithms in general?</div>
<div class="p1">
<br /></div>
<div class="p1">
(b) Is recursion itself an algorithm? Recall that we have seen a definition of primitive recursion (giving the minimal structures of a programming language) that includes this operation:</div>
<div class="p1">
f (x, 0)<span class="Apple-tab-span"> </span>=<span class="Apple-tab-span"> </span>h(x) </div>
<div class="p1">
f (x, succ(y))<span class="Apple-tab-span"> </span>=<span class="Apple-tab-span"> </span>g(y, f (y)</div>
<div class="p1">
Although it is given as a declarative, contributing to the definition of a set of functions, can it be construed as a set of directions and thereby an algorithm in itself? Explain your answer by using aspects of algorithms that we have seen in this class.</div>
<div class="p1">
<br /></div>
<div class="p1">
<br /></div>
<div class="p1">
5. We have a list of still-controversial properties, as given in Chapter 10 of the textbook. These are attributes that may or may not apply to algorithms in general (or perhaps they have different values for individual algorithms). They are inter-dependent in many ways. Pick one and explain how settling its status would affect two of the other controversial properties.</div>
<br />
<br />
<br />Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com0tag:blogger.com,1999:blog-8272956136996748503.post-41639208806199219202012-10-28T20:40:00.000-06:002012-10-28T20:40:24.513-06:00The Intuitive Path<br />
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.<br />
<br />
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.<br />
<br />
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. <br />
<br />
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.<br />
<br />
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.<br />
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? <br />
<br />
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?<br />
<br />
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.<br />
<br />
2. Does an algorithm have to be digital? Or symbolic?<br />
8. Is the algorithm a "natural kind?"<br />
12. Is the imperative construct compositional?<br />
19. Is developing algorithms an art or a science?<br />
36. What did Al-Kwarizmi actually say about algorithms?<br />
<br />
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.<br />
Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com1tag:blogger.com,1999:blog-8272956136996748503.post-49431308772073974092012-09-12T20:44:00.002-06:002012-10-28T20:41:13.397-06:00The First Couple of WeeksThe class has started off, with neither a bang nor a fizzle, but with satisfactory activities and solid interest. Because my students did not sign up to serve as subjects of public discussion, and because the only view that I can relate is that of the instructor, I will forgo describing the class proceedings.<br />
<br />
Suffice it to say that I am balancing the technical and the abstract, usually in each class session, by (1) examining and practicing algorithm tracing and representation, with simple sorting, searching, and encoding; and (2) discussing philosophy in general, and posing questions about individual and comparative features of algorithms. We have read the entry, "Philosophy of Computer Science," in the Stanford Encyclopedia of Philosophy, and we have read Moshe Vardi's letter, mentioned previously, in the Communications of the ACM. And I am assigning and collecting a steady stream of written work. <br />
I have taught, in a cursory way, more of the technical matter than I thought would be necessary at the start, such as semantic functions and compositionality, monotonicity, the entity-relationship model, with set theory coming up. But no student is in danger of mastering those subjects in this class. <br />
<br />
We are also, in this course, testing a new Learning Management System, which brings our high-minded inquiries down to earth for dealing with the intricacies of web interfaces. And we are discovering that some of the classrooms no longer provide the equipment that I expected. I'm pleased to say that these mundane details of teaching are offset by the interesting questions and speculations already at play in the class.Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com1tag:blogger.com,1999:blog-8272956136996748503.post-66495719715589873822012-07-31T11:07:00.003-06:002012-07-31T11:10:09.470-06:00Materials on the Ontology of AlgorithmsOne good plan for a course on the ontology of algorithms would be to read the Editor's Letter from Moshe Vardi in the March 2012 issue of the Communications of the ACM, "What is an Algorithm?" [1] A short up-to-date view from an authoritative source would start us off on the right foot. Vardi reflects on the significance of his title question and the dearth of answers, and refers to two papers presented at an international congress by Yiannis Moschovakis and Yuri Gurevich. We could spend a semester mastering the technical material and discussing the competing claims of those two works, deriving their implications, and comparing them with others.<br />
<br />
But this is a junior class for newcomers to the fields. A quick glance back at the course objectives fails to reveal "bafflement" or "intimidation." It would be counter-productive to throw these students into the research literature of academic computer science. Instead, we will start our exploration at the level of intuition and move forward into tutored intuition, perhaps approaching the same points across friendlier terrain. Points raised by Moschovakis and Gurevich include the status of declarative structures as algorithms, for example, and the possibility that heterogeneous types of abstraction might be appropriate. Nice issues! All three papers are cited in the course textbook.<br />
<br />
I am indeed writing a textbook for this course, which will end up as a modest textbooklet, or course packet. I want to provide concise materials, encouraging students to contribute to the elaboration of questions as well as answers. I want to easily reference other elements of the course, such as examples, tables, definitions, and completed exercises. (The manuscript format is EPUB, using Amaya and Sigil for composition, and I will distribute the text for free to students.)<br />
<br />
These written materials, unsurprisingly, are sparse. Yet an outline emerges, built on a sequence of ontological questions.<br />
<ul>
<li>What is an algorithm, as defined by examples?</li>
<li>What distinguishes algorithms from other abstract structures?</li>
<li>What makes two algorithms identical or distinguishes one from another?</li>
<li>What are the properties that we can attribute to individual algorithms?</li>
</ul>
I provide several simple algorithms on paper, to start, for close examination. We will unapologetically use rigorous-enough pseudocode for the expression of algorithms. We will gloss over implementation details and mathematical formalisms-- unless they arise naturally in some critical context. We will spend a lot of time articulating descriptions of tasks and their solutions; we will not shrink from mundane or silly analogies if they help to get a concept across.<br />
<br />
Such a breezy appeal to informality notwithstanding, this class calls for set theory and other simple discrete mathematics. (Don't they all?) The students will need to get comfortable with functions as sets of ordered pairs, and with Turing Machines as tangible abstractions (so to speak) for programs, and with uncomputable functions. The resulting textbook's outline:<br />
<br />
I. Introduction<br />
In which we enact algorithms.<br />
<br />
II. The Background<br />
Definitions<br />
In which we tackle the definitions of philosophy, computer science, ontology, and algorithm, relying heavily on other people's work.<br />
Simple Set Theory<br />
In which we master the basics of finite and infinite sets and subsets, membership, operators, and cardinality.<br />
<br />
III. What Are Some Examples of Algorithms?<br />
In which we read, trace, and write pseudocode for standard named algorithms, trying to elicit possible characterizations.<br />
<br />
IV. What is the Class of Algorithms?<br />
In which we compare algorithms with other structures, such as directions, games, and proofs, and attempt to formulate some for simple tasks.<br />
<br />
V. What Makes Algorithms the Same or Different?<br />
In which we study programs as Turing Machines, as well as relations and functions, seeking insight to determine how many different payroll algorithms exist; not to mention, algorithms for trivial tasks, algorithms for arithmetic, and so forth.<br />
<br />
VI. What Properties do Algorithms Hold?<br />
In which we attempt to articulate the key properties that apply to all or some algorithms, or figure out why we can't.<br />
<br />
Now that the course planning is under control, this blog may languish as I travel and finish preparations, until I get some time to report after the semester starts.<br />
<br />
<br />
[1] Moshe Vardi, What is an Algorithm?, Communications of the ACM, March 2012, pg. 5 (55:3) DOI:10.1145/2093548.2093549<br />
<br />
Links to the two papers he mentions--<br />
Gurevich: <a href="http://goo.gl/0E7wa%20">http://goo.gl/0E7wa </a><br />
Moschovakis: <a href="http://goo.gl/HsQHq">http://goo.gl/HsQHq</a>Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com2tag:blogger.com,1999:blog-8272956136996748503.post-70484056711636467862012-07-23T09:26:00.000-06:002012-07-23T09:33:18.139-06:00Assignments and Activities on AlgorithmsThe student background is assumed to be mixed, some more comfortable with philosophy, and some, with computer science. Assignments should be designed to both pull and push, so to speak. And, as mentioned in "Pedagogical Goals," they should foster respect for the methods and matters of the other discipline.<br />
<br />
Some assignments should be small. Some should be large. Some should be machine-gradable. Some should be peer-gradable. Some should be collaborative. Some should require revision. I intend to assign many short written pieces and many small research tasks. Often, these will be combined. Some will be assigned to only one person, who will have the duty of reporting to the class. The instructor's task, in addition to formulating the assignments themselves, is to coordinate all of the work, and spread it fairly across the student body.<br />
<br />
Initial work will focus on defining the concepts concerned-- philosophy, computer science, ontology, and algorithm-- that last, at least tentatively. Subsequent early activities will exercise our grasp of particular algorithms in order to strengthen our understanding of the general abstract concept. We will start by running through some simple classic algorithms for searching and sorting. We will act out some of them with tangible data such as decks of playing cards, sorting the cards into order in different ways, and searching for target values in the deck in different ways. <br />
<br />
Questions that we will consider as we do so include: How does this algorithm work; how would you explain it in a sentence? What are the preconditions? How is the output or solution manifested? What makes this algorithm unique? Worthy of a name? Interesting? The first few questions are more technical to appeal to the budding computer scientists, and the latter more lyrical, if you will, to appeal to the budding philosophers. These questions can be turned into short assignments.<br />
<br />
We will also watch carefully for steps in which we exercise human judgment or short cuts, and consider whether those can be captured in a program. To clarify such issues, we will examine common sets of directions such as recipes, licensing procedures, and IRS tax form instructions. We will consider whether computation is always a component of an algorithm, whether an algorithm can have intermediate input, and whether an algorithm assumes a problem to be solved. While these preliminary questions lend themselves better to discussion than to individual writing, the writing can be assigned as a product of the discussion.<br />
<br />
Short pointed work is effective, in my experience. I rely on assignments of the fill-in-the-blank and worksheet type, which can serve as homework exercises with clear right and wrong answers [1]. And it doesn't have to be rote. I can illustrate this in terms of another computer science topic, the Halting Problem, as it might be pitched to different levels of expectation. A graduate level exercise on the Halting Problem might ask for a proof of its unsolvability and discussion of the implications. An upper-division undergraduate form of the exercise might present a sketch of the proof and ask for its completion. A lower-division undergraduate version (which I have used in a multi-disciplinary sophomore course) might supply each of the steps, written out, and ask for them to be arranged in the right order. These techniques can be applied to explication of algorithms. For this class, written traces of the more sophisticated sorting and searching algorithms might fill the bill, especially if they also require comments on the appropriate context of application. If this doesn't quite work, subsequent problem sets can be pitched up or down.<br />
<br />
Students will also perform Internet research to find algorithms in pseudocode form, and will send messages of acknowledgement to those who provide such materials. We will build up expertise, and refine definitions, as we go along, so I will also assign students to record notes in class meetings, and post them in a repository for future reference.<br />
<br />
For assignments directed to a higher level of thinking, I plan a project that probes how strictly algorithms are embedded in daily human or natural life, as mentioned in the previous post, "Theme: The Ontology of Algorithms." This will require students to research, understand, and apply an algorithm in a familiar context, perhaps with some fictional or creative component, and will contribute to the investigation of some of the greater questions, such as whether nature executes algorithms.<br />
<br />
We won't neglect assignments at the top levels of Bloom's taxonomy. The students will (perhaps later) consider a couple of wild cards that might make juicy essay topics: <br />
(1) What would a non-analytic account of algorithms look like; how would this come out in the tradition of Continental philosophy? <br />
(2) Are algorithms created or discovered? <br />
Question 2 seems a good candidate for an essay during the first half of the course that is later revised near the end, not with a view to correction of the answer, but with a view to more sophisticated treatment.<br />
<br />
[1] Mark Guzdial, BLOG@CACM, February 20, 2012, "Why Don't we use Worksheets in Computer Science Education?", http://cacm.acm.org/blogs/blog-cacm/146183-why-dont-we-use-worksheets-in-computer-science-education/fulltext<br />
<br />Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com0tag:blogger.com,1999:blog-8272956136996748503.post-47861558777259508302012-07-13T16:31:00.000-06:002012-07-22T14:21:16.339-06:00Theme: The Ontology of Algorithms<br />
The theme that I have chosen for Fall 2012 is "The Ontology of Algorithms." We can try to figure out the nature of the algorithm and what distinguishes it as a concept, what attributes algorithms might have, and what other questions might bear on the subject. We can start with the idea of computations, as grasped formally and informally, and consider each of the elements input, process, and output. We can consider such notions as whether nature executes algorithms. <br />
<br />
This will produce some questions for student discussion:<br />
Will we require an algorithm to take input? Will we require an algorithm to have output? Are there different algorithms for the same function? (Of course.) Are there different functions for the same algorithm? Hmm... that would require interpreting the actions of an algorithm as producing more than one set of ordered pairs. Are there different programs for the same algorithm? (Of course.) Are there different algorithms for the same program? That depends on the answer to the question whether there are different functions for a single algorithm. Shall we detach the notion of algorithm from its theoretical base, the computation of a function? Suppose we see systems all around us that do nothing; should we consider that the same as computing the identity function or the null result? <br />
Based on the question above about nature: Does an algorithm have to be executed? Does a seed embody an algorithm? Is an algorithm a static program or a dynamic process, or both?<br />
<br />
A good place to start might be some questions embedded in daily life:<br />
Do we ourselves follow algorithms as we know them? In the non-digital domain, do we practice or experience transmission protocols, LIFO versus FIFO processing sequences, semaphores, public keys, dangling pointers, caching...? Is there a human analogue to algorithmic self-reference? What about static data structures: Can we name a foundational set of data structures, provide identity conditions, and find analogues in human life? Or are data structures inextricably integrated with algorithms? What about a foundational set, and human analogues, of algorithmic errors? <br />
<br />
Some of these can become assignments, in some form. As with all teaching, the challenge will be capture these topics in solid pedagogical elements such as student work, purposeful discussion, and meaningful assessments.Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com1tag:blogger.com,1999:blog-8272956136996748503.post-2590105106789850762012-07-13T16:29:00.002-06:002012-07-13T16:29:25.642-06:00Pedagogical GoalsWhat are the objectives of the course? In my case, I want to bring together two formidable disciplines into a junior-level one-semester course, the students in which will be required to have minimal experience in academic philosophy and computer science-- to wit, an introductory course in each. For this subject, there is no standardized test for assessment. That context informs my high-level list of course objectives, quite spare, which can be summed up as (1) to assimilate, and (2) to explore:<br />
<br />
1. To master a grounding body of knowledge and an appreciative curiosity about the philosophy of computer science, to the extent of cogent explanation to others.<br />
<br />
2. To build respect for both disciplines, especially in students from the other; to promote pride and concomitant rigor in the student's own discipline.<br />
<br />
In other words, for objective 1, I will be happy if the students can explain the subject matter (algorithms in general, and a few in particular), and can also produce some reasonably substantial and accurate answers, in real time, when their friends ask, "Dude, what was that class about?" This is a modest goal. Flights of fancy would embrace serious scholarly work in the field, and even the refinement of the subject matter of the Philosophy of Computer Science itself... As for objective 2, like all instructors, I want to bring about the kind of transformative contemplation that helps cultivate a breadth of wisdom and keenness of intellect in my students. <br />
<br />
Besides the large goals, it's time for a few preliminary methodological goals to serve as the means to the general ends.<br />
<br />
I want to provide concise but thought-provoking materials, encouraging students to contribute to formulation of texts, questions, and answers. I want to integrate the materials via regular references to elements of the course elsewhere, such as examples, tables, definitions, and past exercises.<br />
I want to replace vague undirected blather with pointed and disciplined inquiry-- even if speculative-- and exposition. I want to traverse a clear path through the materials-- even if selective-- that fosters "deep thinking." I want assignments that give the students something meaningful to do, large enough for challenge and small enough for achievement, that delivers a worthwhile outcome.<br />
<br />
Note that the objectives listed are independent of the theme, but it is meant to be inserted firmly into the placeholder "grounding body of knowledge" in objective 1. Even though my position in a faculty development center favors me with revolutionary educational theories of all stripes, I hold a traditional view of content: There should be some.<br />
<br />
In fact, there should be plenty. Scoping and circumscription of the appropriate body of knowledge, focused on the theme chosen, will be an initial challenge of this new course in this new subject.Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com0tag:blogger.com,1999:blog-8272956136996748503.post-8820071751276915302012-07-10T10:00:00.000-06:002012-07-13T16:23:00.816-06:00The Subject MatterThe field is inchoate. The questions are disparate. No syllabus synthesized from long tradition is available. We need a focus, a jumping-off point.<br />
<br />
Many working at an intersections of philosophy and computer science would assume that the proper subject matter of a course in the Philosophy of Computer Science is thinking machines-- that is, artificial intelligence (general AI), philosophy of mind, and epistemology, enjoying the light shed on these matters in this Turing Centenary year. Indeed, this would be an appropriate theme. <br />
<br />
The article entitled "Philosophy of Computer Science" in the Stanford Encyclopedia of Philosophy, by Turner and Eden [1], starts with a nice list of questions, and discusses mostly those issues concerned with programs-- semantics, specification-implementation-verification, and behavior. Indeed, these would also be appropriate themes.<br />
<br />
Issues regarding standards and licensing for the professions of computer science and software engineering give rise to interesting ethical questions, including the rights and responsibilities of the programmer; these also probe the relationship of computer science to other professions. Data collection raises issues of privacy and security. And these too would be appropriate themes.<br />
<br />
My dissertation adviser, Bill Rapaport, of the University at Buffalo, taught an undergrad/grad course on "Philosophy of Computer Science" [2], covering classic questions, and I myself taught a sophomore cross-disciplinary course called "Qualities of Quantities," centering on discrete math topics and computability. Oxford University offers a new degree in "Computer Science and Philosophy" for either a bachelor's or master's, rooted in the mathematical intersection. I see others worthy of investigation, as well, in the form of individual courses, conferences, talks, and papers. <br />
<br />
Although some precedents do exist, none exactly fill the bill. I seek to draw out questions that are fresh, vivid, and approachable by undergraduates. To expand the possible subject matter before selecting a theme, let's ask how else the traditional concerns of philosophy play out in computer science.<br />
<br />
Computer Science Adaptation of Traditional Philosophical Concern: Aesthetics<br />
<br />
Is computer science ugly? Sterile? Why do mechanistic procedures, which block emotional manipulation and influence, scare people? What does steampunk tell us about the aesthetics of computation? Or of technology? How about the visions of technology presented by classical science fiction? Does the beauty of mathematics encompass the beauty of computer science? Are there any good computer science jokes? What makes an algorithm "elegant"? What makes computer scientists "geeky"? <br />
<br />
Computer Science Adaptation of Traditional Philosophical Concern: Metaphysics<br />
<br />
Is computation the same as technology? What is the space, in the realms of technology, or mechanistic devices, that is occupied by computation? Is it exhaustive; is the universe a computer? How do we tell? What does it mean to be a computer? Does everything that shows cause and effect, or inputs and outputs, or changed states, like the wind, like organic growth, compute? What sort of object is a program? What sort of object is an algorithm? Is the ontology of algorithms (or programs) like the ontology of theorems (or proofs) in mathematics?<br />
<br />
Computer Science Interpretation of Traditional Philosophical Concern: Ethics<br />
<br />
Does transfer from paper to electronic forms affect our view of data and its proper treatment; to what extent is our view of the proper treatment of data influenced by the limitations of the paper medium? Is computing a resource, like others, that should be deployed judiciously, and otherwise conserved? In addition to the privacy questions regarding data collection, who is responsible for that data's accuracy, maintenance over time, dissemination for the public good, and archiving? Can data be owned? Can an idea be owned? Can its tangible forms be owned? What are the tangible forms? Does computing have a universal purpose? Should it? What is the effect of heavy venture-capital funding directed to the entertainment and marketing applications of computer science? When posterity looks back at this early Information Age, will they think that we did something terribly wrong, and if so, what? <br />
<br />
<br />
[1] Turner, Raymond and Eden, Amnon, "The Philosophy of Computer Science", <i>The Stanford Encyclopedia of Philosophy (Winter 2011 Edition)</i>, Edward N. Zalta (ed.),
URL = <http://plato.stanford.edu/archives/win2011/entries/computer-science/>.<br />
<br />
[2] Rapaport, William F., "What is the Philosophy of Computer Science?", Website, URL = <http://www.cse.buffalo.edu/~rapaport/584/whatisphilcs.html>.Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com1tag:blogger.com,1999:blog-8272956136996748503.post-11171037752142619962012-07-10T09:58:00.000-06:002012-07-20T10:42:42.413-06:00The Task and the PlanIn the Fall 2012 semester,
I will teach "Introduction to the Philosophy of Computer Science" as a junior-level course at the University of Wyoming in the United States. Not only is this a new course on this campus, but it's a new field in the academy. After many years of teaching computer science, and several teaching logic in our Philosophy department, I now coordinate instructional computing at our Center for Teaching and Learning. I hope my expertise in these roles aids development of worthwhile content and successful delivery. <br />
<br />
While this material is discipline-specific, even esoteric, I believe that its crossover nature, and aspects that lend themselves to general discussion of pedagogy, would appeal to a broad sector of academic readers. I hope to offer most of my ideas during this summer of 2012, in order to have the major course design done before classes start at the end of August. You are invited to follow along and contribute your own thoughts. Identification will be required. I will monitor posts and delete those that are incoherent, offensive, or otherwise counter-productive.<br />
<br />
Here follow some of the facets that I hope to address, in concert with contributors:<br />
<ol>
<li>The subject matter </li>
<li>Pedagogical goals, general and specific</li>
<li>Assignments that work</li>
<li>Teaching methods </li>
</ol>
Please join in. You may e-mail me a comment to post if you prefer not to set up a Google (or OpenID) account.<br />
<br />
<ol>
</ol>Robin K. Hillhttp://www.blogger.com/profile/08798563027720223764noreply@blogger.com0University of Wyoming, Laramie, WY 82071, USA41.186922422902938 -105.61157226562540.422482422902938 -106.874999765625 41.951362422902939 -104.348144765625