Gas station without pumps

2012 June 12

AP CS growing, but still tiny

Mark Guzdial was very pleased to find out that the number of students taking the AP computer science exam has grown from about 21,000 to about 26,000 this year: Huge (unofficial) rise in AP CS Test Takers « Computing Education Blog.

I’m pleased to see a bigger than 20% increase in numbers also, but the number of students taking the AP computer science test is still tiny: smaller than the 35000 taking Physics C: Mechanics and much smaller than the 85,000 taking Calculus BC, both of which are arguably higher level classes than the computer science one.  Physics B and Calculus AB may be at about the same level, but have 76,000 and 255,000 test takers.  What would it take to get the CS numbers increased by a factor of 10, up to the calculus numbers? Since computer science is arguably more useful to more people than either physics or calculus, why is the exam so rarely taken?

There are three main possibilities:

  • Few high schools offer computer science.
  • Few students take the computer science classes that are offered.
  • The computer science high schools offer is not compatible with the AP exam.

I suspect that all three contribute to the problem, and there is evidence for all three patterns locally:

  • The neighborhood high school offers no computer science (even though a fairly large fraction of the community works for the software industry).
  • The AP-laden charter school that we tried for 4 years to get my son into, before finally getting a slot and turning it down as longer a good fit for him has an AP CS class.  In 2011, they had 429 AP exams taken in 15 different subjects, with 78 in World History, 71 in US History, 63 in English Language, 61 in Biology, 24 in Statistics, 21 in Physics B, 20 in Calculus BC, but only 10 in Computer Science. The exams with over 60 test takers were required classes, those with under 25 were electives or subjects studied outside of class.  No test has between 25 and 60 takers.
  • The private 6–12 school where my son went to middle school offers a pretty good CS course, which my son took in 8th grade instead of their rather feeble 8th grade science class, but the CS course is based on Scheme, not Java, and does not prepare students at all for the strictly-Java AP exam.

What subjects get ingrained in the school culture and the popular imagination is often a mystery to me.  Why, for example, do so many students take calculus rather than statistics (255k vs 142k), when statistics is needed by many more college majors and is useful even to non-college-bound students?  Why is computer science (which leads to good job prospects) so much less studied in high schools than European History (which has few job prospects and is not a popular major in college)?

Mark Guzdial’s belief (as I understand it—I’m sure he’ll correct me if I’m mistaken) is that the bottleneck is that schools are not teaching computer science and that they aren’t doing it because of a shortage of trained teachers.  While I agree that there are few high school teachers trained to teach computer science, I think that the problem is bigger than that—there are few schools willing to hire such teachers if they existed and students are not clamoring to take computer science in high school, so schools feel no pressure to look for or create high-school CS teachers.  In short, I think that computer science has a public-relations problem in high schools, and not just a teacher-shortage problem.  I’ve no idea how to fix that—PR is not one of skills.

Another small part of the problem is that the AP CS test is testing the wrong part of the subject, concentrating as it does on Java programming.  The exam is a poor fit for students who were taught CS using a more sensible pedagogy (starting with Scratch and Python, for example, rather than Java, or using a Scheme-based curriculum). I don’t think that the proposed lower-level AP CS Principles exam is going to fix this problem, as the problem is not that the CS content is too difficult, but that it is too language-specific.  What is needed, I think is an AP Algorithms exam that tests algorithms and data structures in an almost language-independent way.

My son easily has the amount of computer science covered in the first year or so of college CS classes, from a variety of sources. He’s pretty good at object-oriented programming in Python, he can program in Scheme (but doesn’t by choice), he can do simple Arduino C/C++ programs, he can do some JavaScript programming (but he finds the language irritating), and he’s learned other languages in the past (Scratch and Logo, for example). Just today he wrote an interrupt-driven timer program for the Arduino with a queue implemented in a circular buffer for recording data from our homemade super pulley and sending it to a Python program for saving the data on the laptop, to replace the cruder program I had written that lacked interrupts or queues and just dumped the data to the Arduino serial monitor.  He is currently working on a multi-threaded Python program to record the data from the Arduino while listening for user commands from the keyboard, for a more convenient user interface. (Both of these projects are ones he set himself—I was content with cutting and pasting from the Arduino serial monitor.)  He’s done several computer science projests as science-fair projects: collision resolution algorithms for hashing as a science fair projectminimax search programs to play Connect 4a circuit analyzer to do DC and AC analysis of linear circuits, and machine-learning algorithms for cancer diagnosis from gene expression arrays. He’s even designed some esolangs for fun. In short, his computer science education level is more like a CS major who has finished 2 years of college than one who has finished 2 years of high school.

Despite all this CS, I doubt that he could currently pass the AP CS exam, because it is firmly tied to Java, and he has not learned that language yet.  It is next on his list of languages to learn though, since Art of Problem Solving is offering an online course on Java programming for people who already know some programming (the equivalent of their first course which uses Python). I suspect that even the AoPS course will be a little low-level for him, but it is the only Java-after-Python course I’ve been able to find that seems likely to be a decent fit for him.  He was enthusiastic about the AoPS Precalculus and Calculus classes, and looks forward to the Java class, even though he already knows much of the CS content of the course and just needs to translate his understanding into fluency in Java.

He’ll need the structure of a course to get through the initial barriers of the tedious Java syntax to get to the point where he can program fluently in Java.  Without external constraints on what language he uses, he’d probably prefer to stick with a familiar language like Python, and use tricks like Pyrex, NumPy, or PyPy when he needed more speed (he’s used NumPy and Pyrex already—PyPy does not seem to be quite ready for prime time as it doesn’t include many of the most useful Python libraries, but it looks quite promising).  Eventually he’ll be working on big enough projects that he’ll need the stricter interface requirements of a statically typed language like Java, but it would be better for him to learn the language and be fluent with it before joining such a multi-person project.

2012 May 29

LinReg for physics class data graphing

Filed under: home school,Software — gasstationwithoutpumps @ 09:58
Tags: , , , ,

A blog I only recently subscribed to (Physics! Blog! by Kelly O’Shea) had a very nice plug (LinReg for physics class data graphing) for a graphing program I’d not heard of before: LinReg which is available free from Pomona.

My son and I use gnuplot, which is a moderately powerful script-based graphing program that produces good graphs and has a good parameter fitting command, but I’ve given up recommending it to people, because of the extreme difficulty in installing it.  It is also overkill for a lot of high school classes, where fitting a straight line is considered complicated enough.

LinReg looks like it is nearly ideal for high-school and middle school science classes.  It forces students to label their axes, use units, and express the precision of their measurements. It computes error values for the intercept and slope values, using a reasonable simulation approach (sampling Gaussian distributed points about each measurement and refitting).  Kelly claims that her Honors Physics students pick the program up quickly and choose to use it without prompting after the first few uses (unlike Excel, which they always see as a barrier rather than as a tool—an attitude towards spreadsheets that I share).

Data entry in LinReg seems to be mainly manual, which would be a big limitation for me even for the home-school physics class (the speed of sound lab generated several hundred data points just for the ladder measurements).  Because my son and I have successfully installed and mastered gnuplot, I see no reason to change to a more limited program, but I can see the attraction of using LinReg with a class, so that less time can be spent teaching the tool and more time using it.  The limited feature set looks like a very good match to most high-school science classes.

2012 April 3

Asymptote drawing program—hard to install

Filed under: Software — gasstationwithoutpumps @ 13:43
Tags: , , , , ,

My son has been using Asymptote, a drawing program for geometric drawings, with the Art of Problem-Solving classes that he has been taking.  He’s been running it on their website through the TeXer interface with [asy] tags, which is a little awkward, as error messages are not returned—you just get success or failure.  Asymptote has a lot of powerful features and seems pretty easy to use for a compiled language, and I thought it might be worth my trouble to learn for those diagrams that are not the sorts of graphing that gnuplot is good for.

We wanted to install it on our Macs, but like with our troubles with gnuplot, the developers of Asymptote have made it damn near impossible to install on Macs. We did find something that looked promising: precompiled binaries for the Mac: HMUG: /pub/MacOS_X/X/Applications/Publishing/asymptote.

Unfortunately, these binaries are not complete.  In a separate file, they tell you about all the libraries you need to install first:

Dependencies:
ImageMagick 6.7.3-3
gv 3.7.2
gsl 1.15
MacTeX 2010
gc 7.1
readline 6.2

That is not a trivial set of dependencies!

The default sourceforge download is no better. It does not have sources either, and has (apparently) the same dynamic library dependencies.  You have to go all way to getting a branch from the SVN repository if you want to compile it yourself, which is more trouble than Asymptote was worth.

Are proper Mac OS X installers so difficult to build that the open-source projects never build them?

2012 March 2

Manipulatives for learning computing

Filed under: Scratch — gasstationwithoutpumps @ 19:40
Tags: , , ,

In response to a question from Ron G, I said earlier that I didn’t know any manipulatives for teaching computing.  After I had a nap, I realized that isn’t true.  I even owned a couple as a kid and still have one.

I’m thinking of the Think-A-Dot and Dr. Nim, made by E.S.R Inc. in the mid-1960s. I still have a Think-A-Dot, and my son and I used a picture of it to make a Scratch game that emulates the ThinkADot toy.  If you’ve not played with the toy, try the Scratch game, as it is a decent emulation (though missing the physicality of the actual toy and the ability to cheat by flipping the dots with your finger).

Picture of a Think-A-Dot toy.

Dr. NIM (picture from wikimedia), click for larger version.

The Dr. NIM toy played one version of the game of NIM, by a clever marble-powered counter that counted out 1, 2, or 3 marbles, then flipped the lever over to indicate that it was your turn.  The Dr. NIM design could probably be reproduced in plywood with a scrollsaw and a drill, as there are only 6 moving pieces besides the marbles.

ESR, Inc made two other plastic computer toys, Digi-Comp-I and Digi-Comp-II, but I never had either of them so I don’t know whether they were fun.  The ThinkADot and Dr. NIM certainly were, and it is a shame that they are no longer on the market.

Computer programming for preschoolers

Filed under: Scratch — gasstationwithoutpumps @ 09:27
Tags: , , , ,

One of my most-read posts is Computer languages for kids, because people are desperately looking for ways to teach computer programming to their kids (something the schools are not doing hardly at all, even at the high-school level: see Shoehorning computer science into K–12).

So far my best advice has been to start kids with Scratch, the free drag-and-drop programming language from MIT, somewhere around 4th grade. Some people have used Scratch with younger kids, but the fit is not always good, as Scratch assumes that kids can read fairly fluently and already have a good notion of sequence.  (I’ve been told, though, that even college students taking a first programming class sometimes have what I would think of as a pre-kindergarten grasp of sequence, so maybe Scratch is making too strong an assumption even for the targeted age group.)

I’ve not been able to make recommendations for younger kids, as I’ve not seen anything suitable.

A recent post on the Mindshift website (apparently the transcript for an NPR programs), Introducing Programming to Preschoolers, describes a new tool supposedly coming out this summer: Scratch Jr.  The new language builds on experience with Scratch and with cherp, a Lego robotics language for preschoolers. Unfortunately, details about Scratch Jr. do not seem to be available, so we’ll have to wait until this summer when they release it to see what it offers.  Some of the mentioned changes (like replacing the overly subtle color distinctions of Scratch blocks by bigger color contrasts of more saturated colors) seem to be small, but important tweaks.  Bigger changes will be needed to handle pre-literate children, and I’m curious to see how much power they can leave in the language while lowering the entry barrier.

Next Page »