On The Cruelty of Really Teaching Computer Science Redux Owen Astrachan http://www.cs.duke.edu/~ola Cruelty of Teaching Computer Science Redux, Fall 2005 1 Shoulders of Giants, Thanks “… it is a tale Told by an idiot, full of sound and fury, Signifying nothing.” Macbeth, V,v,19 Cruelty of Teaching Computer Science Redux, Fall 2005 2 Where are we going … Questions What should our concerns be for those choosing to major in Computer Science? courses, research, jobs, … Should we be concerned by the precipitous decline in those taking our courses? majors, technical students, non-technical … What can we do to ensure the ongoing success of our academic discipline? Look inward, look to others Cruelty of Teaching Computer Science Redux, Fall 2005 3 Cruelty of Teaching Computer Science Redux, Fall 2005 4 WWDD? Cruelty of Teaching Computer Science Redux, Fall 2005 5 Questions If you gotta ask, you’ll never know Louis Armstrong: “What’s jazz?” If you gotta ask, you ain’t got it Fats Waller: “What’s rhythm?” What questions did you ask in school today? Arno Penzias via Isaac Isadore Rabi Cruelty of Teaching Computer Science Redux, Fall 2005 6 Questions and Answers Judge a man by his questions rather than by his answers Cruelty of Teaching Computer Science Redux, Fall 2005 7 Don’t know much about history We are doomed if we don’t pay attention Cruelty of Teaching Computer Science Redux, Fall 2005 8 Who, when? “No stretching … is required to envision computer consoles installed in every home. Everyone will have better access to the Library of Congress than the librarian himself now has. Full reports on current events, whether baseball scores, the smog index in Los Angles or the minutes of the 178th Korean Truce Commission will be available for the asking.” John, McCarthy, Information, Chapter 1, 1966 Cruelty of Teaching Computer Science Redux, Fall 2005 9 You win some, you lose some People will soon become discontented with the “canned” programs available; they will want to write their own. The ability to write a computer program will be as widespread as the ability to drive a car. Not knowing how to program will be like living in a house full of servants and not speaking their language. Many people can write simple programs after an hour or two of instruction. … Programming is far easier to learn than a foreign language or algebra. Cruelty of Teaching Computer Science Redux, Fall 2005 10 Then and Now Ouchless I/O Bailey, SIGCSE 1972 All of the Fortran statements were to be introduced as the need arose within the context of a problem-solving situation—that is, a here-is-what-we-want-how-can-we-do-it approach…the overall objective of the course was to make the instruction as interesting and informative as possible. It is remarkable that the majority of students can indeed handle fairly complex I/O by the end of the first six lessons, even though they have not actually been formally taught how to do it. Cruelty of Teaching Computer Science Redux, Fall 2005 11 Now and Then Java IO and Testing Made Simple, Proulx and Rasala, SIGCSE 2004 We believe that the combination of the well-designed tools with well-designed abstractions presented here provide a solid foundation for introducing input processing to novice programmers. In addition to making the input from the user an integral part of student's programs, students learn from seeing and using abstractions that provide tangible and significant benefits. Cruelty of Teaching Computer Science Redux, Fall 2005 12 1984 Cruelty of Teaching Computer Science Redux, Fall 2005 13 Teaching Compsci in 1984 64K memory, 128K extended 8-bit, 1 Mhz 6502 processor 5Mb drive: $3500 UCSD Pascal: >$100 Owen's machine: $3000 $677.80 in 1984 has $1200 "purchase power" in 2003 http://eh.net/hmit/ppowerusd/ Cruelty of Teaching Computer Science Redux, Fall 2005 14 Typical machine in 2004? Cruelty of Teaching Computer Science Redux, Fall 2005 1 Gb memory 3+ GHz, 32-bit chip Cache, … 160 Gb disk Lots of free resources Good academic pricing Under $1000 15 What has changed in 20 years? Machines Characteristics and Availability Internet Availability, IM, web, Google, … Students Comfort with technology, Expectations Cruelty of Teaching Computer Science Redux, Fall 2005 16 The more things change…? Assume I took your first course(s) in 1984 and understood the concepts so completely that I could still get a 100 on the final from 1984 if I took it today (e.g., I've been in a cryogenic chamber). How would I do on the 2004 final exam? Cruelty of Teaching Computer Science Redux, Fall 2005 17 What has changed in Physics? "You'd get a 100 plus or minus sigma. Intro classical physics hasn't really changed that much over the last 100 years. In graduate level e.g. E&M or quantum classes I think ditto, although sigma would be bigger (and might depend more on the instructor variation than on any real variation in the material). The main difference is, I think, that your chances of GETTING 100 now would be much higher." Rob Brown, Poohbah of Physics Instruction Cruelty of Teaching Computer Science Redux, Fall 2005 18 What has changed in Biology? "The basic principles and concepts of biology haven't changed much in 20 years. What has changed relates to specific content, and in this arena the changes have been enormous. 20 years ago, we barely knew how to sequence DNA; today information of this kind has had a major impact on just about every topic in the biological sciences. Thus, some questions on an exam today would address topics that would be completely unfamiliar to a 1984 time-traveller. " Greg Wray, Director of Undergraduate Studies, Biology Cruelty of Teaching Computer Science Redux, Fall 2005 19 What has changed in Economics? "… we now cover material that was only introduced in an advanced or intermediate course in 1984. In 1984 we spent the bulk of the time dealing with the Keynesian model and virtually no dialogue about supply side policies. Now the Keynesian stuff is a small subset of a much broader exposure to Aggregate demand and supply… Also there is more international coverage now - as opposed to 20 years ago for obvious reasons." Lori Leachman, Director of Undergraduate Studies, Economics Cruelty of Teaching Computer Science Redux, Fall 2005 20 What has changed in Calculus? We have two varieties of calculus courses, the lab courses and the traditional ... The latter two have not changed significantly in decades, and I think that a student who fared well on the 1984 exam in those courses would do well today, and vice versa. [In the lab courses] You would ace about half the exam. The other half would be unfamiliar to you. For example, you would probably not know how to answer a problem on modeling a set of data, creating an approximation using Euler's method, interpreting derivatives in the context of applications in other fields, or giving explanations of ideas … Lewis Blake, Supervisor of First-year Instruction Cruelty of Teaching Computer Science Redux, Fall 2005 21 Changes in Computer Science? Cruelty of Teaching Computer Science Redux, Fall 2005 22 Changing CS? Rock, Hard place If Computer Science has changed drastically is it to keep up with fads and stylistic changes or because of fundamental changes in the discipline? Are we leveraging the technological and intellectual resources at our disposal If we haven’t changed, is it because of a solid bedrock of principles that endures? Or because we’re lazy, good-for-nothing, … Cruelty of Teaching Computer Science Redux, Fall 2005 23 1985, AP Computer Science, Q2 Write a procedure Compact that eliminates all elements with value 0 from its argument, a list. Compact leaves the order of the other elements unchanged. For example, if list is (0,9,7,0,0,23,4,0) When the procedure is called, it should be (9,7,23,4) After the procedure executes. All local variables should be scalar. (declaration for Pascal record with array and count) Cruelty of Teaching Computer Science Redux, Fall 2005 24 Concepts and Solutions Why the restriction to use only scalar variables? Force an expected solution? Punish students? What is expected solution, O(n) or O(n2) What if I make a new array? What does this look like today? (to appear) Cruelty of Teaching Computer Science Redux, Fall 2005 25 2004, AP, Question 1 public class WordList { ArrayList myList; public void removeWordsOfLength(int len) { // you write this } } Cruelty of Teaching Computer Science Redux, Fall 2005 26 Details of Question Revisited Write the WordList method removeWordsOfLength. Method removeWordsOfLength removes all words from the WordList that are exactly len lettters long leaving the order of the remaining words unchanged. For example assume that the instance variable myList of the WordList animals contains the following: {“cat”, “mouse”, “frog”, “dog”, “dog”} After the call animals.removeWordsOfLength(3) {“mouse”, “frog”} Cruelty of Teaching Computer Science Redux, Fall 2005 27 What about trends today? Cruelty of Teaching Computer Science Redux, Fall 2005 28 Cruelty of Teaching Computer Science Redux, Fall 2005 29 What is CS? Why study it? Do we have Physics (Math, …) Envy? “It's hard for voice over Internet Protocol or e-commerce to compete with finding the age of the universe,” Peter Lee, CMU Does familiarity breed contempt? What was different in 1984 than today? Cruelty of Teaching Computer Science Redux, Fall 2005 30 Cruelty of Teaching Computer Science Redux, Fall 2005 31 Cruelty of Teaching Computer Science Redux, Fall 2005 32 Cause for comfort or concern? Source: CRA Cruelty of Teaching Computer Science Redux, Fall 2005 33 Cruelty of Teaching Computer Science Redux, Fall 2005 34 Cruelty of Teaching Computer Science Redux, Fall 2005 35 COHFE Amherst College, Barnard College, Brown University, Bryn Mawr College, Carleton College, Columbia University, Cornell University, Dartmouth College, Duke University, Georgetown University, Harvard University, Johns Hopkins University, Massachusetts Institute of Technology, Mount Holyoke College, Northwestern University, Oberlin College, Pomona College, Princeton University, Rice University, Smith College, Stanford University, Swarthmore College, Trinity College, University of Chicago, University of Pennsylvania, University of Rochester, Washington University in St. Louis, Wellesley College, Wesleyan University, Williams College, Yale University Cruelty of Teaching Computer Science Redux, Fall 2005 36 Cruelty of Teaching Computer Science Redux, Fall 2005 37 What’s wrong with this picture? Why is the first year different from all other years? Cruelty of Teaching Computer Science Redux, Fall 2005 38 Algorithm Arch OS AI CMU MIT Stanford Berkeley UIUC Cornell UTexas UW Cal Tech Wisc G. Tech Maryland Brown UCLA Michigan UNC Penn Duke Harvard Purdue CrueltyUCSD of Teaching Computer Science Redux, Fall 2005 39 Books and Approaches Used Cruelty of Teaching Computer Science Redux, Fall 2005 40 Cruelty of Teaching Computer Science Redux, Fall 2005 41 Cruelty of Teaching Computer Science Redux, Fall 2005 42 If you don’t take a course in CS, you won’t major in it. Why is the first year different from all other years? Cruelty of Teaching Computer Science Redux, Fall 2005 43 Who's going to College? Cruelty of Teaching Computer Science Redux, Fall 2005 44 Who's going to College? Cruelty of Teaching Computer Science Redux, Fall 2005 45 Who's going to College? Cruelty of Teaching Computer Science Redux, Fall 2005 46 Interdisciplinary minors At Duke it is difficult to double major in sciences Too many requirements, 17 courses in biology Students are interested in credentials No business major/minor, certificate program (requires intro, capstone, six courses) Minor requires five courses, double counting ok Three courses in CS, two in econ or biology From gene to social networks, data mining, … Cruelty of Teaching Computer Science Redux, Fall 2005 47 Genome Revolution Focus Course Arts in Contemporay Society, Exploring the Mind, Evolution and Humankind, 20th Century Europe, Visions of Freedom, The Genome Revolution and its Impact on Society, … Three of four courses, one writing, two others. Interdisciplinary 0.5 credit seminar P/F Seminars, students live in same dorm 600+ out of 1600 in FOCUS course For Genome, 80 applicants for 30 slots, 65% women In CS Genomics course 8 women, 9 men Cruelty of Teaching Computer Science Redux, Fall 2005 48 Simple examples Given strand of DNA, calculate CG ratio Potential source of proteins “CGGATTATC” Given protein “HLVWW” calculate number of different DNA strands that could code for it 64 codons, 20 amino acids Find heaviest protein in array of proteins Given atomic mass of amino acids Interpret ORF data from NCBI website Cruelty of Teaching Computer Science Redux, Fall 2005 49 From Algorithms to Objects Read DNA assumed to be in 5’ to 3’ orientation Use BioJava to read via http Construct reverse complement (3’ to 5’) From CAATT produce AATTG How big is the human genome? Runtime of algorithm O(1) Cruelty of Teaching Computer Science Redux, Fall 2005 50 Computer Science is filled with real-world examples. Why is the first year different from all other years? Cruelty of Teaching Computer Science Redux, Fall 2005 51 A picture is worth … Cruelty of Teaching Computer Science Redux, Fall 2005 52 A thousand words Write class Cat that says 'meow' Write LoudDog that says 'bark-bark' when Dog says 'bark' Cruelty of Teaching Computer Science Redux, Fall 2005 53 How do we teach CS? Cruelty of Teaching Computer Science Redux, Fall 2005 54 Gries on Teaching Programming “Suppose you attend a course in cabinet making. The instructor briefly shows you a saw, a plane, a hammer, and a few other tools, letting you use each one for a few minutes. He next shows you a beautifullyfinished cabinet. Finally, he tells you to design and build your own cabinet and bring him the finished product in a few weeks. You would think he was crazy!” 1974 Cruelty of Teaching Computer Science Redux, Fall 2005 55 Putting it all together … …we conclude that students are not given sufficient instruction in how to "put the pieces together." Focusing explicitly on specific strategies for carrying out the coordination and integration of the goals and plans that underlie program code may help to reverse this trend. Sporher and Soloway, Novice mistakes: Are the folks wisdoms correct? Studying the Novice Programmer, 198956 Cruelty of Teaching Computer Science Redux, Fall 2005 Changing Data into Knowledge We provide an unjust education if we do not give every student the maximum opportunity for learning. Depending on their natural abilities, imbalance in education deprives some students of learning more than others. Those who are naturally more creative, or have better memories, or are more reflective, or are more active have different opportunities if we do not provide balance. That is unjust. James Zull: The Art of Changing the Brain Cruelty of Teaching Computer Science Redux, Fall 2005 57 Teaching as … English is not history and history is not science and science is not art and art is not music, and art and music are minor subjects and English, history and science major subjects, and a subject is something you 'take' and when you have taken it, you have 'had' it, and if you have 'had' it, you are immune and need not take it again." (The Vaccination Theory of Education?) Cruelty of Teaching Computer Science Redux, Fall 2005 58 What is CS? Who wants to study it? Why do they want to? Cruelty of Teaching Computer Science Redux, Fall 2005 59 What is Computer Science? What is the central core of the subject? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread which gathers these disparate branches into a single discipline? My answer to these questions is simple --- it is the art of programming a computer. Cruelty of Teaching Computer Science Redux, Fall 2005 60 Is this Computer Science? public static void stuff(int n){ doit(n,0,1,2); } public static void doit(int n,int f, int t, int a){ if (n == 1) move(n,f,t); else { doit(n-1,f,a,t); move(n,f,t); doit(n-1,a,t,f); } } Cruelty of Teaching Computer Science Redux, Fall 2005 61 Why Arguments are a Good Thing Bubblesort, An Archeological Algorithm Analysis Cruelty of Teaching Computer Science Redux, Fall 2005 62 11/08/77 Cruelty of Teaching Computer Science Redux, Fall 2005 63 17 Nov 75 Not needed Can be tightened considerably Cruelty of Teaching Computer Science Redux, Fall 2005 64 Jim Gray (Turing 1998) Bubble sort is a good argument for analyzing algorithm performance. It is a perfectly correct algorithm. But it's performance is among the worst imaginable. So, it crisply shows the difference between correct algorithms and good algorithms. (italics mine) Cruelty of Teaching Computer Science Redux, Fall 2005 65 Brian Reid (Hopper Award 1982) Feah. I love bubble sort, and I grow weary of people who have nothing better to do than to preach about it. Universities are good places to keep such people, so that they don't scare the general public. (continued) Cruelty of Teaching Computer Science Redux, Fall 2005 66 Brian Reid (Hopper 1982) I am quite capable of squaring N with or without a calculator, and I know how long my sorts will bubble. I can type every form of bubble sort into a text editor from memory. If I am writing some quick code and I need a sort quick, as opposed to a quick sort, I just type in the bubble sort as if it were a statement. I'm done with it before I could look up the data type of the third argument to the quicksort library. I have a dual-processor 1.2 GHz Powermac and it sneers at your N squared for most interesting values of N. And my source code is smaller than yours. Cruelty of Teaching Computer Science Redux, Fall 2005 67 Niklaus Wirth (Turing award 1984) I share your view that Bubble Sort has hardly any merits. I think that it is so often mentioned, because it illustrates quite well the principle of sorting by exchanging. I think BS is popular, because it fits well into a systematic development of sorting algorithms. But it plays no role in actual applications. Quite in contrast to C, also without merit (and its derivative Java), among programming codes. Cruelty of Teaching Computer Science Redux, Fall 2005 68 Back to the Future How will we know when we get there? Cruelty of Teaching Computer Science Redux, Fall 2005 69 A Future for Computer Science? Cruelty of Teaching Computer Science Redux, Fall 2005 70 What does the Internet look like? Cruelty of Teaching Computer Science Redux, Fall 2005 71 Cruelty of Teaching Computer Science Redux, Fall 2005 72 Cruelty of Teaching Computer Science Redux, Fall 2005 73 Is there a Science of Networks? From Erdos numbers to random graphs to Internet From FOAF to Selfish Routing Modeling, simulation, and hypotheses Computer Science? From the facebook to tomogravity How do we model networks, measure them? What mathematics is necessary? Will the real-world intrude? Cruelty of Teaching Computer Science Redux, Fall 2005 74 Network Models (Barabasi) Differences between Internet, Kazaa, Chord Building, modeling, predicting Static networks, Dynamic networks Modeling and simulation Random and Scale-free Implications? Structure and Evolution Modeling via Touchgraph Cruelty of Teaching Computer Science Redux, Fall 2005 75 My recommendations at Amazon Cruelty of Teaching Computer Science Redux, Fall 2005 76 And again… Cruelty of Teaching Computer Science Redux, Fall 2005 77 Finally, … Cruelty of Teaching Computer Science Redux, Fall 2005 78 From Pigou to Braess Roughgarden terminology Selfish Routing Cost as measure of social welfare Non-cooperative agents Nash flows Optimality Game Theoretic 0 Cruelty of Teaching Computer Science Redux, Fall 2005 SCH 79 Alan Kay "Simple things should be simple. Complex things should be possible". "The best way to predict the future is to invent it" Cruelty of Teaching Computer Science Redux, Fall 2005 80 Who else is similar? Cruelty of Teaching Computer Science Redux, Fall 2005 81