Charming Pythonistas (O'ReillyNet)
Studies have shown that women tend to have low self-efficacy, to underrate their ability with computers, and even to view CS as more difficult than surgery! To combat this, we need to incorporate programming earlier and more extensively in middle school and high school curricula, using a language such as Python. Most programming languages require a great amount of abstract or technical detail and knowledge to do even the simplest tasks. Python strips away the cruft and allows you to program the way you think. A task you could assign a second grader, such as "print 'hello world'," is just as simple as it sounds when you use Python."
Posted Sep 11, 2007 18:35 UTC (Tue)
by ncm (guest, #165)
[Link] (9 responses)
Posted Sep 11, 2007 20:41 UTC (Tue)
by zorgan (guest, #4016)
[Link] (8 responses)
Posted Sep 11, 2007 22:23 UTC (Tue)
by ncm (guest, #165)
[Link] (7 responses)
We might hope, instead, that if a larger population feels more self-sufficient, they will not hire the incompetents to do work they are able to do just as well, and possibly better.
Posted Sep 12, 2007 14:34 UTC (Wed)
by AnswerGuy (guest, #1256)
[Link] (4 responses)
From my copy of dict
From The Collaborative International Dictionary of English v.0.48 [gcide]:
From WordNet (r) 2.0 [wn]:
Even setting this malapropism aside, the argument that introducing
programming earlier in school curricula is a dubious one. Mathematics
is introduced very early in the curriculum and women, statistically,
exhibit a lower self-confidence in mathematics, too.
Python is a fine scripting and programming language. I think efforts
to try to "push" it are misguided. Find places in the existing curriculum
where Python can be used to express a process, and use it ... then
show how the results can be run on a computer to demonstrate the point.
I also recommend teaching "scripting" first ... and then introducing more
advanced programming topics later. Of course there is no bright line
distinction between scripting and programming. However, if you teach
programming from a formal computer science basis, introducing lots of
mathematical concepts such as complexity theory and "big-O" notation,
before giving the student simple, practical, hands-on experience, then
you'll "scare away" lots of people who could eventually be perfectly
competent.
(One possible, loose, distinction between "programming" and "scripting":
"programming" is what programmers do; scripting is how non-programmers
write programs).
Posted Sep 12, 2007 17:44 UTC (Wed)
by quartz (guest, #37351)
[Link]
Self-efficacy is a psychology concept of how much you believe you can do (or learn) skills.
Although I tend to favour compiled languages, saying that scripting languages does not equate to programming is an offense to a fair share of open-source programmers.
Posted Sep 12, 2007 23:39 UTC (Wed)
by ncm (guest, #165)
[Link]
Posted Sep 13, 2007 23:47 UTC (Thu)
by jschrod (subscriber, #1646)
[Link]
If I look at the (often rather complex) algorithms and mini-applications that business staff realize with Excel, I'm often startled. Once I saw one who had programmed a whole project tracking system in Excel, including resource allocation and Gantt charts. HR and finance buffs program a lot; they just don't know that we call this constraint-based programming in Computer Science. And, as long as they don't know that it's this terribly technical and difficult programming thing, they are actually very successful in it.
Programming in imperative languages is hard. (Python included.) But there are other paradigms that can be used more successful by non-programmers. (Besides spreadsheets, programming by demonstration comes to mind, too).
Posted Sep 20, 2007 15:12 UTC (Thu)
by anton (subscriber, #25547)
[Link]
Posted Sep 14, 2007 19:25 UTC (Fri)
by apgodshall (guest, #40634)
[Link] (1 responses)
One way that computer programming is that one constantly tests oneself
against the machine.
So I would say that as a group, computer programmers have a much better idea
of how good they are, at least of the quality of their logical faculties,
than the practitioners of almost any other profession.
Sure, engineers and scientists have that too, but there's not the same kind
of immediate feedback, the I am such an idiot moments, in any other
profession I can think of.
Posted Sep 14, 2007 19:39 UTC (Fri)
by nix (subscriber, #2304)
[Link]
I see this over and over and *over* again in the proprietary software
Posted Sep 11, 2007 23:51 UTC (Tue)
by salimma (subscriber, #34460)
[Link]
Posted Sep 12, 2007 1:58 UTC (Wed)
by i3839 (guest, #31386)
[Link] (12 responses)
Yeah, right. Except that it should had been something more like "write hello world" (or show/display) to be a good argument, now it's just silly.
Look, there's nothing wrong with advertising your favourite language, but don't try to mix it up with unrelated things like "women in technology". Saying things like "women should use Python because of these advantages of Python" reeks of sexism. "Python for women, C for men", anyone? Didn't think so.
Programming isn't about programming languages, or shouldn't be anyway. Which language is best to use depends what tool is needed and the person using it.
Python is a good language for new programmers because it's so easy to get started, no hassle with compilers or makefiles. So it's a good way to learn programming, as are some other script languages. And when just learning programming it doesn't matter much what language you use, because the basic principles are the same anyway (languages like Haskell and prolog excluded). And later on it depends on the programming style of the person and of the project which language to use.
Posted Sep 12, 2007 6:53 UTC (Wed)
by salimma (subscriber, #34460)
[Link] (1 responses)
Haskell is actually not that bad, syntax-wise, as a language to teach programming. The problem is that it's traditionally been used to teach functional programming, and this, combined with Haskell's lazy evaluation, risk confusing students if the more 'bizarre' concepts are piled on too fast. I'd pick Haskell to teach over, for example, Java, if not for the need to prepare students with knowledge of mainstream imperative languages (for, e.g., data structure class)
Posted Sep 12, 2007 13:31 UTC (Wed)
by i3839 (guest, #31386)
[Link]
It saddens me that new students learn Java, personally I really don't see the point of it. It's a failed high level language, better to learn either Python or C. Same for C++.
I don't think that functional languages confuse people when they didn't learn an imperative language before, or do they?
Posted Sep 12, 2007 8:31 UTC (Wed)
by jordanb (guest, #45668)
[Link] (9 responses)
The article argued that Python is a 'novice friendly' language, which is probably very true, and because it's on a weblog about women programmers, it notes the usefulness in teaching programming to novice women. I don't see any sexism there. Any more than it takes to admit that programming is something like ninety percent male so clearly there's a connection that's not being made somewhere.
In terms of novice programming, though, it's a shame that logo died. The nice thing about it was that it was instantly visual. Rather than your first program being one that printed "Hello, World!" it could be one that drew a box. The downside I guess is that you have to switch to something else to do anything useful.
Posted Sep 12, 2007 9:26 UTC (Wed)
by danielpf (guest, #4723)
[Link]
This reminds me of futuristic extensions to Basic on the Apple][ (ca 1983) that I have never seen again. It was possible to write in Basic something like
PRINT "image"
where "image" was a picture, or any fancy font string. The nice thing was that "image" appeared as such in the source code, and "image" could be manipulated with string operators.
There is certainly a need to extend computer languages toward using character sets like Unicode (Fortress) or more complex objects like images.
Posted Sep 12, 2007 11:42 UTC (Wed)
by tialaramex (subscriber, #21167)
[Link] (2 responses)
The trouble is that too many people get the impression you have, that LOGO is primarily about turtle graphics, which would be like starting C programming classes with printf("Hello, world."); and then imagining that formatting type written output is the main feature of C...
LOGO is a fully fledged functional language, you can teach introductory programming at a University degree level with it, so it's certainly good enough for secondary school classes, if only secondary schools actually ran programming classes, and if only they understood that we're supposed to be teaching children generally useful things about the world rather than how to be good consumers of pre-packaged software.
Posted Sep 13, 2007 22:41 UTC (Thu)
by dag- (guest, #30207)
[Link]
How about SCRATCH ?
Posted Sep 16, 2007 2:16 UTC (Sun)
by undefined (guest, #40876)
[Link]
Posted Sep 12, 2007 13:55 UTC (Wed)
by i3839 (guest, #31386)
[Link] (4 responses)
I don't say the article is, just that it's very close to being that. Because it starts with the problem that there are not enough women doing IT stuff, and ends by advocating to teach people an easy to learn language such as Python. Why that would help to bring relatively more women than men aboard isn't made clear, but sort of assumed.
Coupling two unrelated things together without justification is close to discrimination. Of course it makes the article more juicy, but people should be aware of what they're actually doing.
Posted Sep 13, 2007 0:53 UTC (Thu)
by jordanb (guest, #45668)
[Link] (3 responses)
Consider teaching C. To understand all the boiler plate you have to understand the concept of libraries and linking, of functions, of a program's main function, and of returning values, all just to write a proper hello world program in C!
You can imagine if a student is already somewhat afraid of the machine and unsure of her abilities, getting all those things thrown at her right at the beginning would be a real mind-blower, big enough to put her off of it for good.
If the instructor says "you don't have to understand any of that yet, just know that you MUST type it to make your program work" then it all stays black magic to her, reinforcing the idea that programming is obscure and mysterious.
The author's point seems to be that Python is good for teaching girls who might otherwise stay away from computers out of fear, because students can quickly build confidence doing tasks in which new concepts can be brought up slowly, and the magic boiler plate is minimized.
Posted Sep 13, 2007 15:54 UTC (Thu)
by i3839 (guest, #31386)
[Link] (2 responses)
What I'm missing is reasoning why there will be relatively more girls than boys tempted by Python.
There's a problem (not enough women), there's a cause for that (unclear), and a solution (Python). Providing a solution without making clear how it counters the causes or solves the problem is strange.
Posted Sep 13, 2007 16:34 UTC (Thu)
by jordanb (guest, #45668)
[Link] (1 responses)
The author's argument is that problem is the result of girls lacking confidence ('self-efficacy') and therefore being scared away by too much theory too quickly. You can agree with that or not, but she is staking out a clear position on why she thinks there aren't girls in programming, before explaining how python could be used to deal with that.
Posted Sep 13, 2007 17:43 UTC (Thu)
by i3839 (guest, #31386)
[Link]
> Introductory courses that use integrative projects that focus on principles
That sound exactly like more theory and less coding! And yet the article focuses on coding instead of principles as one of the solutions.
There are plenty female mathematicians, so the amount of theory and abstraction clearly isn't the problem.
I don't know if I agree with the author or not, there's not enough information in the article to make a good conclusion.
Posted Sep 13, 2007 8:30 UTC (Thu)
by massimiliano (subscriber, #3048)
[Link] (1 responses)
My view might be a bit extreme, but the more I think of it, the more
I'm convinced it works.
IMHO, after some base logic concepts like flow charts, which help you
organize an algorithm in a clear way, I should teach fundamental hardware
notions, a simple assembly language, and the way in which you must lay
data in memory in order to work with them.
This includes first of all how to use memory addresses, then the stack,
and the various ways to pass parameters (value, reference,
value-result...) and how they can be implemented on a physical stack.
Then the issue of the heap, why it is necessary, and how to manage it,
and basic data structures (lists, trees, and so on).
After that, compilers, interpreters... my point is that if you really
want to program professionally, you should have a clue about
what's going on under the hood. Teaching those basic concepts should
take no more than a few weeks, but the insight they give you is
simply invaluable (provided that you understand them, of course).
If you don't have that insight, you'll never understand the limits of
the things you use. You can use them in "normal" situations, but you
don't even have a clear definition of "normal", so out of that region
you are lost.
This has been the way I learned how to program (I must say, by myself),
and IMHO it worked well for me. Now I love high level languages, but
I also know what are the implications when I use them...
That said, Python is a nice language even if I never use it :-)
Posted Sep 13, 2007 12:54 UTC (Thu)
by caid (guest, #21513)
[Link]
Programming correctly is fundamentally hard. Maybe, by making it seem simple at first, people who are smart enough to do it may be led to try, and some of them may find themselves interested enough to learn how to do it well. The rest probably won't do too much damage. Anyway they won't do any more damage than the legions already doing it who haven't learned.Misdirection
If programming is fundamentally hard (I might agree) then you want to
select the best people possible for that job. You want to select them
based on how good they are, not no how good they think they are
(which may lose a big chunk of talented people with low self-efficacy).
This works better if you make it seem easy at first so as many as possible
get started and get a better idea of how good they actually are.
Misdirection
The problem is that there are many, many more people who are not as good as they imagine. That's not a new problem, though. We might hope that by giving them more competition, some of it competent, the least competent will be driven from the field. Somehow that doesn't seem to happen.
Misdirection
This word, efficacy ... I do not think it means what they think it means!
efficacy \ef"fi*ca*cy\, n. [L. efficacia, fr. efficax. See
{Efficacious}.]
Power to produce effects; operation or energy of an agent or
force; production of the effect intended; as, the efficacy of
medicine in counteracting disease; the efficacy of prayer.
"Of noxious efficacy." --Milton.
Syn: efficacy.
[1913 Webster]
Syn: Virtue; force; energy; potency; efficiency.
[1913 Webster] efficience
efficacy
n : capacity or power to produce a desired effect; "concern
about the safety and efficacy of the vaccine" [syn:
{efficaciousness}]
[ant: {inefficacy}]
JimD
Wrong and wrong.This word, efficacy ... I do not think it means what they think it means!
There's not much use in complaining about psychobabble neologisms; there are many more where those came from. That said, "self-efficacy" is worse than most.This word, efficacy ... I do not think it means what they think it means!
I agree with your sentiment, and want to add one tidbit: Actually, the most often used programming environment for non-programmers worldwide is not scripting, but spreadsheets. And that means Excel, most often, sad as it is.This word, efficacy ... I do not think it means what they think it means!
Does introducing programming earlier help?
the argument that introducing programming earlier in
school curricula is a dubious one. Mathematics is introduced very
early in the curriculum and women, statistically, exhibit a lower
self-confidence in mathematics, too.
Indeed, I have the impression that the proportion of females in our
university-level computer science program dropped when the computer
course in secondary school became compulsory. However, I don't know
how much programming they do there anymore (they used to, though).
... there are many, many more people who are /not/ as good as they imagine ...
The machine is fairly forgiving, though. It doesn't matter if you write ... there are many, many more people who are /not/ as good as they imagine ...
crap, as long as it's crap that barely works. Even maintainability often
goes by the wall to get it out on time (sigh).
world. One of these days I really must get out of it; it's ethically icky
*and* the code sucks rocks. (So does the pay, but that's another matter.)
In Python 3.0 that will be
Charming Pythonistas (O'ReillyNet)
print('Hello world')
Less exceptional statements to deal with!
> just as simple as it sounds when you use Python.Charming Pythonistas (O'ReillyNet)
Charming Pythonistas (O'ReillyNet)
I tried to say that for new programmers it doesn't matter much what imperative language they use as the basic is the same for all of them. I ruled out Haskell not for its syntax or because it might be harder, but because it's a different paradigm (sadly I don't know Haskell, so I assumed it's always functional). My point was that if you can program in one imperative languages, you can program in all of them, after learning the new syntax, its particularities and the standard libraries provided.Charming Pythonistas (O'ReillyNet)
> Look, there's nothing wrong with advertising your favourite language, Charming Pythonistas (O'ReillyNet)
> but don't try to mix it up with unrelated things like "women in technology".
> Saying things like "women should use Python because of these advantages of
> Python" reeks of sexism. "Python for women, C for men", anyone? Didn't think
> so.
> In terms of novice programming, though, it's a shame that logo died. The Charming Pythonistas (O'ReillyNet)
> nice thing about it was that it was instantly visual. Rather than your
> first program being one that printed "Hello, World!" it could be one that
> drew a box.
Dan
Did LOGO really die? I got the impression that schools still have those robot turtles which are designed to let primary school kids grapple with programming by making it very visual and interactive.Charming Pythonistas (O'ReillyNet)
Charming Pythonistas (O'ReillyNet)
#/usr/bin/env pythonCharming Pythonistas (O'ReillyNet)
import turtle
turtle.demo()
# :-D
> I don't see any sexism there.Charming Pythonistas (O'ReillyNet)
Well, it seems to me that the author most liked the low amounts of boiler plate involved in doing simple things in python. Boiler plate doesn't seem like much of a big deal to experienced programmers, but to beginners (especially ones who lack confidence) it can seem like meaningless magic incantations you have to type to make the computer do what you want. If the teacher decides to take the mystery away by explaining what it does, all the sudden you get slapped with a whole bunch of pretty abstract concepts right out of the door.Charming Pythonistas (O'ReillyNet)
Yes, yes, but the same is true for boys, isn't it? So sure, starting with Python is good and will probably motivate more girls, but also more boys.Charming Pythonistas (O'ReillyNet)
> there's a cause for that (unclear)Charming Pythonistas (O'ReillyNet)
I'm not sure where you got the too much theory part from:Charming Pythonistas (O'ReillyNet)
> over programming, or that link science to applications, help broaden
> students vision.
Teaching how to program
I think the approach Abelson and Sussman used when teaching the SICP course in the 1980:ies is still the most interesting "introduction" to programming I've even seen. Not terribly commercially viable, but I enjoyed watching the videos and reading the book a lot.
Teaching how to program
If you're not familiar with it, I suggest visiting
the course website