The next generation of Python programmers
In a keynote on day two of PyCon 2014 (April 12), Jessica McKellar made an impassioned plea for the Python community to focus on the "next generation" of Python programmers. She outlined the programming-education problem that exists in US high schools (and likely elsewhere in the world as well), but she also highlighted some concrete steps the community could take to help fix it. She expressed hope that she could report progress at the next PyCon, which will also be held in Montréal, Canada, next year.
![Jessica McKellar [Jessica McKellar]](https://static.lwn.net/images/2014/pycon-mckellar-sm.jpg)
Statistics
McKellar used the US state of Tennessee (known for "country music and Jack Daniels") as an example. That is where she went to high school and where her family lives. There are roughly 285,000 high school students in Tennessee, but only 251 of them took the advanced placement (AP) computer science (CS) exam. That is 0.09%. AP CS is the most common computer science class that high school students in the US can take.
She showed a slide with an Hour of Code promo that had various "important, famous, and rich people", including US President Barack Obama, who are enthusiastic about students learning to code, she said. They believe that all students should at least have the opportunity to learn how to program in school.
But the reality is quite a bit different. In terms of AP participation by students, CS is quite low. She put up a graph of AP test takers by subject for 2013, showing CS with roughly 30,000 takers nationwide, slightly ahead of 2D studio art and well below subjects like history or literature, which have 400,000+ participants each.
The problem, typically, is the availability of classes. McKellar's sister goes to high school in Nashville, Tennessee. She likes electronics and would be interested in taking a class in computer programming. The best that she is offered at her high school is a class on learning to use Microsoft Word, however. That's not just a problem for Tennessee, either, as there are roughly 25,000 high schools in the US and only around 2,300 of them teach AP CS.
She put up more statistics, including the pass rate of the AP CS exam, which was 66% in Tennessee. But of the 25 African-American students who took it, the pass rate was 32%. She showed maps of the US with states highlighted where no African-Americans took the test (11 states), no Hispanics (7), and no girls (3). One of the latter was Mississippi, where the lack of female test takers may be somewhat self-reinforcing; any girl in that state may well get the message that AP CS is not something that girls do. In addition, any girl who considers taking it will have to worry about her results being scrutinized on a national level: "I better pass or I will be a stat people talk about".
AP class participation by gender was next up. There are more AP classes where girls outnumber boys, but for math and science, that balance switches. CS has the worst gender imbalance of any AP class.
The Python community cares about this because it spends not just time and money, but "blood, sweat, and actual tears" trying to improve this imbalance, which starts in high school and even earlier. McKellar said she understands "how empowering programming is" and she wants students to have the opportunity to "engage in computational thinking skills". She wants the politicians that are making decisions about how the country is run to have that experience as well. Fixing this problem is important to the long-term success of the Python language as well.
What can be done
It was a "depressing introduction", she said, with lots of statistics that make it look like an "intractable problem". But there is some solace that can be taken from some of those statistics. While AP CS is the most gender-skewed AP exam, 29% of the test takers in Tennessee were girls. That is largely due to one teacher, Jill Pala in Chattanooga, who taught 30 of the 71 girls who took the exam. McKellar asked: If one teacher can make that big of a difference, what can a 200,000-member community do?
To answer that question, she asked three CS education specialists. If one is "armed with a Python community", what can be done to help educate the next generation of (Python) programmers? She got responses in four main areas: policy, student engagement, supporting teachers, and curriculum development. She said that she would be presenting the full fire hose of ideas in the hopes that everyone in the audience would find at least one that resonated.
Policy
To start with, in 35 states computer science is only an elective that doesn't give any math or science credit to a student who takes it. If a class doesn't "count for anything", students don't want to take it, schools don't want to offer it, and teachers don't want to teach it. One thing that audience members could do is to "pick up the phone" and ask legislators and school boards to change that.
There is also a lack of per-state data on who makes the decisions about what high school graduation requirements are. There is also a lack of a single place to go for per-state credential requirements for a teacher to be certified in CS. This is a problem for policy makers because they have no way to judge their own state policies by comparing them with their neighbors. It is something that could be fixed "in a weekend" with some Python, web scraping, and version control, she said.
Another problem is that AP CS is still taught in Java, which is a bad language to teach in. That is not her "hating on Java", but it is something that teachers say. If you think about what goes into writing "hello world" for Java, it doesn't allow deferring certain concepts (e.g. classes, object-oriented programming), which makes it difficult to understand "if you've never written a for loop before". Java is also getting "long in the tooth" as the AP CS language. Pascal was the that language for fifteen years, followed by C++ for six years, and now Java for the last eleven years.
People have been gathering information about what languages colleges use, what languages college teachers wish they were using, and what language they think they will be using ten years from now. Some of that information is compiled into Reid's List (described in this article [PDF], scroll down a ways), which shows that Python's popularity with college CS programs is clearly on the rise. But Reid's List has not been updated since 2012, as it is done manually, partly via phone calls, she said.
The 2012 list also shows Java with a clear lock on first place for the first programming language taught (Java 197, C++ 82, Python 43, ...). But, McKellar believes that Python's numbers have "skyrocketed" since then. She would like people to engage the College Board (which sets the AP standards) to switch the AP CS exam from Java to Python. The College Board bases its decision on what language teachers want to teach in, so the rise of Python, could be instrumental in helping it to make that decision—especially if that rise has continued since 2012. AP CS courses in Python would make for a "more fun computing experience", she said, and by engaging with the College Board, that change could happen in four to six years.
Student engagement
Students don't really know what CS is or what it is about, so they don't have much interest in taking it. But there are lots of existing organizations that teach kids, but don't know programming: summer camps, Boy Scouts, Girl Scouts, etc. This is an opportunity for the Python community to work with these groups to add a programming component to their existing activities.
There are also after-school programs that lack programming teachers. The idea is to take advantage of existing programs for engaging students to help those students learn a bit about computer science. That may make them more likely to participate in AP CS when they get to high school.
Supporting teachers
CS teachers are typically all alone, as there is generally only one per high school. That means they don't have anyone to talk to or to bounce ideas off of. But the Python community is huge, McKellar said, so it makes sense to bring those high school teachers into it.
Pythonistas could offer to answer lesson plan questions. Or offer to be a teaching assistant. They could also volunteer to visit the class to answer questions about programming. Inviting the teacher to a local user group meeting might be another way to bring them into the community.
Curriculum development
There is a new AP CS class called "CS Principles" that is being developed and tested right now. It covers a broader range of topics that will appeal to more students, so it is a "really exciting way to increase engagement", she said. So far, though, there is no day-to-day curriculum for the course in any language. That is a huge opportunity for Python.
If the best way to teach the CS Principles class was with a curriculum using Python, everyone would use it, she said. Teachers have a limited amount of time, so if there is an off-the-shelf curriculum that does a good job teaching the subject, most will just use it. The types of lessons that are laid out for the class look interesting (e.g. cryptography, data as art, sorting) and just require some eyes and hands to turn them into something Python-oriented that can be used in the classroom. Something like that could be used internationally, too, as there aren't many curricula available for teaching programming to high school students.
Deploying Python for high schools can be a challenge, however. She talked with one student who noted that even the teachers could not install software in the computer lab—and the USB ports had been filled with glue for good measure. That means that everything must be done in the browser. Runestone Interactive has turned her favorite book for learning Python, Think Python, into an interactive web-based textbook. The code is available on GitHub.
Perhaps the most famous browser-based Python is Skulpt, which is an implementation of the language in JavaScript (also available on GitHub). There are currently lots of open bugs for things that teachers want Skulpt to be able to do. Fixing those bugs might be something the community could do. Whether we like or not, she said, the future of teaching programming may be in the browser.
Summing up
Since we are starting from such terrible numbers (both raw and percentage-wise), a small effort can make a big difference, McKellar said. The Python Software Foundation (PSF), where McKellar is a director, is ready to help. If you are interested in fixing Skulpt bugs, for example, the PSF will feed you pizza while you do that (in a sprint, say). It will also look to fund grant proposals for any kind of Python-education-related project.
She put forth a challenge: by next year's PyCon, she would like to see every attendee do one thing to further the cause of the next generation of Python programmers. At that point, she said, we can look at the statistics again and see what progress has been made. As she made plain, there is plenty of opportunity out there, it just remains to be seen if the community picks up the ball and runs with it.
Slides
and video
from McKellar's keynote are available.
Index entries for this article | |
---|---|
Conference | PyCon/2014 |
Posted Apr 23, 2014 17:30 UTC (Wed)
by gnacux (guest, #91402)
[Link] (52 responses)
Posted Apr 23, 2014 17:48 UTC (Wed)
by Kamiccolo (subscriber, #95159)
[Link] (11 responses)
a) Motivational. Usually practical use of mentioned sciences (especially maths) in high-schools is forgotten. So, out of psychological context --- "why should I learn this if it has no practical use or I can't see that?"
Programming is one of the ways of concluding everything else You've learned so far and hitting Your guts with feeling that, "oh, damn, to get this game/robot/whatever working, I need to do some calculation/research/whatever.
b) Discipline. Python, comparing with some other languages, brings huge burden of discipline. Yeah, I'm talking about forced indentation. In another hand, the disciplined does not seem that bad and forced if You're motivated to do something interesting (game/robot/whatever) or You're just trying to get practical sense in other sciences. (goto a))
btw, who says that engineering isn't science? We should ban art, physical education, literature classes too. Those seem like a solid science even less.
Posted Apr 24, 2014 2:47 UTC (Thu)
by wahern (subscriber, #37304)
[Link] (10 responses)
Anything you learn in a classroom setting feels like it has no practical use. Introductory comp.sci classes are hardly the exception. If anything, they tend to drive people away. Better to just start hacking away to learn the rudimentary stuff--variables, values, expressions, functions, operators. By the time it becomes important to understand basic algorithms and data structures, if you're not already self-directed you're a lost cause, anyhow.
The barrier to entry for learning computer programming (which is what most people associate computer science with, and what any computer science class will be based around) is basically nil. If you need class time, please walk away. In reality computer science classes in high school will just be an excuse for kids who are already programming to pad out their schedule. Maybe they take comp.sci classes instead of calculus or AP history. Not something I'd like to encourage.
Posted Apr 24, 2014 4:30 UTC (Thu)
by mathstuf (subscriber, #69389)
[Link] (9 responses)
Not every family can afford a computer to cede to their child(ren) for tinkering.
> In reality computer science classes in high school will just be an excuse for kids who are already programming to pad out their schedule. Maybe they take comp.sci classes instead of calculus or AP history.
IME, those who are programming on their own wouldn't seem to be just padding their schedule (frankly, the college course I did take my senior year for programming was almost[1] a waste of my time since by the end of the semester we had gotten to for loops…) and are more likely to have an interest in the other sciences and take those AP courses.
My high school didn't have AP-branded courses before I graduated (and when I took the AP tests, we were slightly different, but at a comparable pacing), but I'd be more likely to believe that rumors of difficulty (Advanced Bio for my high school) scare more students away from the advanced courses than "but I can just take this easier class" from those who even consider AP classes in the first place.
[1]I got transfer credit, so it gave me an extra elective in college.
Posted Apr 24, 2014 7:37 UTC (Thu)
by dlang (guest, #313)
[Link] (8 responses)
This is exactly where the Raspberyy Pi (and similar) should come into play. At $25/student (they don't need network to get started) this should be able to be something like their school books that can be provided to every student. It's also the type of thing that is sexy enough to be able to run a fundraiser (or apply for donations/grants) to fund if the school can't afford it directly.
Posted May 1, 2014 11:30 UTC (Thu)
by farnz (subscriber, #17727)
[Link] (7 responses)
You also need a screen and a keyboard. Call it $35 for Model A and a reasonable keyboard (assuming that kids can use a household TV for a screen), or $135 (allowing for the cost of a reasonable second hand TV as a screen) for kids whose parents won't let them use the household TV.
Posted May 1, 2014 13:24 UTC (Thu)
by mathstuf (subscriber, #69389)
[Link] (3 responses)
Posted May 1, 2014 21:20 UTC (Thu)
by dlang (guest, #313)
[Link] (2 responses)
Yes it's convenient, but that's not the same as mandatory.
Posted May 1, 2014 21:27 UTC (Thu)
by mathstuf (subscriber, #69389)
[Link] (1 responses)
> If you need class time, please walk away.
so this wasn't about the class time anymore (I was asserting that class time may be the only time you have access to tools). For a *class*, sure a network isn't necessary, but for self-teaching at home, I'd think it'd be more beneficial than a book these days (hell, there are online books that are better than dead-tree books[1]).
Posted May 1, 2014 21:38 UTC (Thu)
by dlang (guest, #313)
[Link]
While I agree that Internet access (and the ability to search for answers) is very handy, I disagree that it's a requirement for someone at home to learn programming.
I know that if it was mandatory, I would never have learned ;-)
Posted May 1, 2014 21:26 UTC (Thu)
by dlang (guest, #313)
[Link] (2 responses)
Yes you can say that they need to spend $135 to buy a TV, but given that you can get a HDMI/DVI monitor for <$100 on sale, why would you spend more?
And that's assuming that they can't use the TV. It's also possible for them to use the monitor and keyboard of the family computer without using that computer (with all the things people are worried about there)
It's also easy to have a 'lab' at school that just has TVs, or TVs + Pi computers (without the SD cards) so that there is no software maintinance hassle and let the kids use that at lunch and before and after school (you do need to pay for a teacher to sit in that room during that time)
Yes, there will be kids this doesn't work with. There are kids that schoolbooks don't work with, but you can get pretty good coverage here cheaply.
Posted May 2, 2014 10:27 UTC (Fri)
by farnz (subscriber, #17727)
[Link] (1 responses)
I think you've misunderstood my numbers; they're cumulative numbers. So, I've taken your $25 for a Pi and a memory card, and added $10 for a keyboard (Amazon Basics keyboards are $11.49, so $10 isn't unreasonable for a keyboard). This gets me a basic price of $35 for a usable device for a kid; note that IME, many family computers now are laptops without separate keyboards.
Then, I looked at Amazon.com for the price of a monitor. $100 seemed to be about right for a cheap TV or monitor, sans delivery. Allow for the fact you're buying in bulk, and you should be able to get monitors for $100 for the kids who can't use their home TV. That gets me to a total of $135 for kids who can't use a home TV either.
Posted Jun 9, 2014 21:09 UTC (Mon)
by Duncan (guest, #6647)
[Link]
Now based on years of shopping there and due to volatile prices and occasional undesirables at the very bottom, I tend to figure a bit up from very bottom, but there's several listings at $45 and more at $50, $55 and $60. So $50 is a good estimate, and that's shipped to anywhere in the continental US, so it's a reasonable quote for the US, at least.
$10 looks about right for keyboards, but at a guess a mouse would be useful as well. I see those for $5.30 shipped, or 10-packs for $4.00 each ($40). There's also keyboard/mouse/speaker combos for $20 or $18 each ($180) in 10-packs.
So let's do the $35 Raspberry Pi B as it's what's recommended for schools, $50 monitor, $20 keyboard/mouse/speakers. $105 total. With a $45 monitor it's $100, total. Tho that doesn't include case.
(Meanwhile, googling for this I see some very nice looking Pi starter kits. They're out of the price range discussed here and are more on the hardware hacking side, but for ~$80-130 they generally include the pi and a case, plus leds, resistors, documentation, etc. There's similar available for Arduinos, etc. Just the sort of thing I'd have loved to have as a kid. =:^)
Posted Apr 23, 2014 17:52 UTC (Wed)
by mpr22 (subscriber, #60784)
[Link] (1 responses)
Posted Apr 25, 2014 0:14 UTC (Fri)
by giraffedata (guest, #1954)
[Link]
You're comparing having a programming class as an elective to not having a programming class at all. The speaker was comparing having a programming class as an elective to having one that satisfies a math or science requirement.
If your goal is to get students to take the class (and that is what the speaker's goal is), what's wrong with having it be an elective versus having it satisfy a math or science requirement (i.e. free the student from taking another math or science class) is that students won't take the class.
Posted Apr 23, 2014 18:37 UTC (Wed)
by smurf (subscriber, #17840)
[Link] (8 responses)
One example: you might in theory know all about Kepler's laws and planetary orbits and stuff, but to _really_ understand what this is all about, try to write a program that simulates the three-body problem.
Or biology. Try to simulate a complex ecosystem. More than two species and you'll have a really hard time preventing one of them to die off.
I also concur with using Python as a programming language. It is eminenty teachable. Java, on the other hand, encourages half-assed understanding and copy/paste programming because there's so much to assimilate before you can even understand _why_ "Hello World" is so damn convoluted in that language, let alone write it from scratch.
Posted Apr 24, 2014 12:08 UTC (Thu)
by alankila (guest, #47141)
[Link] (7 responses)
Posted Apr 24, 2014 13:28 UTC (Thu)
by jwakely (subscriber, #60262)
[Link] (4 responses)
Posted Apr 24, 2014 17:22 UTC (Thu)
by alankila (guest, #47141)
[Link] (3 responses)
Posted Apr 24, 2014 17:51 UTC (Thu)
by andresfreund (subscriber, #69562)
[Link] (2 responses)
There's special case language in the standard about reaching the end of main() without having returned. I guess that's what Jonathan is referring to.
Posted Apr 25, 2014 8:30 UTC (Fri)
by jwakely (subscriber, #60262)
[Link] (1 responses)
> If control reaches the end of main without encountering a return statement, the effect is that of executing
Posted Apr 28, 2014 23:45 UTC (Mon)
by alankila (guest, #47141)
[Link]
Posted Apr 25, 2014 12:45 UTC (Fri)
by NAR (subscriber, #1313)
[Link] (1 responses)
Also classes and methods are higher level (and harder to understand) concepts than functions or operators - after all students meet functions and operators in math class too.
Posted Apr 25, 2014 18:48 UTC (Fri)
by jwakely (subscriber, #60262)
[Link]
Posted Apr 23, 2014 22:48 UTC (Wed)
by droundy (subscriber, #4559)
[Link] (2 responses)
Fortunately, programming is a great way to come to better understand math (and consequently the scientific disciplines that use math), so it's not an either/or situation. We currently do an abysmal job at teaching high school math, so it's quite possible to teach (elementary) programming *and* teach math better, in the same course using the same amount of time. Here's a talk on the subject (not by myself, but by someone I met at a conference on STEM education):
http://docs.google.com/viewer?a=v&pid=sites&srcid...
A challenge is getting teachers the training to use this pedagogy effectively, but Eric's been working on precisely that. And his pilot group of teachers is large enough for optimism.
Posted Apr 24, 2014 0:06 UTC (Thu)
by mathstuf (subscriber, #69389)
[Link] (1 responses)
More necessary than statistics? Personally, I found my statistics class to be one of the more beneficial classes in high school. I wish it would be placed in the center of the math track rather than off to the side like a "lesser" capstone than calculus (at least it was at my school).
Posted Apr 24, 2014 3:22 UTC (Thu)
by droundy (subscriber, #4559)
[Link]
The challenge, of course, is to find teachers of statistics with sufficient knowledge of the subject to do more good than harm.
For instance, ideally every high school graduate would have a more solid understanding of statistics than doctoral researchers at the National Center for Health Statistics in Hyattsville, Maryland, who know just enough about statistics to make (and publish) results containing a textbook error in the use of the P-test, as reported here:
http://fivethirtyeight.com/features/reports-of-a-drop-in-...
For appropriate background on this particular error:
Sadly, there is rarely as ready access to the data and methodology as was in place for this particular study, so it is usually hard to know when researchers commit this sort of fraud (or malpractice).
Posted Apr 23, 2014 22:57 UTC (Wed)
by tialaramex (subscriber, #21167)
[Link]
It is explicitly _not_ (or at the very least shouldn't be) the goal of such a programme to teach Software Engineering, in the same way that your amateurish titration experiments in a high school class were not supposed to teach Chemical Engineering. Knowing in principle what it possible is not the same as being an expert in the best ways to do it.
Posted Apr 24, 2014 8:55 UTC (Thu)
by jschrod (subscriber, #1646)
[Link] (17 responses)
When I compare the Math I learned in high school with real Math at university, I have to question that students in high school learn Math as science. They learn arithmetic, some trigonometry, and some curve scetching. Not what I would call Math science. (And I only had bachelor-level classes, didn't got to the master-level.)
That's OK, and that would be the same with CS: In a CS high school class students might learn some programming. A very valuable skill today in many professions -- even if one doesn't do it, one may understand possibilities and limits of projects where one is involved. But, as with Math, they will not learn what Computer _Science_ is. Nor will they learn computer-related Engineering, e.g., Software Engineering.
At least that's the situation in Germany; don't know the US curricula.
Posted Apr 24, 2014 9:19 UTC (Thu)
by anselm (subscriber, #2796)
[Link] (16 responses)
The big difference is that mathematics at school is mostly about calculating stuff, while mathematics at university is mostly about proving stuff. This means that in school you're dealing with actual numbers but in university you mostly don't. 90% of the time you get by with 0, 1, and 2 (possibly with »i« thrown in if you need it); seeing a 3 once in my undergraduate analysis class felt really strange at the time.
One could quibble about whether schools teach the right sort of calculation (many students would probably be better prepared for life being able to do back-of-the-envelope type approximations and simple statistics than calculus and trigonometry) but high-school maths does have its occasional uses in life even if you're not a scientist. In the same vein, high-school computer programming should have its uses in life even if you're not a professional computer programmer. Professional computer programmers tend to find it difficult to understand how people go through life without being able to get a computer to do tedious things for them, but it mostly means those people get to do these tedious things themselves, or the tedious things are left completely undone.
Posted Apr 24, 2014 11:55 UTC (Thu)
by fb (guest, #53265)
[Link] (15 responses)
I don't hope for high-school courses to prepare folks to write handy scripts 2 years after the class, but I think an _exposure_ to the most basic procedural methods would already be invaluable. Much like the "hour of code" attempts to do.
With regards to computer concepts that could help in real life, some demos and exercises could help a lot with identity theft and security breaches in general, like showing (i) a line by line script to capture the keyboard output, or (ii) using Wireshark to monitor unencrypted network traffic, (iii) reading through one of many compromised customer databases and how much private information of each customer became "public", (iv) using Ghostery to visualize how many people are getting informed of each page visit you make. At least these are the stuff I've present to friends to ask about it...
Posted Apr 24, 2014 16:04 UTC (Thu)
by tialaramex (subscriber, #21167)
[Link]
Seems obvious to us, but to someone with no relevant expertise the github migration seemed like we should just change some bookmarks in our web browsers to point to the new provider, while the DB change meant (in their heads) laboriously selecting and deleting millions of records. Neither mental picture was anywhere close to correct.
-
I think CS is a special case, but even if it wasn't, I am reminded of my mother's experience at high school in the 1960s. She learned to type. Most of her contemporaries did not learn to type because typing was a menial skill of no relevance to professional careers. But of course by the late 1980s, when these people were actually mid-career, being unable to type was a significant frustration. She had never been a terribly good typist, but just being able to touch type at all was a big advantage in management jobs by that point, as "typing pools" gradually went out of existence and anybody below executive level was expected to do their own typing using a computer.
Posted Apr 24, 2014 22:01 UTC (Thu)
by mm7323 (subscriber, #87386)
[Link] (13 responses)
Instead, and as I was taught, it is the job of the Computer Scientists and Engineers to make computers usable for all.
The way this is done is by making tools and languages that simplify and abstract from the necessary complexities of how a computer works, until the point is reached that someone can effortlessly and usefully make use of a computer.
The extreme example of this is perhaps animators manipulating NURBS surfaces in some application written in a high level language, which has been compiled by yet another tool to run atop of an operating system that provides yet more abstraction from the actual complexities of making hardware useful.
Requiring people to learn to code just means we haven't written the right tools yet.
PS: Spreadsheets were a great leap forward.
Posted Apr 24, 2014 22:35 UTC (Thu)
by dlang (guest, #313)
[Link] (1 responses)
everyone should have to write code to make their computers work
and
everyone should understand what coding is
I agree that the normal person should not have to write code to get things functional
but the average person should have at least some inkling of what's involved.
Think of it this way.
The normal individual should not need to be an Electrical Engineer.
i.e. it goes through metal and water, but not plastic/wood, high voltage is dangerous, low voltage less so) so that they can reasonably differentiate between the dangers involved with handling different types of cables and wires.
right now, most people are like loin-clothed savages wandering around an electrical room when it comes to computers. They don't know what anything does, they know that sometimes if they touch things they get shocked, and they can be trained that throwing a specific combination of switches in a specific order usually gets the lights to come on.
just a little bit of knowledge can both make them much more effective, but also make them much more comfortable.
Posted Apr 26, 2014 14:20 UTC (Sat)
by nix (subscriber, #2304)
[Link]
(Except that some people have decided that locking these perfect servants so they don't accept instructions from their actual owners is a good thing. Pfui.)
Posted Apr 24, 2014 22:58 UTC (Thu)
by anselm (subscriber, #2796)
[Link] (3 responses)
Automotive engineers spent the better part of the last century making cars easier to use. This means that as a driver you no longer need to be able to take your engine to bits and put it together again the way you used to when the idea was new. However, driver education still attempts to give people a rough idea of how cars actually work, and a general awareness of this tends to make one a better driver. We still do need to push the pedals and turn the wheel ourselves to make a car go anywhere, although that is being worked on.
In the same spirit, a general awareness of how computers work will do people a lot of good, even though they should not be required to take them to bits and put them together again (in either hardware or software). Maybe in another 50 years or so, judging from how things went with cars, we will have figured out how to make computers truly usable. In the meantime, spending a semester or two in school writing short programs in something like Python will do nobody any harm, and probably give them a reasonable idea of what computers are actually about. It's certainly more useful, as life skills go, than dissecting frogs. Consider it pushing the pedals and turning the wheels while we're waiting for the fully automated computer that will do what we want without our having to spell it out in detail.
Posted Jun 9, 2014 21:45 UTC (Mon)
by Duncan (guest, #6647)
[Link] (2 responses)
My grandmother and her sister were travelling some distance, and stopped at a service station along the way for a fillup. Now the (crooked) operator offered to check the oil, and showed them the dipstick registering a quart low, so they bought one and put it in. On the way home they stopped at the same place, which evidently had a good price on gas as he was subsidizing it with oil sales, and the same thing happened. The poor engine ended up drowning in oil and they had a breakdown some way from home. My great grandpa had to pick them up.
First thing the next day he taught them how to check the oil themselves. Not how to change it, just how to check it, and where to top it off if need be.
Similarly, I've heard of people mixing up the oil and gas, and perhaps it's just the way I was raised (I remember several times helping my dad change a tire), but it still seems odd to me that so many people have to call a tow truck to change a tire!
An extremely basic level of automotive skills, knowing where the oil and gas go and how to check them, and how to change a tire, may not be absolutely required to "know how to drive", and arguably unfortunately that isn't covered on a driving test, but it sure helps, and that's as true today as it was about 70 years ago when that crooked gas station operator ended up killing the engine in my grandmother's car.
Same thing with computers. Having some idea of the basics so they aren't simply black-boxes really does help.
Posted Jun 9, 2014 22:16 UTC (Mon)
by khim (subscriber, #9252)
[Link] (1 responses)
But you are supposed to do that!
Posted Jun 10, 2014 12:29 UTC (Tue)
by mathstuf (subscriber, #69389)
[Link]
Posted Apr 25, 2014 0:57 UTC (Fri)
by neilbrown (subscriber, #359)
[Link] (6 responses)
Yes, but ....
When I watch intelligent non-experts work with computers I am often struck by a particular fact. They fail to understand various interactions or details which jump out as obvious to me, and it is because they lack a depth of understanding which I take for granted.
I think that modern UI design actually makes it harder for users to gain that understanding. Details are hidden, boundaries are blurred. This is done in the cause of making it easy to use. Maybe it succeeds in the short-term but by hiding details it makes it hard to see and learn the underlying model and so hard to progress beyond a simple understanding.
So I agree that it is our job to make computers easy to use, but I don't think we are doing a very good job for the long term. We need to expose the important internal details, not try to hide them.
My pet peeve is the 'back' button on my Android tablet. Sometimes it goes to a previous screen in the current app, sometimes it goes to the previous app. I can mostly figure out what to expect but that is because I'm used to computers following very subtle and non-obvious rules. I can well imagine a person with a different approach to computers absolutely hating in.
The reality is that there are two very different "Back" concepts and conflating them into the one button is a mistake.
So I think we as developers need to expect and encourage some degree of understand in our users, and not hide so many details that they can never learn.
Posted Apr 25, 2014 7:01 UTC (Fri)
by dlang (guest, #313)
[Link] (2 responses)
a GUI is like training wheels, it is a great help to get you started, but eventually it tends to limit what you can do.
keyboard shortcuts are a start at bypassing the training wheels, but only a start
Posted Apr 25, 2014 16:12 UTC (Fri)
by raven667 (subscriber, #5198)
[Link]
Posted May 1, 2014 18:42 UTC (Thu)
by smorrow (guest, #95721)
[Link]
Agreed.
> keyboard shortcuts are a start at bypassing the training wheels, but only a start
I have no idea what you're trying to get at with this. If you'd have said a command line, I'd see what you mean -- for a tastefully-designed (stdin/out) command-line program, once you know how to use it interactively, you also know how to use it in a script: `ed(browse) < ./oneIwrote.earlier` or `generatecommands | ed(browse)`, you can also be sure what the behaviour's going to be if you type-ahead at it while it's busy, you can also use the mouse to copy and paste commands as well as just data, etc, etc -- but keyboard shortcuts? What's the advantage? (Other than speed, which is less important than power, generality, transparency, ...) Keyboard shortcuts isn't a fundamentally different/better paradigm from GUI - most keyboard shortcuts correspond to menu items, and are about as flexible, in that you can't compose them together or arrange for them to be called in a loop or whatever. Ctrl-O isn't an improvement over File>Open in any way that I can see, but a proper command line's equivalent of ^O would get you glob, variable, and backtick substitution.
Posted Apr 26, 2014 14:23 UTC (Sat)
by nix (subscriber, #2304)
[Link] (2 responses)
The first great mistake was throwing away the (relatively new) concept of the pipeline when windowing systems came in. Without the ability to even instruct the machine to do the simplest things in sequence, the user interface has just got cruder ever since then. (Macro languages do *not* help: you have to be a programmer of some stripe to even start to use them without being scared off.)
There is surely a graphical way to model this -- I am reliably told that the original PARC windowing system had one -- but apparently it was dropped :(
Posted May 1, 2014 22:41 UTC (Thu)
by smorrow (guest, #95721)
[Link] (1 responses)
If that's the single most important thing about pipes (is it not?), then what's the GUI equivalent of that? Copy and paste is the closest thing I can think of.
It's too bad most research in HCI seems more concerned with tacky things like virtual/augmented reality.
Posted May 6, 2014 12:12 UTC (Tue)
by k8to (guest, #15413)
[Link]
There were some more researchy things like oberon and smalltalk, but I don't know how close to practical they ever became.
Posted Apr 26, 2014 12:01 UTC (Sat)
by wmfa (guest, #37197)
[Link] (6 responses)
Yep, and when I took programming classes in high school in 1985, we learned the science behind algorithms, numerical methods, data structures, and computational architectures. I remember the lectures on sorting and reciprocal-square-root to this very day. We were also taught important behavioral aspects like why and where to partition long code sections into modular blocks, why comments were important and how they should describe purpose rather than mechanism, protection of your code from bad user input, and so forth. The fact that it was all coded on what is now a long-dead platform and a near-extinct programming language was irrelevant to the actual learning, and those lessons have remained important and useful to me for nearly 30 years.
So please be careful not to lump mere "coding" in with computer science. IMO any science-directed student should still be taught these lessons today as a part of their general education - not coding, computer science.
Posted Apr 26, 2014 14:27 UTC (Sat)
by nix (subscriber, #2304)
[Link] (5 responses)
This in the country that a few years earlier had a prime-time TV programme about computer programming. :(
Posted Apr 26, 2014 14:33 UTC (Sat)
by pizza (subscriber, #46)
[Link] (4 responses)
Even that would have been an improvement over what my high school offered in its "computer" courses.
Come to think of it, typing skills were perhaps the single most useful thing that came out of my experience, though it wasn't intentional on school's part.
Posted Apr 27, 2014 8:28 UTC (Sun)
by wmfa (guest, #37197)
[Link] (3 responses)
Back to the reply on which I based my comment, I'd like to reinforce again that the science of computer science is the kind of academic regimen that will support our children throughout their lives. Given the importance of computing to all our futures, computer science is *exactly* what we should be seeing taught alongside math, chemistry, biology, and physics.
Posted May 23, 2021 7:10 UTC (Sun)
by Wol (subscriber, #4433)
[Link] (2 responses)
Classic mathematician. You need to learn some history!
The VERY FIRST electronic computers were all business machines - used for stuff like accounts. Computers like LEO, etc.
(Yes, the very first computers - Antithikera, Babbage, stuff like that, were more scientific eg astronomy, log tables ...)
Cheers,
Posted May 23, 2021 7:55 UTC (Sun)
by mjg59 (subscriber, #23239)
[Link] (1 responses)
? EDSAC was a product of the Mathematical Laboratory at Cambridge, the Manchester Baby only existed because of the leadership of Max Newman, who held the pure mathematics chair. Both predate LEO.
Posted May 23, 2021 22:35 UTC (Sun)
by excors (subscriber, #95769)
[Link]
As far as I can tell, the Mathematical Laboratory had little to do with mathematics, and they only called it that because they hadn't invented the term "computer" yet. (Nowadays it's the Computer Laboratory). Per https://www.cl.cam.ac.uk/events/EDSAC99/history.html the early years were largely about providing calculating machines as a service to other science departments in the university (e.g. the Lab's founder was Professor of Theoretical Chemistry, and that group later made use of EDSAC 1), as well as doing research into what we'd call computer science (seemingly with emphasis on the practical side - building EDSAC, developing programming language concepts, etc, rather than working on the mathematics of computation).
Definitely wasn't for business though, it seems clear they were focused on scientific research.
Posted Apr 23, 2014 18:06 UTC (Wed)
by b7j0c (guest, #27559)
[Link] (9 responses)
Posted Apr 23, 2014 18:11 UTC (Wed)
by rahulsundaram (subscriber, #21946)
[Link] (5 responses)
http://python3wos.appspot.com/
https://www.archlinux.org/news/python-is-now-python-3/
Now, it could have been handled better but I don't see that as a problem for teaching Python as a introductory language.
Posted Apr 23, 2014 20:59 UTC (Wed)
by b7j0c (guest, #27559)
[Link] (4 responses)
Posted Apr 24, 2014 2:24 UTC (Thu)
by idupree (guest, #71169)
[Link] (2 responses)
Old projects started before python3 was created are certainly important. For new projects, I think python3 compatibility is practical and likely to improve your life in the future.
Even with the python2/3 compatibility break, python + included batteries is still a more stable platform for me than many options (nodejs/ruby/c++/haskell) and a more modern language than others (C, bash). This is why I choose python (2∩3, or 3) for my scripting projects that I occasionally modify and hope to keep working for a decade with minimal effort.
If I had to choose between python3 and ipv6 deployment, though, I would choose ipv6: python is not as critical to the survival of an open internet.
Posted Apr 24, 2014 4:07 UTC (Thu)
by mathstuf (subscriber, #69389)
[Link] (1 responses)
Fortunately, you don't :) . The answer of the masses so far seems to be "neither" :( .
Posted Apr 24, 2014 9:59 UTC (Thu)
by khim (subscriber, #9252)
[Link]
Posted Apr 24, 2014 2:37 UTC (Thu)
by rahulsundaram (subscriber, #21946)
[Link]
Posted Apr 24, 2014 6:36 UTC (Thu)
by nzjrs (guest, #35911)
[Link] (2 responses)
You mean a commitment to maintain python2 until 2020? Or something else?
Posted Apr 25, 2014 13:13 UTC (Fri)
by ehiggs (subscriber, #90713)
[Link] (1 responses)
https://tech.dropbox.com/2014/04/introducing-pyston-an-up...
Posted Apr 25, 2014 13:20 UTC (Fri)
by nzjrs (guest, #35911)
[Link]
Posted Apr 23, 2014 20:49 UTC (Wed)
by dlang (guest, #313)
[Link] (2 responses)
I know that's everyone who took the test, but when a single classroom is about half the female students, or when you have a total of 25 African-Americans taking the test, the numbers are just too small for the statistics to be meaningful.
The biggest thing that needs to happen is just to get more people taking the test, and that part of the talk does seem to have a lot of good info in it.
Posted Apr 25, 2014 11:14 UTC (Fri)
by shmget (guest, #58347)
[Link] (1 responses)
It takes a bit of digging bu eventually one can find the actual data:
So in Montana for instance.. one of these state with no Hispanic and not african-american test taker.. it turn out that they had a grand total of ... 11 (eleven) student that took the AP CS test.... with a african american population of 0.4 % one would have expected 0.044 black student to take the test.
Now, you'll tell me, montana is really not that diverse of a state.. how about mississippi ? surely there is a much more significant african-american population there...
To quote the presentation: "One of the latter was Mississippi, where the lack of female test takers may be somewhat self-reinforcing; any girl in that state may well get the message that AP CS is not something that girls do"
and is worth sensational blog like http://blogs.edweek.org/edweek/curriculum/2014/01/girls_a...
When the teachers are that intellectually lazy and/or dishonest, what hope is there for the students ?
Posted Apr 25, 2014 11:25 UTC (Fri)
by shmget (guest, #58347)
[Link]
Posted Apr 24, 2014 1:14 UTC (Thu)
by seanMcGrath (guest, #1563)
[Link] (1 responses)
Posted Apr 24, 2014 4:05 UTC (Thu)
by mathstuf (subscriber, #69389)
[Link]
Posted Apr 24, 2014 9:43 UTC (Thu)
by jnareb (subscriber, #46500)
[Link]
I think more important is what is most stable and most complete browser-based Python.
How Skulpt compares with Brython (http://www.brython.info)?
Posted Apr 24, 2014 17:13 UTC (Thu)
by TRS-80 (guest, #1804)
[Link]
Posted Apr 25, 2014 13:54 UTC (Fri)
by pj (subscriber, #4506)
[Link] (1 responses)
The point is to try and teach programming as what it is for most people: a tool to accomplish other ends more easily. Start out with programming as using a massively complicated calculator and go from there.
Posted Apr 26, 2014 18:50 UTC (Sat)
by eean (subscriber, #50420)
[Link]
I do think classes like AP computer science have their place in high school as a vocational elective. I took a computer programming class in high school and it was a great starting point for me. I went to college ready to start my CS degree.
However not everyone needs to be a full-time software developer, but imo everyone should graduate high school able to use programming as a tool. Math and science classes are the obvious place to teach this and there's no reason to wait until high school.
Posted Apr 27, 2014 13:56 UTC (Sun)
by verbus (guest, #96852)
[Link]
Verbus
Posted Apr 27, 2014 22:53 UTC (Sun)
by pr1268 (guest, #24648)
[Link] (1 responses)
Granted, I'm a little late to this discussion, but I feel the need to contribute my $0.02: Well said. After my military service, I studied CS at a 2-year technical college. The curriculum at the time (1997-1999) was (in order): (There was also some mainframe programming thrown in, e.g. COBOL, S390 assembly, etc., as well as Visual Basic and Unix shell scripting [telnet-ing to a decrepit SVR4 box!].) I'm forever grateful for having learned programming using these languages in that order, because, even though you can shoot your foot off in C, it is still a much smaller language than C++ (and even more so than Java). As I remember (16 years ago—gee, I'm old!), the hardest part I remember about the 1st-semester C programming class was understanding what void main(void) meant (we were using the DOS-ified Borland C/C++ compiler), and once I understood that, the next difficulty I remember having was forgetting to use the '&' in arguments to scanf(). I had yet to discover the wonders (or horrors) of operator overloading, inheritance, and polymorphism. Good times... Granted, I know only a modest amount of Python, but from what I do know I'm convinced that Ms. McKellar has a valid point about using Python to teach (and inspire) students about programming. It's an easy language to use when learning computer programming (i.e. simple data types, control flow, branching, looping, etc.) without having to figure out what public, private, static, class, throws IOException [and others] all mean. ;-) It's a shame that many CS curricula (and instructors) confuse the newer students these days with public static void main(String args[]) and similar baggage.
Posted May 1, 2014 19:20 UTC (Thu)
by smorrow (guest, #95721)
[Link]
In fact, that's where scripting got its name from: a shell script is a transcript of the commands you would've typed if you'd been sitting at a terminal using the computer in the normal, interactive way. So the computer is an actor replaying your "script". For this reason, I'm not even sure that Python/Perl/Ruby type languages should even be called scripting languages. They're interpreted, but that alone doesn't make them scripts.
If you're going to make people use a language whose objects must specifically be learned, you ought to go all the way and teach them C/C++/Go. Which are closer to Python than to (what I've seen of) Java in terms of how much needless boilerplate you've got. And they can use the shell to write programs that basically amount to combining existing programs together, and the aforementioned general-purpose langs for when they need to write a brand new program.
All of the above points seem valid to me, but I've got to say, in a world where Bourne-derived shells are all that's generally available, I still feel weird advocating the shell as the first language for beginners. An rc- or es-derived shell would be better for the syntax alone, but then they've also gotten rid of the "$@" voodoo and $IFS and so on.
Posted May 1, 2014 2:03 UTC (Thu)
by sumanah (guest, #59891)
[Link]
"She put forth a challenge: by next year's PyCon, she would like to see every attendee do one thing to further the cause of the next generation of Python programmers."
I know I want to live up to McKellar's expectation by doing one of these things! Thank you for the writeup to help me remember and decide.
Posted May 14, 2014 16:52 UTC (Wed)
by embeddedsteve (guest, #97089)
[Link]
Posted May 30, 2014 4:12 UTC (Fri)
by LBQ (guest, #97272)
[Link] (1 responses)
My school (a private school) offered AP Computer Science A as an online course provided by Amplify.
And I actually knew programming way before I took the AP course so it was quite easy.
The thing to say is that -- I disagree with the idea of letting more people attend Computer Science, even with python.
Some facts in my school:
so the problem is that we need people who actually wants to learn programming, not someone who wants to make viruses (to be cool) or someone who just wants to get an AP grade...
if we want particle uses for math, we have physics already and we can make physics more interesting..
(sorry if my english is bad because i am not a native english speaker..
Posted May 30, 2014 21:28 UTC (Fri)
by apoelstra (subscriber, #75205)
[Link]
>The thing to say is that -- I disagree with the idea of letting more people attend Computer Science, even with python.
The problematic attitudes you describe from your classmates seem fairly typical for young people taking a school course in computers. A large part of it is that they haven't been exposed to technology except for perhaps the silliness seen in movies, so they aren't familiar with the technical or ethical problems around things like "virus writing", nor are the familiar with the incredible things that you can actually do with computers, which is why "virus writing" would never occur to you or me as something you might do with a computer.
But the goal of the course is to expose people to computers and programming, and (a) hopefully quell some of this magical thinking while (b) showing them that computers are extremely powerful and general-purpose tools which are cheaply available to them if they know what they're doing. It's certainly frustrating if you already know what you're doing but I think it still can be a very positive effect on people's lives and their interactions with technology.
Posted Jun 10, 2014 16:21 UTC (Tue)
by JoelSherrill (guest, #43881)
[Link]
Taking that into account, we are left with only 41 other girls who took the exam which is an even worse statistic. Are those from public or private schools? Any other clusters?
41 students could easily be only 2 other schools in the entire state of Tennessee.
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
Civilized high school curricula include an elective component; what's unsuitable about having programming as one of the available options for the elective component of high school curricula?
The next generation of Python programmers
The next generation of Python programmers
Civilized high school curricula include an elective component; what's unsuitable about having programming as one of the available options for the elective component of high school curricula?
The next generation of Python programmers
Well, just to keep it in perspective, the article states that C++ is the next most popular choice. So, C++ hello world is nothing great to write home about, either:
The next generation of Python programmers
#include <iostream>
int main ()
{
std::cout << "Hello World! " << std::endl;
return 0;
}
Conceptually, I'd say we're dealing with fairly similar level of crap to understand what this program is doing compared to the next:
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
That being said, if we can reduce the trivial program to:
print("Hello world!")
then that's definitely increasing the friendliness factor by quite a lot.
Unfortunately, my personal experience working with python is that it's full of traps for the unwary, due to the ease of making mistakes like overriding "list" primitive just because that seemed like a great variable name at some point of your program. Additionally, I really do think that teaching languages ought to be statically typed, which validates assumptions about the values you are dealing with throughout your program. The alternative is a crash that occurs only when you are finally trying to use the value, and that's often not the place where the mistake was made.
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
> return 0;
The next generation of Python programmers
No, conceptually the C++ and Java examples are very different. Look at the concepts C++ introduces:
The next generation of Python programmers
With Java:
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
Chemistry
The next generation of Python programmers
The next generation of Python programmers
When I compare the Math I learned in high school with real Math at university, I have to question that students in high school learn Math as science. They learn arithmetic, some trigonometry, and some curve scetching. Not what I would call Math science.
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
But it really does help to have at least some idea how electicity works.
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
Similarly, I've heard of people mixing up the oil and gas
The next generation of Python programmers
The next generation of Python programmers
This certainly isn't the only mistake, just the one that annoys me at the moment.
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
> a GUI is like training wheels, it is a great help to get you started, but eventually it tends to limit what you can do.
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
Wol
The next generation of Python programmers
The next generation of Python programmers
>
> ? EDSAC was a product of the Mathematical Laboratory at Cambridge, the Manchester Baby only existed because of the leadership of Max Newman, who held the pure mathematics chair. Both predate LEO.
The next generation of Python programmers
The next generation of Python programmers
https://fedoraproject.org/wiki/Changes/Python_3_as_Default
https://wiki.ubuntu.com/Python/3
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
Actually IPv6 users comprise about 3% of users today. It'll be interesting to know where we are with python 2-to-3 translation. It feels like we are at about the same stage which, indeed, does not inspire confidence: IPv4-to-IPv6 introduced a severe breakage because it was just impossible to continue with IPv4, but why do the same in python2-to-python3 transition?
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
And that is even _before_ considering the relevance of the considered metric.
(when 0.09% of the student take a computer class, the variation within that minuscule subset, based on some random orthogonal criteria, should be the least of concerns.... if 100% of that 0.09% group had red-hair, would that make any difference ? )
http://research.collegeboard.org/programs/ap/data/partici...
True, African-American represent 37% of the population... so with a grand total of student that took the AP CS test in Mississippi this year of ... ONE, one would have expected 0.37 african-american to take the test...
and 0.5 female...
Yeah sure, that is sending a strong 'message' indeed...
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
Browser-based Python implementations
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers
The next generation of Python programmers - Summer Camp
See the following link for details:
The next generation of Python programmers
> If you think about what goes into writing "hello world" for Java, it doesn't allow deferring certain concepts (e.g. classes, object-oriented programming), which makes it difficult to understand "if you've never written a for loop before".
The next generation of Python programmers
Great talk; thanks for the writeup
The next generation of Python programmers
Also they have implemented "VizMode" which provides nifty debugging capabilities w/in the browser.
The next generation of Python programmers
- people mostly attend AP Computer Science only for the "AP" part, not for the "Computer Science" part
- people asking me if I can make viruses and i was like "what?" o_O?
- a person simply copies batch codes (taskkill... shutdowns and stuff) from the internet and tell me that he made a virus
The next generation of Python programmers
Jill Pala in Chattanooga, who taught 30 of the 71 girls who took the exam