Showing posts with label guzdial. Show all posts
Showing posts with label guzdial. Show all posts

Tuesday, January 12, 2021

don't separate the what from the how

Who is Mitch Resnick? He is a leader of the amazingly successful Scratch site, which has many millions of great projects developed by a mainly young community of coders. It also has a very well thought out interface which helps teachers like myself keep track of their classes and students work.

I'm summarising here some of Mitch Resnick’s insights into criteria to use in teaching digital technology:
  • The maker movement and the coder movement fosters creativity far more than using computers for delivering and receiving information
  • Computational participation is a better guiding framework than computational thinking. Computational participation is broader in that it includes personal expression, creative design and social engagement.
  • Our aim should be that our students think, “I want to do this!”, far more motivating than the self efficacy aim that our students think, “I can do this”
  • Curriculum reform ought to be changing what we teach, eg. design a project around an idea or interest, not only how we teach

These points can be combined with those made in an article by Mitch Resnick and Brian Silverman which I summarised 18 months ago (how to evaluate construction kits: ten design principles)

In that article I'm thinking, in particular, of point 2 wide walls; point 3 make powerful ideas salient, not forced; point 5 keep things as simple as possible; point 7 a little bit of coding goes a long way, and, point 10 iterate, iterate and iterate again as a design principle

Taken together, these points are a powerful critique of the ACARA curriculum guidance approach which read this way:

YEAR 7 AND 8 CONTENT DESCRIPTIONS

  • Design algorithms represented diagrammatically and in English, and trace algorithms to predict output for a given input and to identify errors (ACTDIP029)
  • Implement and modify programs with user interfaces involving branching, iteration and functions in a general-purpose programming language (ACTDIP030)

This could be critiqued as boring wooden language generalities but it's worse than that. ACARA tells us what without the how. The what and the how should not be separated but rolled together in an engaging package taking into account where the learner is starting from.

So, in practice, schools dodge around ACARA by tying up their teachers with mainly meaningless paper work for the audit and then if any energy and understanding is left over letting them get on with the interesting stuff.

So, what is both laughable and tragic is that Mitch Resnick still has to argue these principles with Mark Guzdial (who in the end admitted Resnick was correct) because in Guzdial's words the whole education system is permeated with the philosophy that Thorndike won, Dewey lost, that is we are stuck with standards based education, rather than education that stimulates the natural curiosity and capabilities of children.

Reference:
Kafai, Yasmin B and Burke, Quinn. Connected Code: Why Children Need to Learn Programming (2014), Forward by Mitchel Resnick
The first goal of a CS course should be to promote confidence ...(see comments 2, 3, 11, 13, 14, 15 and 16 for discussion b/w Mitch Resnick and Mark Guzdial)
Thorndike won, Dewey lost

Thursday, October 22, 2015

rationale for a computer literate society (Mark Guzdial)

Requirements for a Computing Literate Society slides by Mark Guzdial. Mark's blog is here. I particularly liked slides 6, 7, 8 (rationale for teaching of abstract processing), 9, 13, 14 (Lake Wobegon effect: we don't know as much as we think we do), 23, 25, 27 (media computation as a motivating path to learning computer science) and 45 (conclusion)

Alan Perlis argued that all students should learn to program because:
  • Computer Science is the study of process. Automated execution of process changes everything including how we think about things we already know (slide 6)
  • The purpose of a course in programming is to teach people how to construct and analyze processes ... A course in programming is concerned with abstraction: the abstraction of constructing, analysing and describing processes ... The point is to make students construct complex processes out of simpler ones ... A properly designed programming course will develop these abilities better than any other course. (slide 7)
The Power and Fear of Algorithms. The Economist (Sept., 2007) spoke to the algorithms that control us, yet we don’t understand: Credit Ratings, Adjustable Rate Mortgages, Search Rankings. C.P. Snow foresaw this in 1961. Those who don’t understand algorithms, can’t understand how the decisions are made:
“A handful of people, having no relation to the will of society, having no communication with the rest of society, will be taking decisions in secret which are going to affect our lives in the deepest sense.”

Monday, July 07, 2008

science transcends "normal" (alan kay)

Read the comments on these posts from Mark Guzdial, mainly for the extensive comments by Alan Kay about the failures of the university system to achieve the education required for future social progress in science and computer science (reasons outlined in selected quotes below)

Prediction and invention: object-oriented v. functional
Recap:Prediction and invention: object-oriented v. functional
Neil Postman wrote a number of essays lamenting the huge change in universities -- which have pretty rapidly shifted from being the definers of "what higher education means" to vendors serving customers. He pointed out how ludicrous it could be to have uneducated people demanding courses and rejecting others, largely driven by perceptions of what would help with future jobs as opposed to future abilities to think well and with perspective (Kay)

... the present "normals" are much more arbitrary and accidental constructs than most people think (Kay)

vocational pressure today from students is greater than before (Guzdial)

we need educated adults not skilled children, quotes Jefferson:
"I know no safe depositary of the ultimate powers of the society but the people themselves; and if we think them not enlightened enough to exercise their control with a wholesome discretion, the remedy is not to take it from them, but to inform their discretion by education." -- Jefferson (Kay)
The 1-8 and now K-12 system has quite broken down, and the universities are well on their way to breaking (Kay)

Science is a pretty good model ... The first level has to admit any and all ideas for consideration (to avoid dogma and becoming just another belief system). But the dues for "free and open" are that science has built the strongest system of critical thinking in human history to make the next level threshold for "worthy ideas" as high as possible (Kay)

"needs" are not the same as "wants" (Kay)

Because of the whacky way our brains work, the pooled diverse human opinions for a hundred thousand years on the planet don't get above threshold compared to the invention of better thinking and discerning with the advent of real science only 400 years ago. This invention was very rare in human history, and it is so far away from normal ken that it is dangerously fragile, and actually invisible to most people even today (Kay)

it would be unthinkable for a physicist not to either know what Newton did, or be incurious about what Newton did. But I found in visiting and giving talks at many conferences, universities and businesses in 2004 that most computer people I talked to (including the academics) were both hazy and incurious about what Doug Engelbart did. A few thought he might have invented the mouse, some were aware of hyperlinking -- but astoundingly, I could not find anyone who actually knew about Engelbart's ideas (Kay)

Another part of the problem has to do with the psychology of being a programmer (I worked my way through college as one) and it's mostly about *coping* (with someone else's computer, OS, programming language, problem, techniques and architectures, etc.). I did just that until I got into an ARPA grad school by complete accident and into a culture that was as "anti-cope" as one could imagine -- they were quite happy to invent everything they needed, and to build from scratch everything they needed, including every gate of the HW if necessary, and every bit of the SW (Kay)

... the biologists absolutely did not dilute their field by devolving into an "air guitar" pop culture. (Having an unforgiving Nature as the ultimate critic really helps here. Computing, being a synthetic design oriented field is not governed strongly by Nature and is all too prone to mindless fads and enthusiasms.) (Kay)

... my main observations in this thread were about the incuriousity, not of the general public, nor of pop computer wanabees, but of folks with PhDs in universities "professing" CS (Kay)

if Neil (Postman) were alive and going to write another book along these lines today, he would title it "Distracting Ourselves To Death", and would focus on the difficulties for serious thought in an age of over-information and under-content (Kay)

... it is possible for students to spend their entire undergrad career doing nothing but learning parts of the Linux world -- or parts of the web world -- or parts of the Java world, etc. All of these have millions of lines of code and all are in use and in play. ... They could easily miss most or even all of the big ideas in computing in their efforts to cope-and-join with what already exists. (Kay)

As Susan Sontag once remarked, "All understanding begins with our not accepting the world as it appears." And, conversely, the lack of understanding that we see so much of through history and our own time in no small part is caused by people accepting the world as it appears (Kay)

Thursday, August 23, 2007

OOPs?

I entered in the National Computer Science School python programming competition run by the School of Information Technologies, at the University of Sydney. It's been great for my learning. Some of the challenges have been hard, for me. eg. simulate a spreadsheet, make a MUD game (although there was a fair bit of guidance for the latter).

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."
- Plea to Language Designers: Bring Back GoTo!
And this:
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.

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
And these extracts from a discussion he was having on another list:
- "Object-use" means instantiating objects, applying methods to objects, writing new methods.
- "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
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.

Tuesday, August 07, 2007

mark guzdial on computing education: the importance, problems and possible solutions

I spent some happy hours reading Mark Guzdial's amazon blog. It's really good. Fantastic!

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
I'll link to some sample posts of Mark's below with a brief commentary from me to flesh some of this out and give readers with little time some meaty places to get started:

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)