Cruelty of Teaching Computer Science Redux, Fall 2005 1
On The Cruelty of Really Teaching Computer Science Redux
Owen Astrachanhttp://www.cs.duke.edu/~ola
Cruelty of Teaching Computer Science Redux, Fall 2005 2
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 3
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 4
Cruelty of Teaching Computer Science Redux, Fall 2005 5
WWDD?
Cruelty of Teaching Computer Science Redux, Fall 2005 6
Questions
If you gotta ask, you’ll never knowLouis Armstrong: “What’s jazz?”
If you gotta ask, you ain’t got itFats 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 7
Questions and Answers
Judge a man by his questions rather than by his answers
Cruelty of Teaching Computer Science Redux, Fall 2005 8
Don’t know much about history
We are doomed if we don’t pay attention
Cruelty of Teaching Computer Science Redux, Fall 2005 9
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 10
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 11
Then and NowOuchless 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 12
Now and ThenJava 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 13
1984
Cruelty of Teaching Computer Science Redux, Fall 2005 14
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 15
Typical machine in 2004?
1 Gb memory 3+ GHz, 32-bit chip
Cache, … 160 Gb disk Lots of free
resources Good academic
pricing Under $1000
Cruelty of Teaching Computer Science Redux, Fall 2005 16
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 17
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 18
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 19
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 20
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 21
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 22
Changes in Computer Science?
Cruelty of Teaching Computer Science Redux, Fall 2005 23
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 24
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 25
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 26
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 27
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 28
What about trends today?
Cruelty of Teaching Computer Science Redux, Fall 2005 29
Cruelty of Teaching Computer Science Redux, Fall 2005 30
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 31
Cruelty of Teaching Computer Science Redux, Fall 2005 32
Cruelty of Teaching Computer Science Redux, Fall 2005 33
Cause for comfort or concern?
Source: CRA
Cruelty of Teaching Computer Science Redux, Fall 2005 34
Cruelty of Teaching Computer Science Redux, Fall 2005 35
Cruelty of Teaching Computer Science Redux, Fall 2005 36
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 37
Cruelty of Teaching Computer Science Redux, Fall 2005 38
What’s wrong with this picture?
Why is the first year different from all other years?
Cruelty of Teaching Computer Science Redux, Fall 2005 39
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
UCSD
Cruelty of Teaching Computer Science Redux, Fall 2005 40
Books and Approaches Used
Cruelty of Teaching Computer Science Redux, Fall 2005 41
Cruelty of Teaching Computer Science Redux, Fall 2005 42
Cruelty of Teaching Computer Science Redux, Fall 2005 43
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 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
Who's going to College?
Cruelty of Teaching Computer Science Redux, Fall 2005 47
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 48
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 49
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 50
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)
From Algorithms to Objects
Cruelty of Teaching Computer Science Redux, Fall 2005 51
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 52
A picture is worth …
Cruelty of Teaching Computer Science Redux, Fall 2005 53
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 54
How do we teach CS?
Cruelty of Teaching Computer Science Redux, Fall 2005 55
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 beautifully-finished 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 56
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, 1989
Cruelty of Teaching Computer Science Redux, Fall 2005 57
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 58
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 59
What is CS? Who wants to study it? Why do they want to?
Cruelty of Teaching Computer Science Redux, Fall 2005 60
What is Computer Science?
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.
What is the central core of the subject? What is it that distinguishes it from the separate subjects with which it is related?
Cruelty of Teaching Computer Science Redux, Fall 2005 61
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 62
Why Arguments are a Good Thing
Bubblesort, An Archeological
Algorithm Analysis
Cruelty of Teaching Computer Science Redux, Fall 2005 63
11/08/77
Cruelty of Teaching Computer Science Redux, Fall 2005 64
17 Nov 75
Not needed
Can be tightened considerably
Cruelty of Teaching Computer Science Redux, Fall 2005 65
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 66
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 67
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 68
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 69
Back to the Future
How will we know when we get there?
Cruelty of Teaching Computer Science Redux, Fall 2005 70
A Future for Computer Science?
Cruelty of Teaching Computer Science Redux, Fall 2005 71
What does the Internet look like?
Cruelty of Teaching Computer Science Redux, Fall 2005 72
Cruelty of Teaching Computer Science Redux, Fall 2005 73
Cruelty of Teaching Computer Science Redux, Fall 2005 74
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 75
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 76
My recommendations at Amazon
Cruelty of Teaching Computer Science Redux, Fall 2005 77
And again…
Cruelty of Teaching Computer Science Redux, Fall 2005 78
Finally, …
Cruelty of Teaching Computer Science Redux, Fall 2005 79
From Pigou to Braess Roughgarden
terminology Selfish Routing Cost as measure of
social welfare Non-cooperative
agents Nash flows
Optimality Game Theoretic
SCH
T(x)=x 1
1T(x
)=x
0
Cruelty of Teaching Computer Science Redux, Fall 2005 80
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 81
Who else is similar?
Top Related