|
|
Subscribe / Log in / New account

The next generation of Python programmers

By Jake Edge
April 23, 2014

PyCon 2014

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]

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
ConferencePyCon/2014


to post comments

The next generation of Python programmers

Posted Apr 23, 2014 17:30 UTC (Wed) by gnacux (guest, #91402) [Link] (52 responses)

Students in high school should focus on Math,Physics and Chemistry. Coding is not science. It's more like engineering. Science is what students should learn, not coding.

The next generation of Python programmers

Posted Apr 23, 2014 17:48 UTC (Wed) by Kamiccolo (subscriber, #95159) [Link] (11 responses)

I'd like to contradict with following 2 pennies:

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.

The next generation of Python programmers

Posted Apr 24, 2014 2:47 UTC (Thu) by wahern (subscriber, #37304) [Link] (10 responses)

''why should I learn this if it has no practical use or I can't see that?'"

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.

The next generation of Python programmers

Posted Apr 24, 2014 4:30 UTC (Thu) by mathstuf (subscriber, #69389) [Link] (9 responses)

> If you need class time, please walk away.

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.

The next generation of Python programmers

Posted Apr 24, 2014 7:37 UTC (Thu) by dlang (guest, #313) [Link] (8 responses)

> Not every family can afford a computer to cede to their child(ren) for tinkering.

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.

The next generation of Python programmers

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.

The next generation of Python programmers

Posted May 1, 2014 13:24 UTC (Thu) by mathstuf (subscriber, #69389) [Link] (3 responses)

There's also a router and Ethernet cables to get if you're just riding on an ISP-provided modem. Or wireless, but then you lose half your USB ports.

The next generation of Python programmers

Posted May 1, 2014 21:20 UTC (Thu) by dlang (guest, #313) [Link] (2 responses)

why do you have to have Internet access for a programming class?

Yes it's convenient, but that's not the same as mandatory.

The next generation of Python programmers

Posted May 1, 2014 21:27 UTC (Thu) by mathstuf (subscriber, #69389) [Link] (1 responses)

The start of half of this was:

> 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]).

[1]http://learnpythonthehardway.org/

The next generation of Python programmers

Posted May 1, 2014 21:38 UTC (Thu) by dlang (guest, #313) [Link]

you should be able to have the electronic copies of the books that they need on the SD card that they boot from.

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 ;-)

The next generation of Python programmers

Posted May 1, 2014 21:26 UTC (Thu) by dlang (guest, #313) [Link] (2 responses)

you don't need a "reasonable" keyboard, you need a keyboard. These are cheap and you can probably get donations pretty easily.

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.

The next generation of Python programmers

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.

The next generation of Python programmers

Posted Jun 9, 2014 21:09 UTC (Mon) by Duncan (guest, #6647) [Link]

Monitors, $40 shipped (17" LCD), pricewatch.com.

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. =:^)

The next generation of Python programmers

Posted Apr 23, 2014 17:52 UTC (Wed) by mpr22 (subscriber, #60784) [Link] (1 responses)

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

Posted Apr 25, 2014 0:14 UTC (Fri) by giraffedata (guest, #1954) [Link]

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?

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.

The next generation of Python programmers

Posted Apr 23, 2014 18:37 UTC (Wed) by smurf (subscriber, #17840) [Link] (8 responses)

Coding is applied math. It's also about translating the problem your program is trying to solve into an algorithmic form, thereby deepening your understanding of the problem space.

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.

The next generation of Python programmers

Posted Apr 24, 2014 12:08 UTC (Thu) by alankila (guest, #47141) [Link] (7 responses)

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:
#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

Posted Apr 24, 2014 13:28 UTC (Thu) by jwakely (subscriber, #60262) [Link] (4 responses)

The "return 0;" is unnecessary clutter :-)

The next generation of Python programmers

Posted Apr 24, 2014 17:22 UTC (Thu) by alankila (guest, #47141) [Link] (3 responses)

By my experience, compilers tend to return whatever is on the stack if you don't specify a value. I've been bitten by this in C. Maybe C++ defaults to 0 -- if so, more power to C++.

The next generation of Python programmers

Posted Apr 24, 2014 17:51 UTC (Thu) by andresfreund (subscriber, #69562) [Link] (2 responses)

> By my experience, compilers tend to return whatever is on the stack if you don't specify a value. I've been bitten by this in C. Maybe C++ defaults to 0 -- if so, more power to C++.

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.

The next generation of Python programmers

Posted Apr 25, 2014 8:30 UTC (Fri) by jwakely (subscriber, #60262) [Link] (1 responses)

Yup, exactly. 3.6.1 [basic.start.main] in the C++ standard says:

> If control reaches the end of main without encountering a return statement, the effect is that of executing
> return 0;

The next generation of Python programmers

Posted Apr 28, 2014 23:45 UTC (Mon) by alankila (guest, #47141) [Link]

How cute. I hate it.

The next generation of Python programmers

Posted Apr 25, 2014 12:45 UTC (Fri) by NAR (subscriber, #1313) [Link] (1 responses)

No, conceptually the C++ and Java examples are very different. Look at the concepts C++ introduces:
  • functions
  • operators
  • namespaces and include files, but that can be papered over as "magic" at this point
With Java:
  • classes
  • methods
  • method visibility
  • class-level (i.e. static) methods
  • packages, but that can be papered over as "magic"

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.

The next generation of Python programmers

Posted Apr 25, 2014 18:48 UTC (Fri) by jwakely (subscriber, #60262) [Link]

Also, both introduce the idea of main/Main as a special entry point for a program.

The next generation of Python programmers

Posted Apr 23, 2014 22:48 UTC (Wed) by droundy (subscriber, #4559) [Link] (2 responses)

I agree that coding should not supplant math and science requirements. Citizens need to have some basic familiarity with both math and science, and I wouldn't want kids taking CS to "get out of biology". On the other hand, I also think that programming is skill that is needed at some level by most people. More necessary than trigonometry, for instance. (And as a physicist I certainly would not want to skimp on trig.)

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.

The next generation of Python programmers

Posted Apr 24, 2014 0:06 UTC (Thu) by mathstuf (subscriber, #69389) [Link] (1 responses)

> More necessary than trigonometry, for instance.

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).

The next generation of Python programmers

Posted Apr 24, 2014 3:22 UTC (Thu) by droundy (subscriber, #4559) [Link]

No, I'd put statistics right at the top of the list of topics that everyone should have a good grasp of.

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:

http://xkcd.com/882/

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).

Chemistry

Posted Apr 23, 2014 22:57 UTC (Wed) by tialaramex (subscriber, #21167) [Link]

It turns out that generations of teachers have found that it's really difficult (not impossible, just probably futile now) to get across the concepts of Computer Science without the practical demonstration of programming. Once they _do_ it the whole thing makes a lot more sense to most students.

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.

The next generation of Python programmers

Posted Apr 24, 2014 8:55 UTC (Thu) by jschrod (subscriber, #1646) [Link] (17 responses)

> [...] Math [...] Science is what students should learn, not coding.

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.

The next generation of Python programmers

Posted Apr 24, 2014 9:19 UTC (Thu) by anselm (subscriber, #2796) [Link] (16 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.

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.

The next generation of Python programmers

Posted Apr 24, 2014 11:55 UTC (Thu) by fb (guest, #53265) [Link] (15 responses)

One thing I noticed through many (university-educated) acquaintances who know nothing about programming, is how much of a 'magic box' a computer is for them.

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...

The next generation of Python programmers

Posted Apr 24, 2014 16:04 UTC (Thu) by tialaramex (subscriber, #21167) [Link]

Indeed. For example, this week I was met with equal surprise for announcing that deleting a bunch of obsolete data from a database would take me less than an hour and for pointing out that one week isn't enough time to conduct an organised migration from github to another (presumably cheaper? Not my problem) service.

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.

The next generation of Python programmers

Posted Apr 24, 2014 22:01 UTC (Thu) by mm7323 (subscriber, #87386) [Link] (13 responses)

Not everyone should need to understand code at any level.

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.

The next generation of Python programmers

Posted Apr 24, 2014 22:35 UTC (Thu) by dlang (guest, #313) [Link] (1 responses)

There's a subtle difference between

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.
But it really does help to have at least some idea how electicity works.

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.

The next generation of Python programmers

Posted Apr 26, 2014 14:20 UTC (Sat) by nix (subscriber, #2304) [Link]

Quite. It teaches them that computers are not magic boxes that do only what they want to, at whim: they are perfect but stupid servants that do whatever you ask of them as long as you ask simply enough, that we've taught to do so much that they *appear* to be magic boxes.

(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.)

The next generation of Python programmers

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.

The next generation of Python programmers

Posted Jun 9, 2014 21:45 UTC (Mon) by Duncan (guest, #6647) [Link] (2 responses)

Your automotive example reminded me of a family story from I'd guess about 70 years ago, in an incident that still rings true today.

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.

The next generation of Python programmers

Posted Jun 9, 2014 22:16 UTC (Mon) by khim (subscriber, #9252) [Link] (1 responses)

Similarly, I've heard of people mixing up the oil and gas

But you are supposed to do that!

The next generation of Python programmers

Posted Jun 10, 2014 12:29 UTC (Tue) by mathstuf (subscriber, #69389) [Link]

I think the context here for "mixing up" is closer to "swapping", not "combining". (If you're just making a joke, carry on :) .)

The next generation of Python programmers

Posted Apr 25, 2014 0:57 UTC (Fri) by neilbrown (subscriber, #359) [Link] (6 responses)

> Instead, and as I was taught, it is the job of the Computer Scientists and Engineers to make computers usable for all.

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.
This certainly isn't the only mistake, just the one that annoys me at the moment.

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.

The next generation of Python programmers

Posted Apr 25, 2014 7:01 UTC (Fri) by dlang (guest, #313) [Link] (2 responses)

> 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.

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

The next generation of Python programmers

Posted Apr 25, 2014 16:12 UTC (Fri) by raven667 (subscriber, #5198) [Link]

Any program is going to be limited in how it operates by the imagination of the person who designed it, this is a fundamental nature of computer software, it only can do what it was programmed to do, how it was programmed to do it, it's hard to get emergent or flexible behavior out of someone else's program. The only way to be truly flexible is to write your own software.

The next generation of Python programmers

Posted May 1, 2014 18:42 UTC (Thu) by smorrow (guest, #95721) [Link]

>> I think that modern UI design actually makes it harder for users to gain that understanding.
> 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.

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.

The next generation of Python programmers

Posted Apr 26, 2014 14:23 UTC (Sat) by nix (subscriber, #2304) [Link] (2 responses)

Quite.

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 :(

The next generation of Python programmers

Posted May 1, 2014 22:41 UTC (Thu) by smorrow (guest, #95721) [Link] (1 responses)

IPC other than pipes clearly exists, but pipe is the only one that non-programmers know about. Why is this? Maybe because programs have to be specially written to use other forms of IPC, but pipes just work everywhere.

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.

The next generation of Python programmers

Posted May 6, 2014 12:12 UTC (Tue) by k8to (guest, #15413) [Link]

There were many attempts in the 90s to do gui forms of IPC. The commercial variations were things like OLE embedding, OpenDoc(TM), HotLinks, Publish/Subscribe. They all felt much clumsier than they were worth and were stability nightmares.

There were some more researchy things like oberon and smalltalk, but I don't know how close to practical they ever became.

The next generation of Python programmers

Posted Apr 26, 2014 12:01 UTC (Sat) by wmfa (guest, #37197) [Link] (6 responses)

"Science is what students should learn, not coding."

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.

The next generation of Python programmers

Posted Apr 26, 2014 14:27 UTC (Sat) by nix (subscriber, #2304) [Link] (5 responses)

Meanwhile, in the UK a few years later, in the closest equivalent available of the same course, we learnt... PageMaker. Also Excel. (I tried to use the macro system to simplify some stuff and was castigated for 'wasting time'.)

This in the country that a few years earlier had a prime-time TV programme about computer programming. :(

The next generation of Python programmers

Posted Apr 26, 2014 14:33 UTC (Sat) by pizza (subscriber, #46) [Link] (4 responses)

> Meanwhile, in the UK a few years later, in the closest equivalent available of the same course, we learnt... PageMaker. Also Excel.

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.

The next generation of Python programmers

Posted Apr 27, 2014 8:28 UTC (Sun) by wmfa (guest, #37197) [Link] (3 responses)

It sounds like I got really lucky. The computer classes I took were taught in the Math department. It was all about the science, with absolutely zero focus on administrative uses (word processing, spreadsheets, etc.). Most likely, this is because there really were no administrative uses yet. Electric typewriters were still being marketed for home use. Seeing your responses to my comment, it seems important to me that we educate educators about the differences between administrative computing (office tools), and computer science.

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.

The next generation of Python programmers

Posted May 23, 2021 7:10 UTC (Sun) by Wol (subscriber, #4433) [Link] (2 responses)

> It sounds like I got really lucky. The computer classes I took were taught in the Math department. It was all about the science, with absolutely zero focus on administrative uses (word processing, spreadsheets, etc.) Most likely, this is because there really were no administrative uses yet.

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,
Wol

The next generation of Python programmers

Posted May 23, 2021 7:55 UTC (Sun) by mjg59 (subscriber, #23239) [Link] (1 responses)

> The VERY FIRST electronic computers were all business machines - used for stuff like accounts. Computers like LEO, etc.

? 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

Posted May 23, 2021 22:35 UTC (Sun) by excors (subscriber, #95769) [Link]

>> The VERY FIRST electronic computers were all business machines - used for stuff like accounts. Computers like LEO, etc.
>
> ? 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.

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.

The next generation of Python programmers

Posted Apr 23, 2014 18:06 UTC (Wed) by b7j0c (guest, #27559) [Link] (9 responses)

the python community can't even figure out its own future, let alone anyone else's. BDFL just released a new stack based on python2. python3 is years old and still has practically zero traction.

The next generation of Python programmers

Posted Apr 23, 2014 18:11 UTC (Wed) by rahulsundaram (subscriber, #21946) [Link] (5 responses)

I wouldn't say that. Most of the bigger frameworks and tools already support it and several distributions have already switched or going to switch to using Python 3 by default.

http://python3wos.appspot.com/

https://www.archlinux.org/news/python-is-now-python-3/
https://fedoraproject.org/wiki/Changes/Python_3_as_Default
https://wiki.ubuntu.com/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.

The next generation of Python programmers

Posted Apr 23, 2014 20:59 UTC (Wed) by b7j0c (guest, #27559) [Link] (4 responses)

go out and talk to anyone using python in production in the real world and you'll see practically everyone is still on 2.x, which almost certainly was the motivation for BDFL's new python2 stack

The next generation of Python programmers

Posted Apr 24, 2014 2:24 UTC (Thu) by idupree (guest, #71169) [Link] (2 responses)

I use python3 to generate my website. I had been writing code compatible with both 2 and 3. The new features in 3 became too useful to justify keeping python2 compatibility, since it's trivial to install 3 in all current distros these days and in my experience most important libs support 3 already. (python3 features including `yield from` and asyncio, os.makedirs(..., exist_ok=True), `nonlocal`, etc. Some are easier to work around the lack of than others :-) )

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.

The next generation of Python programmers

Posted Apr 24, 2014 4:07 UTC (Thu) by mathstuf (subscriber, #69389) [Link] (1 responses)

> If I had to choose between python3 and ipv6 deployment

Fortunately, you don't :) . The answer of the masses so far seems to be "neither" :( .

The next generation of Python programmers

Posted Apr 24, 2014 9:59 UTC (Thu) by khim (subscriber, #9252) [Link]

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

Posted Apr 24, 2014 2:37 UTC (Thu) by rahulsundaram (subscriber, #21946) [Link]

Traction is slower than expected perhaps but moving forward. I certainly see more people discussing it and evaluating it (and yes, that is the "real world") which wasn't possible when some of the major frameworks didn't support it. People with custom codebases won't migrate anytime soon if at all but notion of zero traction isn't representative.

The next generation of Python programmers

Posted Apr 24, 2014 6:36 UTC (Thu) by nzjrs (guest, #35911) [Link] (2 responses)

> BDFL just released a new stack based on python2

You mean a commitment to maintain python2 until 2020? Or something else?

The next generation of Python programmers

Posted Apr 25, 2014 13:13 UTC (Fri) by ehiggs (subscriber, #90713) [Link] (1 responses)

BDFL works at Dropbox. Dropbox just announced their Pyston project which is based off Python 2.7.

https://tech.dropbox.com/2014/04/introducing-pyston-an-up...

The next generation of Python programmers

Posted Apr 25, 2014 13:20 UTC (Fri) by nzjrs (guest, #35911) [Link]

Guido is not involved (read the comments from the developers in the comments section).

The next generation of Python programmers

Posted Apr 23, 2014 20:49 UTC (Wed) by dlang (guest, #313) [Link] (2 responses)

looking at the people taking tha AP exams leads to bad stats because the samples are just too small

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.

The next generation of Python programmers

Posted Apr 25, 2014 11:14 UTC (Fri) by shmget (guest, #58347) [Link] (1 responses)

Ironical droundy posted above a nice example of the widespread ignorance wrt statistics... which is sadly quite apparent in this article.
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 ? )

It takes a bit of digging bu eventually one can find the actual data:
http://research.collegeboard.org/programs/ap/data/partici...

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...
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...

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"
Yeah sure, that is sending a strong 'message' indeed...

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 ?

The next generation of Python programmers

Posted Apr 25, 2014 11:25 UTC (Fri) by shmget (guest, #58347) [Link]

Btw Wyoming, one of the 3 state with mississippi and montana to have no female test taker... it happen that they had no male test taker either!

The next generation of Python programmers

Posted Apr 24, 2014 1:14 UTC (Thu) by seanMcGrath (guest, #1563) [Link] (1 responses)

My wife is using code.org and scratch in an after school program for kids as young as third grade. No need to wait for high school.

The next generation of Python programmers

Posted Apr 24, 2014 4:05 UTC (Thu) by mathstuf (subscriber, #69389) [Link]

Some of my co-workers are doing a scratch course locally as well (I think it's middle school though). I don't know if they're using code.org though. The turtle-laser board game that came out recently also has gotten good reviews by co-workers with kids.

Browser-based Python implementations

Posted Apr 24, 2014 9:43 UTC (Thu) by jnareb (subscriber, #46500) [Link]

> Perhaps the most famous browser-based Python is Skulpt [...]

I think more important is what is most stable and most complete browser-based Python.

How Skulpt compares with Brython (http://www.brython.info)?

The next generation of Python programmers

Posted Apr 24, 2014 17:13 UTC (Thu) by TRS-80 (guest, #1804) [Link]

The next generation of Python programmers

Posted Apr 25, 2014 13:54 UTC (Fri) by pj (subscriber, #4506) [Link] (1 responses)

So... why does programming needs its own course? Teach it as *part* of a math or science course - lend/give RasPis as necessary, and then using python they should be able to do 'Hello World' in under a week (or an hour?) and have it able to plug numbers into physics equations for them in under a week.

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.

The next generation of Python programmers

Posted Apr 26, 2014 18:50 UTC (Sat) by eean (subscriber, #50420) [Link]

Yea I agree.

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.

The next generation of Python programmers - Summer Camp

Posted Apr 27, 2014 13:56 UTC (Sun) by verbus (guest, #96852) [Link]

We have a program that teaches Python to middle and high schools kids.
See the following link for details:

http://okcpythoncc.com

Verbus

The next generation of Python programmers

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:

> 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".

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):

  1. C
  2. C++
  3. Java

(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.

The next generation of Python programmers

Posted May 1, 2014 19:20 UTC (Thu) by smorrow (guest, #95721) [Link]

Shell script has the same one-line, boilerplateless "hello world" that Python people seem to think makes their language the best. But in a Python script you're combining together library functions, that have to be *learned*, whereas in a shell script you're combining together programs that you *already knew*, from using the computer interactively. Plus you already knew a subset of the shell's grammar, from using it interactively.

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.

Great talk; thanks for the writeup

Posted May 1, 2014 2:03 UTC (Thu) by sumanah (guest, #59891) [Link]

Jessica McKellar gave a great keynote, providing several very specific tasks for the audience.

"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.

The next generation of Python programmers

Posted May 14, 2014 16:52 UTC (Wed) by embeddedsteve (guest, #97089) [Link]

Currently taking a course via https://www.coursera.org/ : Intro to interactive python programming (Games). They have codeskulptor which is Python running in a browser, w/Cloud backup storage. Class is from Rice University. Might be worth checking into expanding something like this as requires no HW (i.e. Rpi).
Also they have implemented "VizMode" which provides nifty debugging capabilities w/in the browser.

The next generation of Python programmers

Posted May 30, 2014 4:12 UTC (Fri) by LBQ (guest, #97272) [Link] (1 responses)

I am here to reply as an American high school student.

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:
- 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

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..

The next generation of Python programmers

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.

Jill Pala in Chattanooga, who taught 30 of the 71 girls who took the exam

Posted Jun 10, 2014 16:21 UTC (Tue) by JoelSherrill (guest, #43881) [Link]

She does teach at a well respected and exclusive private all girls school. So it isn't surprising that one section of AP CS is well attended.

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.


Copyright © 2014, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds