Posts tagged ‘teachers’

Until I heard this recent Freakonomics podcast, I was not aware of this response to innovation and entrepreneurship trends. The quote below speaks directly to engineering education, but is as much about computing education.

The value of engineering is much, much more than just innovation and new things. Focusing on taking care of the world rather than just creating the new nifty thing that’s going to solve all of our problems. If you look at what engineers do, out in the world, like 70-80 percent of them spend most of their time just keeping things going. And so, this comes down to engineering education too, when we’re forcing entrepreneurship and innovation as the message, is that we’re just kind of skewing reality for young people and we’re not giving them a real picture and we’re also not valuing the work that they’re probably going to do in their life. That just seems to me to be kind of a bad idea.

The quote is from Lee Vinsel who was a co-author on a thought-provoking essay, Hail the maintainers, sub-titled: “Capitalism excels at innovation but is failing at maintenance, and for most lives it is maintenance that matters more.”

To take the place of progress, ‘innovation’, a smaller, and morally neutral, concept arose. Innovation provided a way to celebrate the accomplishments of a high-tech age without expecting too much from them in the way of moral and social improvement.

It’s easy to see this emphasis on innovation over maintenance. We talk about disruption and transformation much more than reforming, repairing, or improving. We talk more about creation than understanding.

We increasingly teach computer science to prepare students to be innovators and create new things (e.g., join startups), when the reality is that most computer science graduates are going to spend the majority of their time maintaining existing systems. (See the papers by Beth Simon and Andy Begel tracking new hires at Microsoft.) Few who do enter the startup world will create successful software and successful companies, so it’s unlikely that those students who aim to create startups will have a lifelong career in startups. In terms of impact and importance, keeping large, legacy systems running is a much greater social contribution than creating yet another app or game, when so few of those startup efforts are successful. Aren’t we then as guilty as the engineering educators, described in the first quote?

In terms of what we teach in computing and how, innovation and maintenance is a hard balance to strike. As Alan Kay has noted, “The computing revolution hasn’t happened yet.” We’re still inventing and innovating because what we have isn’t good enough. But, that desire to value what’s new leads us to overvaluing the fad of the moment, rather than exploring, developing, and understanding what we have at-hand. Why do we have to keep changing the introductory programming language, when it’s clear that we don’t understand how students learn (and don’t learn) the programming languages that we currently teach? Why did we give up on Logo when it’s still better than most languages for children today? It’s a tough balance — to strive for better than we have, but valuing, developing, and improving what we currently have.

My Blog@CACM post for this month is about imagining the remedial teaching techniques of a school-based “Computing Lab” in the near future.

It’s becoming obvious that computing is a necessary skill for 21st Century professionals. Expressing ideas in program code, and being able to read others’ program code, is a kind of literacy. Even if not all universities are including programming as part of their general education requirements yet, our burgeoning enrollments suggest that the students see the value of computational literacy.

We also know that some students will struggle with computing classes. We do not yet have evidence of challenges in learning computation akin to dyslexia. Our research evidence so far suggests that all students are capable of learning computing, but differences in background and preparation will lead to different learning challenges.

One day, we may have “Computing Labs” where students will receive extra help on learning critical computational literacy skills. What would happen in a remedial “Computing Lab”? It’s an interesting thought experiment.

DON’T rely on program visualizations. The evidence that I’ve seen suggests that program visualizations can help high-ability students, and well-designed program visualizations can even help average students. I don’t see evidence that program visualizations can help the remedial student. Sketching and gesture are more effective for teaching and learning in STEM than diagrams and visualizations. Sketching and gesture encourage students to develop improved spatial thinking. Diagrams and visualizations are likely to lead remedial students into more misconceptions.

ICER 2016 was just held in Melbourne, Australia, so I found the article linked at the bottom (and from which these images come from) particularly relevant and interesting.

Australia is facing a boom in primary school students, which creates additional demand for teachers. As has been mentioned here previously, there is a shortage of teachers. The shortage isn’t distributed across fields. In particular, over 30% of computing teachers in Australia are teaching without qualification (see image below). When considering other shortages (e.g., declining number of computing teachers in Scotland, as described in the last post), it’s clear that the pipeline of CS teachers is going to be an impediment to CS for all.

But an influx of new students isn’t the only problem our school system needs to address.Shortages in specific subject areas mean that many students are being taught by teachers working outside of their qualifications.

If you can forgive the bias in the graph (what looks like a 90% drop is actually a 25% drop), you will find this to be an important and interesting report. Scotland has one of the strongest computing at schools efforts in the world (see site here), with an advanced curriculum and a large and well-designed professional development effort (PLAN-C). Why are they losing CS teachers?

When I wrote about this in 2014 (the trend has only continued), I pointed out that part of the problem is teachers refusing to shift from teaching Office applications to computer science. The current report doesn’t give us much more insight into why. The point I found most interesting was that Scottish student numbers dropped 11%, and teacher numbers in the other disciplines are also declining (e.g., mathematics teachers are declining by 6% over the same period), but at a much slower rate than the CS decline of 25%. That makes sense too — if you’re a teacher and things are getting tough, stick with the “core” subjects, not the “new” one. It’s worth asking, “How do we avoid this in the US?” and “Can we avoid it?”

We know too little about what happens to CS teachers in the US after professional development. I know of only one study of CS teacher retention in the US, and the observed attrition rate in that study was far worse than 25%. Do we know what US retention rate is for CS teachers? Maybe Scotland is actually doing better than the US?

Today we launch our latest report into the numbers of Computing Science teacher numbers across Scotland. We have carried out this survey in 2012, 2014 and now 2016 as we are concerned about the decreasing number in Computing teachers in Scottish schools. Nationally we now have 17% of schools with no computing specialist and a quarter of Secondary schools have only one CS teacher.

My Blog@CACM post for this month is on JES, the Jython Environment for Students, which at 14 years old and over 10,000 downloads, is probably one of the oldest, most used, and (by some definition) most successful pedagogical Python IDE’s.

I’m sad about this one, because we use and like this textbook, but I think it’s time to move to Python 3. Is there a compatible library providing the API used in the text?

Short answer: No. There are no compatible Media Computation libraries for CPython 2 or 3.

We keep trying. The latest attempt to build Media Computation libraries in CPython is here: https://github.com/sportsracer48/mediapy. It doesn’t work on all platforms yet, e.g., I can’t get it to load on MacOS.

We have yet to find a set of libraries in Python that work cross-platform identically for sample-level manipulations of sounds. For example, PyGame’s mixer object doesn’t work exactly the same on all platforms (e.g., sampling rates aren’t handled the same on all platforms, so the same code plays different speed output on different platforms). I can do pixel-level manipulations using PIL. We have not yet tried to find libraries from frame manipulations of video (as individual images). I have just downloaded the relevant libraries for Python 3 and plan to explore in the future, but since we can’t make it work yet in Python 2 (which has more mature libraries), I doubt it will work in Python 3.

I complained about this problem in my blog in 2011 (see post here). The situation is better in other languages, but not yet in Python.

I have been building Media Computation examples in GP, a blocks-based language (see post here).

Jeff Gray’s group at U. Alabama has built Blockly-like languages Pixly and Tunely for pixel and sample level manipulations.

Cynthia Lee at Stanford has been doing Media Computation in her classes in MATLAB and in C++

The Calico project supports Media Computation in IronPython (based on Python 3) and many other languages, because it builds on .NET/MONO which has good multimedia support.

We’re able to more and more in JavaScript-based Python implementations (like Pythy and Runestone), because JavaScript has excellent cross-platform multimedia support.

When we did the 4th edition of our Python Media Computation textbook, I looked into what we’d have to change in the book to move to Python 3. There really wasn’t much. We would have to introduce print as a function. We do very little integer division, so we’d have to explain that. The focus in our course (non-technical majors, first course) is at a higher level than the differences between Python 2 and 3. I am confident that, at the end of our course, the majority of our students would understand the differences between Python 2 and 3. As we move more to browser-based IDE’s, I can support either Python 2 or 3 syntax and semantics. Preparing students for industry jobs using exactly CPython 3 is simply not a priority in our course.

What we’re trying to achieve in CS education in the United States is rarely done (successfully) and hasn’t been done in several decades (see previous post on this). We’re changing the education canon, what everyone is taught in schools. It’s a huge effort, involving standards and frameworks, convincing principals and legislators, and developing teachers and curricula.

Right now, we’re mostly developing the teachers we need with in-service education — which is expensive. We’re shipping around trainers, people providing professional development to existing teachers. We’re paying travel costs (sometimes) to teachers, and stipends (sometimes) for their time.

At a meeting of the Georgia CS Task Force, where talking about the high costs of in-service CS teacher education, we started wondering if the costs might be cheaper in the long-run by growing pre-service education, rather than scaling in-service. Of course, we have to build a critical mass cohort of in-service teachers (e.g., to provide mentors for student teachers) — in many states, we’ve already done that.

Creating pre-service programs at state universities creates opportunities for in-service education that are cheaper and maybe more effective than what we’re creating today. Pre-service programs would require CS Education faculty (and likely, graduate students) at state universities. These people are then resources.

First, those faculty are now offering pre-service PD, which is necessary for sustainability.

Regional high school and elementary school teachers could then go to the local university for in-service programs — which can be run more cheaply at the university, than at a downtown hotel or conference center with presenters shipped in from elsewhere.

The CS Ed faculty are there as a resource for regional high school teachers for follow-up, and the follow-up is a critical part of actually instituting new curricula.

Many education schools offer resources (e.g., curriculum libraries, help with teacher questions) that would be useful to CS teachers and are available locally with people who can answer questions.

Pre-service programs require more up-front costs (e.g., paying for faculty, setting up programs). But those costs likely amortize over the lifetime of the faculty and the program. Each individual professional development session offered by local faculty (either pre-service or in-service) is cheaper than each in-service session created by non-local presenters/developers. Over many years, it is likely cheaper to pay the higher up-front costs for pre-service than the long, expensive burn of in-service.

I don’t know how to figure out the cost trade-off, but it might be worthwhile for providers like Code.org and PLTW to play out the scenarios.