Tuesday, August 28, 2007
eben moglen to tim o'reilly, "you have wasted ten years"
moglen understands the ephemeral and potentially dangerous nature of web2.0 (eg. google aggregates our data centrally in exchange for free apps, its not certain what they will do with it in the future), looks behind it to more fundamental issues - freedom, property, money
his critique of o'reilly and the OS part of FOSS is spot on, IMO
some moderating commentary here from Peter Rock
Friday, August 24, 2007
thoughts on a python programming competition
I'm on long service leave, so I had time to participate in this competition, since they encourage teacher participation. NB. I would not have had time for it - no way - if I had been teaching.
I was very rusty on my python programming. Having the intensity of a competition with strict deadlines (complete 5 challenges a week for 5 weeks) provided some clear structure and pressure to get on with it
My general view about programming is that it is hard to learn. I'm also quite keen to improve my skill because for me programming has a deep sense of epistemological importance wrt to future of the human race. Two links and one quote about this. Why program? What is programming?
(Abelson and Sussman)....writing a computer program is really about the intellectually difficult task of how to control a complex system. The programming language provides us with a means to express and explore ideas about this which would otherwise be too complex to manage.Each participant is given a profile page where, inter alia, they can enter their code into a window. A server runs some tests on the code which then provides feedback and whether your code was successful or not. You have 5 tries before you lose any points, which is a necessary feature for a machine check. Although far from perfect this mechanism does mean that the organisers do not become snowed under with marking. The negative is that it also limits the creativity or individuality of the competition, unlike some Game Maker competitions I have recently been involved with.
Forums are also provided. One of the forums allows participants to put in a query for code they think should work but which doesn't. I used this a few times. Then a real person evaluates your code and gives you some feedback.
So, there is a combination of machine checking and human checking which minimises work load for the organisers but provides necessary human to human feedback for those who are puzzled with a hard problem. The testing process meant that you had to finish off your program completely to pass all the tests. If you didn't then you received zero points
In the main this feedback mechanism worked well for me. ie. normally the feedback (either machine or human) made sense and I could then proceed to improve my code. Sometimes I thought the tests were either mean (not explained in the challenge) or trivial (eg. "!" missing in a print statement) but the 5 point buffer made up for that.
It was a competition. There was scoring with points, a leader board was published etc. Overall, I found this provided focus and was motivating. However, when I couldn't solve the spreadsheet problem fully after 4 days it made me dispirited for a while. So it could be hard for those struggling with the basics more than me.
The challenges varied in difficulty from easy to hard (my opinion). Examples of hard problems included a spreadsheet simulation (I learnt about eval in doing this one, but still didn't manage to meet all the criteria in time) and programming a MUD.
The challenges focused pretty much on the maths and logic domain. My logical thinking mechanisms have been give a good workout! The sort of things covered required me to improve my skills in the use of strings, lists, dictionaries, conditionals and importing and reading files. For example, one of the problems involved reading in an English to German dictionary (provided) and programming some translations of nouns from English to German and back again. Other problems involved sequences, working out what the sequence was and then writing a program to provide the correct output for an input sequence number.
So, my criticism here is that this is reinforcing an already stereotyped pool of recruits into programming, those who are already good at maths and logic. I think more than this will be required to reverse the trend of declining IT enrollments to courses. Read Mark Guzdial's post, The Wonderful Opportunities of the Declining Enrollment Crisis
Briefly, here are some of the things I learnt or beliefs which were reinforced from the programming part of the competition:
- computer programming is not easy (I've already said that)
- you need to put in the hours
- it's necessary to have some large slabs of uninterrupted time, the very thing that nearly all teachers do not have
- sometimes logic errors totally confound me, initially, I just cannot see how the error message I am receiving, either from python traceback, or, from the competition automatic tests, could possibly be correct
- but then it's either terribly frustrating or wonderfully elating when some time later your next effort either succeeds or fails
- surely I'm not the only programmer who experiences despair and / or elation
- more than once I did not read the question thoroughly enough and this led to errors which could have been avoided - pretty funny since I'm a teacher who sometimes tell students to read the question carefully and then become frustrated sometimes when they don't seem to
- overall the testing process pushed me in the direction of becoming more rigorous and proactive, to think before submitting code - to question some of my "she'll be right, mate" attitudes
- you need a good reference manual, pp. 49-50 of Python in a Nutshell (list and dictionary methods) has become well worn.
Thursday, August 23, 2007
OOPs?
But one thing I noticed was no requirement for object oriented programming.
I do have a beginners book on python programming (Python Programming for the absolute beginner by Michael Dawson) which does teach OOPs. Don't be put off by the dumbed down title, it has very clear explanations which is unusual in my experience for programming books.
Also I've become aware of the origins of OOPs through reading Alan Kay's Early History of Smalltalk and also Dan Ingalls Design Principles Behind Smalltalk and this knowledge makes a difference (without going into those detail at this stage).
So, I've become aware of two things.
At best, Education is stuck at the level of procedural or structured programming. Or quite often for most students, just applications, no programming at all.
OOPs is important (vital) for programming more complex systems but is harder and therefore makes limited inroads into formal Education.
Despite finding it hard to get my head around OOPs myself I don't really want to believe the second statement. I'm hoping that etoys / squeak (visual programming) might provide the answer of making OOPs more accessible. I'm not sure.
Reading Mark Guzdial's blog (he has published books in both Smalltalk and Python) makes me think that part of OOPs (creating classes) might be too difficult
This:
"Objects, for example, are harder for people to understand than procedural programs. Distributing responsibility and process across multiple objects increases cognitive overhead. That's empirically demonstrated. While it may be provably better (e.g., improvements in cohesion, coupling, and encapsulation), it demands more from its practitioners -- and in so doing, makes it harder to take on that role. As more complex ideas flow into the task of programming (structured programming, strong type systems, iterators, abstract classes, interfaces, and so on), the cognitive demands increase."And this:
- Plea to Language Designers: Bring Back GoTo!
Two of the graduate students working with me, Brian Dorn and Allison Tew, did a fascinating study over the winter break and submitted a paper on it (still awaiting word on acceptance). They reviewed all the programs (scripts) that graphics designers had written for Adobe Photoshop and then had shared with other graphics designers/programmers at a specific website. These were written in Adobe's form of JavaScript. Brian knew (from an earlier study reported in his ACM ICER 2006 paper) that these designers/programmers had virtually no formal computer science background. The questions that Brian and Allison were asking included "Without a curriculum directing coverage of everything, what programming constructs do these end-user programmers use -- either because it's so useful, or because it's easy enough to understand without a course, or both?" In a real sense, this is studying "natural" programming -- what programmers "in the wild," who program because it's useful to them, do without the influence of a teacher.And these extracts from a discussion he was having on another list:
As one might imagine, every program used variables and assignments, and virtually every program used conditionals and relational operators. But then there are some subtle and fascinating differences. Over 60% of the projects they found used FOR loops, but only 37.5% used WHILE loops. Are FOR loops nearly twice as useful or twice as easy to understand as WHILE loops? They also found that the use of TRY-CATCH for dealing with exceptions appeared in over 60% of the projects they reviewed. Perhaps exceptions are much more useful or much easier to understand than WHILE loops, though virtually everyone teaches a WHILE loop but not everyone teaches exceptions. Programmer-created functions appear in over 70% of the programs they reviewed. Programmer-created objects appear in less than 20% of the programs. Perhaps "objects-first" isn't as natural as we might think.
Studying Programming in the Wild
- "Object-use" means instantiating objects, applying methods to objects, writing new methods.Mark Guzdial makes a lot of sense. Reality check. However, I'm still very interested in pushing ahead and learning OOPs myself as well as further exploring the potential of etoys in that context.
- "Class-create" means creating new classes and solving problems by writing different methods in different classes (distributing responsibility).
- "Early" means in the first week of class, or in the students' first programming assignment
Using the term "impossible" seems to be setting up a strawman. Nothing in education is "impossible." How about if we use a new term: "works," where works means "students can be successful in completing tasks using what they perceive as a reasonable amount of effort." ...
Reconsidering the phrase "objects-early is impossible," let's first consider "object-use early doesn't work." I'd say that the evidence AGAINST that is pretty strong. Not only do we have evidence of broad student success in tools like Alice (which doesn't have classes and methods in the same sense as Java or Smalltalk, so it tends to be "object-use" rather than "class-create") but even in Logo -- whose turtle is clearly a "first object." Roy Pea and Midian Kurland found that few students that they studied really learned Logo well, but there's a good bit of evidence from studies like Sharon Carver's that students could learn Logo -- that Logo "works."
Now let's consider "class-create early doesn't work." The way I read the research, there's a lot of support for that statement: Creating classes and writing distributed methods is *hard*. Consider some of the research evidence:
- Anne Fleury's work showed that students far prefer in-line code, even going so far as to prefer constants to named values. The Psychology literature makes that obvious: having to look elsewhere to find the value for something increases cognitive load.
- T.R.G. Green's work showed that increasing cognitive load (by making people look elsewhere for code and values) makes it harder to program, e.g., people read more slowly and make more errors.
- John Carroll's and Mary Beth Rosson's work at IBM in the 1980's on Smalltalk found that programmers had a hard time understanding the distinction between classes and instances.
- Even Adele Goldberg's technical reports from Xerox PARC in the 1970's showed that most of their students weren't able to complete program modification tasks in the given time. It took too much time to find where a particular feature was buried in a particular class. It didn't "work."
Overall, it's hard to test this hypothesis convincingly. It's hard to control for all factors and get students to program the same things with and without making classes. But there is a macro-level way of testing this evidence. For the schools whom I've talked to, the failure rate in introductory classes jumped when they went to class-create early, either in C++ or Java. That evidence suggests that it's true that class-create early doesn't work....
For myself, I'm going to stick with an approach of object-use early and class-create later (week 10 or later). Here are my reasons:
- PROGRAMMING IS HARD. Even procedural programming. I see students struggling with where to put the RETURN even in week five. In our last midterm, I was dismayed with how many students were still struggling with how to manipulate two different indices when working with two different arrays (sounds). I'm happy with where our students get in 15 weeks.
- OBJECT ORIENTED PROGRAMMING IS HARDER. I have seen no evidence that class-create programming is EASIER than procedural programming when dealing with introductory-level concepts and CS1 level of programming. I've seen lots of evidence (referenced in my last message) that it's harder. This doesn't have to do with the teaching method -- this is entirely a matter of cognitive load. The raw task of O-O programming requires a greater cognitive load than procedural programming.
- I CAN'T AFFORD TO MAKE IT HARDER. With high failure rates, students' perception of CS as being too hard, and declining enrollments, I can't afford to include class-create early. The costs aren't worth the benefits of learning object-oriented programming in the first course. I believe we need more of a gradual slope in our intro course, not such a steep curve that looks to students like a wall.
- NSF CPATH, Jobs and Objects
Wednesday, August 22, 2007
Ramon Leon: On Smalltalk
Smalltalk in Action
This provides a link to a video which demonstrates the power of late binding:
... some of the features of the refactoring browser on a running instance of the classic Asteroids game. He extracts a method to a component, changes the color of the asteroids, then shows off undo and redo. He does so while the game is running without ever having to break his flow with something as silly as a compile, debug, run cycle that we’ve all grown so accustomed to in most other languages.Building a blog using Seaside
This links to a screencast of Ramon building a blog in seaside in 15 minutes. Seaside is a web development program which is written in Smalltalk
My Journey to Linux
The transition from being a Windows guy to a Linux guy. Shit happens.
Why Smalltalk
"I’m still amazed by how many people think they can grok Smalltalk by seeing syntax examples. Smalltalk isn’t its syntax, it’s its environment. Smalltalk is a living world of running objects, there are no files, no applications, just what’s running. To understand Smalltalk, you have to either actually use it for a while, or have a seasoned Smalltalker demonstrate it to you. Reading sample code just won’t cut it."
Ramon's top posts are here
Thursday, August 16, 2007
powerful ideas discourse
I asked Alan Kay, on the Squeak list, for some clarification of the "non universals" slide from his Europython 2006 keynote
This has sparked a discussion about powerful ideas - what are they and why don't they figure more in School or University education?
The 'non universals' thread starts here (my initial post) or for an overview of the August archive (to follow the subthreads more coherently) look here
Some of the discussion points so far:
- Where does the non universals list originate from?
- Clarification of the meanings of these terms from the non universals list: 'Theory of Harmony' and 'Similarities over Differences'
- Why aren't powerful ideas taken up by School?
- Elaboration on the reasons for the huge gulf between genuinely powerful ideas and the current reality of our formal education systems
Someone once asked Mohandas Gandhi what he thought of Western Civilization, and he said he "thought it would be a good idea!"These are important issues, we need to discuss them more. Understatement.
Similarly, if you asked me what I thought of University Education, I would say that "it would be a good idea!"
child's play
Fix my laptop
10 yo boy and 8 yo girl disassemble, troubleshoot a loose wire, and reassemble the XO - visit link to joel's blog to see video and read more description
Tuesday, August 07, 2007
mark guzdial on computing education: the importance, problems and possible solutions
Mark's teaching approach is to start with a rich concept from the wider world of science or economics, for example, and then use computers, including programming, to enrich the study of that domain. As well he has background exposure to the philosophical and educational ideas of Alan Kay and Adele Goldberg, which he incorporates systematically in his thinking and writing. Every blog he writes is of a high standard, no waste or diversions from the central theme of educational computing (unlike my blog!). Here are some of the main issues which I feel he covers brilliantly:
- the reasons why computer education including programming is vitally important, ie. a coherent argument about why everyone should learn to program
- recognition of and reasons for the world wide enrollment decline in computer science
- recognition with evidence that many students find programming hard and fear it
- discussion of student understanding of basic computer concepts
- contextualised computer education as part of the solution to these problems
- description and feedback from the courses they run at Georgia Tech.
- critical discussion about getting more girls involved in studying computing
Why Should Everyone Learn to Program? (Or, WHO should learn to program?)
Outline of an argument put to Mark's Associate Dean
What Students Think of Media Computation
Inspirational feedback from students from the Georgia Tech Media Computation course
The Wonderful Opportunities of the Declining Enrollment Crisis
Analyses the reasons for decline in Computer Science enrollments and what could be done about it
Follow-up: Report on Grace Hopper Panel
Discussion of "Female-friendly education: Increasing participation or watering down?"
CompFreak Round-Up
Summary of projects tackled and some student feedback from the Computational Freakonomics course
What is Computing?
The computer is the most significant invention for augmenting human thought since the invention of writing ...
Computational Freakonomics
Description of this course
Contextualised Computing Education
Rationale for a new type of computer education
Students find programming distasteful
"I’ve had a couple of experiences over the last few months that demonstrated to me just how much students dislike programming, at a deeper level than I had expected ..."
BOOKS
Mark is the author of several books about computing, just linking to a couple here:
Introduction to Computing and Programming in Python, A Multimedia Approach
Squeak: Open Personal Computing and Multimedia (with Kim Rose)
Thursday, August 02, 2007
everything bad while in the process of amusing us to death is good
Daniel Livingstone has the intellectual wherewithal to compare two books which on the surface point us in opposite directions. Brilliant!!
Amusing Ourselves to Death: Public Discourse in the Age of Show Business (1986) by Neil Postman
Everything Bad is Good for You: How Today's Popular Culture is Actually Making us Smarter (2005) by Steven Johnson
Daniel's blogs are thought provoking:
Amused to Death
TV Culture Makes us Smarter ... than what?
Smarter and Sillier
I’ve been reading a lot about alan kay’s ideas recently and discovered that Postman was a member of the advisory board for the Viewpoints Research Institute until his death in 2003
In his biography of Kay, John Maxwell analyses the connection b/w Postman’s social analysis and Kay’s ideas about using computers with children. Here is a long quote from Maxwell's thesis about this:
Kay’s warning that too few of us are truly fluent with the ways of thinking that have shaped the modern world—logical argument and systems dynamics — finds an anchor here. How is it that Euclid and Newton, to take Kay’s favourite examples, are not part of the canon, unless one’s very particular scholarly path leads there? We might argue that we all inherit Euclid’s and Newton’s ideas, but in distilled form. But this misses something important, and I know I’ve missed something important in my understanding of math and science. Kay makes this point with respect to Papert’s experiences with Logo in classrooms:
Despite many compelling presentations and demonstrations of Logo, elementary school teachers had little or no idea what calculus was or how to go about teaching real mathematics to children in a way that illuminates how we think about mathematics and how mathematics relates to the real world. (1997, p. 19)The problem, in Kay’s portrayal, isn’t “computer literacy,” it’s a larger one of familiarity and fluency with the deeper intellectual content; not just that which is specific to math and science curriculum. Kay’s diagnosis runs very close to Neil Postman’s critiques of television and mass media (Postman was a member of the advisory board for the Viewpoints Research Institute until his death in 2003); that we as a society have become incapable of dealing with complex issues. Postman charges that public argument on the scale of that published in and around the US Constitution would be impossible today, because the length and depth of the argumentation simply would not fit in a television format, newspapers would not print it, and too few people would buy it in book format (Postman 1986).Being able to read a warning on a pill bottle or write about a summer vacation is not literacy and our society should not treat it so. Literacy, for example, is being able to fluently read and follow the 50-page argument in Paine’s Common Sense and being able (and happy) to fluently write a critique or defense of it. (Kay 1996 p. 548)Another example of “literacy” that Kay repeatedly mentions is the ability to hear of a disease like AIDS and to recognize that a “disastrous exponential relationship” holds:Many adults, especially politicians, have no sense of exponential progressions such as population growth, epidemics like AIDS, or even compound interest on their credit cards. In contrast, a 12-year-old child in a few lines of Logo [...] can easily describe and graphically simulate the interaction of any number of bodies, or create and experience first-hand the swift exponential progressions of an epidemic. Speculations about weighty matters that would ordinarily be consigned to common sense (the worst of all reasoning methods), can now be tried out with a modest amount of effort. (Kay 1994)Surely this is far-fetched; but why does this seem so beyond our reach? Is this not precisely the point of traditional science education? We have enough trouble coping with arguments presented in print, let alone simulations and modeling. Postman’s argument implicates television, but television is not a techno-deterministic anomaly within an otherwise sensible cultural milieu; rather it is a manifestation of a larger pattern. What is ‘wrong’ here has as much to do with our relationship with print and other media as it does with television. Kay noted that “In America, printing has failed as a carrier of important ideas for most Americans” (1995). To think of computers and new media as extensions of print media is a dangerous intellectual move to make; books, for all their obvious virtues (stability, economy, simplicity) make a real difference in the lives of only a small number of individuals, even in the Western world. Kay put it eloquently thus: “The computer really is the next great thing after the book. But as was also true with the book, most [people] are being left behind” (1995). This is a sobering thought for those who advocate public access to digital resources and lament a “digital divide” along traditional socioeconomic lines. Kay notes,As my wife once remarked to Vice President Al Gore, the “haves and havenots” of the future will not be caused so much by being connected or not to the Internet, since most important content is already available in public libraries, free and open to all. The real haves and have-nots are those who have or have not acquired the discernment to search for and make use of high content wherever it may be found. (Kay 2000a, p. 395)What is to be done, then? This sort of critique puts the education system in the United States (and most Western countries, by obvious extension) in such bad light that many are tempted to depair. Kay’s project is relentless, though: with or without the school system, the attempt to reach children with powerful ideas and the means to working with them is always worthwhile. Part of the key to seeing a way through this is to remember that education does not equal school, nor does television (or any other medium) represent an essential obstacle to education. “Television,” says Kay, again recalling Postman’s argument, “is the greatest ‘teaching machine’ ever created. Unfortunately, what it is best at teaching are not the most important things that need to be learned” (1995). But in this are also the seeds of an alternative; how could different media be harnessed in such a way as to lead in a more productive direction? How can children have any “embedded cultural experience” that encourages learning logic and systems thinking? The answer isn’t in the design of any particular curriculum. Rather, Maria Montessori’s vision inspires Kay: putting the emphasis on children’s “absorbent minds” and the freedom to play and explore.The objects in our system are instead a help to the child himself, he chooses what he wants for his own use, and works with it according to his own needs, tendencies and special interests. In this way, the objects become a means of growth. (Montessori 1972, p. 150)
expertise and historical perspective
David Thornburg (Comment 11) introduces some historical perspective and argues a radical rejectionist position that there is nothing new in "web 2.0" and he cites a number of web 2.0 technologies that have historical precursors:
He goes on to point out that there is a difference between qualitative change (truly new stuff) and quantitative change ("web 2.0")Blogging? Oh, you mean “bulletin boards?” These were wildly popular when Marc Andreeson was in elementary school.
Oh, I know, Second Life! Yesiree. That has Web 2.0 written all over it. Except that Neal Stephenson wrote all about it in Snowcrash, published in 1992. His vision of a parallel virtual world became reality a few years later with a program called the Palace that kids all over the world were using to create virtual worlds ...
Although he is correct in a technical sense (a point acknowledged in the discussion and reinforced by Tom Hoffman, Comment 20: we should use language correctly, web 2.0 is hyped) I don't think he wins the debate overall
Chris Lehmann (Comment 13) and Andy Carvin (Comment 15) challenge David's qualitative / quantitative distinction in pointing out that a lot of incremental changes (even if not representing true innovation) do eventually add up to a qualitative change in the overall environment. I agree with this dialectic: sufficient quantitative change can lead into qualitative change.
A brief summary of some of the points they and others made:
hardware: broadband explosion, cheaper storage
software: easier to use applications, RSS matters for keeping track, tagging / folksonomies, open APIs
social: more user generated content: eg. blogs, wikis, photos, podcasts, video, more community
economic: low to zero barriers of entry to publish
I liked the way Mike Guerana (comment 46) summed it up:
The new iterations of the “old” web technologies have been amazing evolutions in being able to receive information that is more customized and personal. I like the fact that I can use Google Reader for RSS and not have to visit each page throughout the day. I don’t care what it is called ...OK. David Thornburg made a bold discussion point and there was a good response from some authorities and participants in the "web 2.0" community.
But historical analysis has many perspectives. There are other good critical discussion points about "web 2.0" that could have been made but were not. IMO, David Thornburg was making a technical-historical point, that web2 technologies have pre-web precursors. I think it might be more important to make the educational-historical point that we have seen great computer based educational technologies in the past - logo is a good example - that have now faded so much from view that many in the "web 2.0" community may not have even heard about them or the educational philosophies of their advocates (Papert, Harvey, Kay, Stager etc.)
Sylvia Martinez elaborates on this other history in web 20 and historical perspectives:
Furthermore, within the thread and within the web 2.0 community some things are said, by intelligent people, that I think are wrong / dangerous. For instance:Right now the concept of Web 2.0 in schools is in the hands of excited educators who have felt the power of learning something new and want to share it with their students and other educators. It’s a contagious, revolutionary feeling that we are on the cusp of something that will change the world.
This feels SO much like the 80’s, when computers first started trickling into schools. But the dark side is how schools, instead of letting educators show the way, turned to corporations and publishers to commercialize and pre-package the computer into school-friendly forms. It deprived students and teachers of authentic chances to program, to make music, and to create. Instead of the revolution in learning that seemed to be ever so temptingly on a permanent horizon, it turned computers into test prep machines that reinforced the way school “delivered” information to students.
The score: Technology - 0, “School” - 1
Miguel Guhlin (comment 42): "I don’t have to worry about being an expert since there are so many people out there who are experts…I can rely on you"
David Weinberger has written a book with this title: "Everything is Miscelleous"
Andrew Keen, a web 2.0 critic, said in his debate with David (video link) that the book was good but he could never agree with the title. I agree, the title is very bad. (I haven't read the book)
Leigh Blackall in response to my earlier post said he relied on trusted experts: "my Youtube experience is made up of recommendations from experts I already trust".
This argument reinforces my belief that expertise is another important question that "web 2.0" needs to address. When experts argue then we begin to make progress. We should not be trusting experts but building environments where they are encouraged to argue.
Overall the debate on David Warlick's blog was great because experts argued on issues of importance, many of the comments were of high quality and their was passion and involvement.
But web 2.0 is not always like this. One of Seymour Papert's learning principles espoused long ago in The Children's Machine (1992) is that, "a good conversation enhances learning". Well, how about a bad conversation? And aren't there many bad conversations on web 2.0 forums? As I said in an earlier blog:
Global village idiocy, banalisation, hive mind, self censorship and chasing popularity are all real problems.As web 2.0 scales this problem may well become worse. eg. at the moment most teachers who blog do have things of interest to say, they tend to be movers and shakers who want to change the system. Perhaps those clammering for more and more of web 2.0 ought to reflect a little on what normally happens to technologies once they enter the mainstream.