Posts tagged ‘K12’

What universities can do to prepare more Computer Science teachers? Evidence from UTeach

UTeach has published a nice blog post that explains (with graphs!) the ideas that I alluded to in my Blog@CACM post from last month.  While currently CS teacher production is abysmal, UTeach prepared CS teachers tend to stay in their classrooms for more years than I might have expected.  More, there is evidence that suggests that there is significant slice of the CS undergraduate population that would consider becoming teachers if the conditions were right.  There is hope to imagine that we can making produce more CS teachers, if we work from the University side of the equation.  Working from the in-service side is too expensive and not sustainable.

Michael Marder, Professor of Physics and Executive Director of UTeach, and Kim Hughes, Director of the UTeach Institute, write…

The number of computer science and computer science education teachers prepared per year is smaller than for any other STEM subject — even engineering and physics — and while estimates vary, it is safe to say it is on the order of 100 to 200 per year, compared to the thousands of biology or general science teachers prepared. 

The U.S. has around 24,000 public and 10,000 private high schools. Only 10% to 25% have been offering computer science, so to provide all of them with at least one teacher at the current rate simply looks impossible.

Source: What universities can do to prepare more Computer Science teachers

January 5, 2018 at 7:00 am Leave a comment

Advancing Computational Thinking Across K-12 Education, across Many Disciplines – Digital Promise #CSEdWeek

New report on coding, computer science, and computational thinking has just come out from Digital Promise.  I have been critical of some definitions of computational thinking (as I described in my book). I like the way Digital Promise defined them, and particularly how they connect CT to learning in other disciplines.

Advocating for computational thinking throughout the K-12 curriculum does not replace or compete with efforts to expand computer science education: on the contrary, it complements them. Where computer science is not yet offered, integrating computational thinking into existing disciplines can empower educators and students to better understand and participate in a computational world. And schools already teaching coding and computer science will benefit from weaving computational thinking across disciplines in order to enrich and amplify lessons that are beyond the reaches of computer science classes.

We offer a number of recommendations to move this work forward. Among them are advocacy campaigns, curriculum and resource development, professional development for teachers and administrators, and continued research.

Source: Advancing Computational Thinking Across K-12 Education – Digital Promise

December 8, 2017 at 7:00 am Leave a comment

Keeping the Machinery in Computing Education: Back to the Future in the Definition of CS

I’ve been excited to see this paper finally come out in CACM. Richard Connor, Quintin Cutts, and Judy Robertson are leaders in the Scotland CAS effort. Their new curriculum re-emphasizes the “computer” in computer science and computational thinking. I have bold-faced my favorite sentence in the quote below. I like how this emphasis reflects the original definition of computer science: “Computer science is the study of computers and all the phenomena surrounding them.”

We do not think there can be “computer science” without a computer. Some efforts at deep thinking about computing education seem to sidestep the fact that there is technology at the core of this subject, and an important technology at that. Computer science practitioners are concerned with making and using these powerful, general-purpose engines. To achieve this, computational thinking is essential, however, so is a deep understanding of machines and languages, and how these are used to create artifacts. In our opinion, efforts to make computer science entirely about “computational thinking” in the absence of “computers” are mistaken.

As academics, we were invited to help develop a new curriculum for computer science in Scottish schools covering ages 3–15. We proposed a single coherent discipline of computer science running from this early start through to tertiary education and beyond, similar to disciplines such as mathematics. Pupils take time to develop deep principles in those disciplines, and with appropriate support the majority of pupils make good progress. From our background in CS education research, we saw an opportunity for all children to learn valuable foundations in computing as well, no matter how far they progressed ultimately.

Source: Keeping the Machinery in Computing Education | November 2017 | Communications of the ACM

November 20, 2017 at 7:00 am 3 comments

More Teachers, Fewer 3D Printers: How to Improve K–12 Computer Science Education 

A nice summary of where we’re at with CS Ed in the United States, where additional funding and effort should go, and where it shouldn’t.

Addressing the teacher shortage should be the number one use for the new funds allocated by the Trump administration, says Mark Stehlik, a computer science professor at Carnegie Mellon University. A lack of qualified teachers is the biggest barrier to CS education in the U.S., he says, and he thinks the problem is going to get worse. An earlier generation of CS educators has started to retire, and he says younger CS graduates “aren’t going into education because they can make twice or more working in the software industry.”

One solution could be to expand the reach of each CS educator through online classes. But “online curricula aren’t going to save the day, especially for elementary and high school,” Stehlik says. “A motivated teacher who can inspire students and provide tailored feedback to them is the coin of the realm here.”

Where the money should not be spent? On hardware and equipment. Laptops, robots, and 3D printers are important, says’s Yongpradit, “but they don’t make a CS class. A trained teacher makes a CS class. So money should be focused on training teachers and offering robust curriculum.”

Source: More Teachers, Fewer 3D Printers: How to Improve K–12 Computer Science Education – IEEE Spectrum

October 18, 2017 at 7:00 am 8 comments

The Role of Emotion in Computing Education, and Computing Education in Primary School: ICER 2017 Recap

I wrote my Blog@CACM post in August about the two ICER 2017 paper awards:

  • Danielsiek et al’s development of a new test of student self-efficacy in algorithms classes;
  • Rich et al.’s trajectories of K-5 CS learning, which constitute an important new set of theories about how young students learn computing.

Rich et al.’s paper is particularly significant to me because it has me re-thinking my beliefs about elementary school computer science. I have expressed significant doubt about teaching computer science in early primary grades — it’s expensive, there are even more teachers to prepare than in secondary schools, and it’s not clear that it does any longterm good. If a third grader learns something about Scratch, will they have learned something that they can use later in high school? Katie Rich presented not just trajectories but Big Ideas. Like Big Ideas for sequential programming include precision and ordering. It’s certainly plausible that a third grader who learns that precision and ordering in programs matters, might still remember that years later. I can believe that Big Ideas might transfer (at least, within computing) over years.

I was struck by a recurring theme of emotion in the papers at ICER 2017. We have certainly had years where cognition has been a critical discussion, or objects, or programming languages, or student’s process. This year, I noticed that many of these papers were thinking about beliefs and feelings.

I find this set of papers interesting for highlight an important research question: What’s the most significant issue influencing student success or withdrawal from computer science? Is it the programming language they use (blocks vs text, anyone?), the kind of error messages they see, the context in which the instruction is situated, or whether they use pair programming? Or is the most significant issue what the students believe about what they’re doing? And maybe all of those other issues (from blocks to pairs) are really just inputs to the function of student belief?

(Be sure to check out Andy Ko’s summary of ICER 2017.)

September 1, 2017 at 7:00 am 1 comment

US States Move toward CS Ed: MA, CA, and the challenge of local control

I review for the WIPSCE conference (an international conference on K-12 computing), and found a phrase in one of the papers I was reviewing about computing education now being mandatory in the United States.  Well, not really — kinda, sorta, in someplaces.  It may be hard for educators outside the US to understand the decentralized nature of computing education in the US.  The individual 50 states control primary and secondary school education by law, and some of those states (notably, California, Massachusetts, and Nebraska) are “local-control” — the state itself decides to shift almost all of the education decision-making to the individual school districts (easily a hundred in a small state, multiple hundreds in large ones).

Recently the National Association of State Boards of Education has come out with a policy update about CS education in the states.  Useful — except for the local control states, where the state boards of education don’t really have that much power.

While educators and parents recognize computer science as a key skill for career readiness, only five states have adopted learning standards in this area. Tides are changing, however, as the Every Student Succeeds Act (ESSA) recognizes with its call on states to provide a “well-rounded education” for students, to include computer science standards. This NASBE Policy Update outlines what states need to consider as they develop computer science standards and improve instruction, highlighting several promising state efforts already under way.

Source: NASBE – States Move toward Computer Science Standards

How do local control states implement reforms like computing education? In California, they’re trying to pass legislation to create an advisory board about integrating CS into education. It’s all about advice and recommendation — the state can’t make the districts do much.

California legislators are reviewing a bill that would create an advisory board to integrate computer science into education.The Assembly legislation would create a 23-person panel overseen by the state Superintendent that would deliver recommendations by September 2017 on how to improve computer science education, and establish curriculum standards for grades K-12.The panel would comprise teachers, administrators and professors across K-12 and higher education, as well as representatives from government, parent associations and student advocacy organizations. The bill is backed by Microsoft and

Source: California legislators push computer science education bill

Massachusetts has just come out with their new state standards. I haven’t gone through them all, but from what I’ve seen (and knowing people who helped build it), I believe that they’re really high-quality. But they’re just voluntary. The districts have to be coaxed into adopting them.

Massachusetts public schools may start using new digital literacy and computer science standards as soon as this fall. The state board of elementary and secondary education unanimously approved the standards, which are voluntary, at its monthly meeting Tuesday.”Today’s vote recognizes the importance of digital literacy and computer science to modern life, work and learning,” board chairman Paul Sagan said in a statement. “These standards will help our students think about problem solving in new ways and introduce them to valuable skills they will need in today’s economy.”

Source: Mass. Has New K-12 Standards For Digital Literacy, Computer Science | WBUR News

August 1, 2016 at 7:57 am Leave a comment

How to choose programming languages for learners: Reviewing JavaScript and Ready

My Blog@CACM post for June is Five Principles for Programming Languages for Learners. The five principles I identify are:

  1. Connect to what learners know
  2. Keep cognitive load low
  3. Be honest
  4. Be generative and productive
  5. Test, don’t trust

I wrote the essay in response to Idit Harel’s influential essay American schools are teaching our kids how to code all wrong. There were many responses to Idit’s essay, on social media and in other blogs. Much of the discussion focused on text programming languages vs. drag-and-drop, blocks-based languages, which I don’t think is the most critical distinction.

In this post, I respond to two of the suggestions that came up in some of these discussions. I use the five principles to review the suggestions in a kind of heuristic evaluation.


If we were going to teach a professional language to students, JavaScript is attractive. It’s free and ubiquitous, available in every Web browser. There are many jobs for JavaScript programmers. Because so much is built on top of it, it’s likely to remain around for many years in a compatible form. I argue in the Blog@CACM post that there are many dimensions to “real” when it comes to programming languages. “Use by professionals” is not the most important one when we talk about learners.

I recommend considering each of these five principles before choosing a programming language like JavaScript for learners.

  1. Connect to what learners know – You could teach JavaScript as a connection to what children already know. The notation of JavaScript doesn’t look like anything that children are likely to have seen before, in contrast to Logo’s emphasis on words and sentences, Squeak eToys’ “Drive the Car,” Boxer’s simple UI boxes (what diSessa calls naive realism), and Racket/Bootstrap’s connections between algebra and S-expressions.  However, JavaScript is the language of the Web today, so one could probably relate the programming activities to Web pages. Most learners are familiar with parts of a Web page, animations in a Web page, and other Web features that JavaScript can control. That might serve as a connection point for children.
  2. Keep cognitive load low – JavaScript has a high cognitive load. I’m a JavaScript learner and am just meeting some of its weirder features. I was shocked when I first read that = is assignment, == is type-insensitive equality, and === is type sensitive equality/equivalence. So, "5"==5 is true, but "5"===5 is false. Counting the number of = and remembering what 1 vs 2 vs. 3 means is an excellent example of extraneous cognitive load. My bet is that JavaScript overwhelms children and is probably inefficient for adult learners. This means that learners are spending so much time making sense of the syntax, it takes them longer and more effort to get to the concepts (and they may lose interest before they get to the good stuff).
  3. Be honest – JavaScript is authentic, it’s real for most senses of the term.
  4. Be generative and productive – I don’t know if JavaScript would be generative and productive for students. I don’t know anyone teaching JavaScript as a way to teach significant ideas in CS or other STEM disciplines. My worry is that the cognitive load would be so overwhelming that you couldn’t get to the interdisciplinary or complex ideas. Students would spend too much effort counting = and fighting for loops.
  5. Test, don’t trustThe only study that I know comparing JavaScript to a blocks-based language had JavaScript losing. JavaScript conditionals and loop structures were far harder for students than the equivalent block-based structures.

We should experiment more with JavaScript, but I suspect that students would do better (struggle less with syntax, learn more, connect to other disciplines more) with a different syntax. If I were trying to get the advantages of JavaScript without the syntax cost, I’d try something like ClojureScript — freely available, as fast as JavaScript, as ubiquitous as JavaScript, used professionally, can be used to control Web pages like JavaScript (so connectable for learners), and with the syntactic similarities to mathematics that Racket enjoys.


Baker Franke of is promoting the essay Coding snobs are not helping our children prepare for the future as a response to Idit’s essay. The essay is about the application-building tool, Ready. Media theorist Dough Rushkoff has also been promoting Ready, What happens when anyone can code? We’re about to find out.

I disagree with Rushkoff’s description of Ready, even in the title. As the first essay by David Bennahum (a “Ready Maker and Venture Partner) points out, it’s explicitly not about using a programming language.

Our efforts at Ready, a platform that enables kids to make games, apps, whatever they want, without knowing a computer language, are designed to offer a new approach to broadening access to code literacy.

Bennahum’s essay means to be provocative — and even insulting, especially to all the teachers, developers, and researchers who have been creating successful contextualized computing education:

In this new world, learning coding is about moving away from computer languages, syntax, and academic exercises towards real world connections: game design and building projects that tie into other subjects like science and social studies… This is the inverse of how computer science has been taught, as an impersonal, disconnected, abstracted, mathematical exercise.

I can see how Rushkoff could be confused. These two quotes from the Ready team seem contradictory. It’s not clear how Ready can be both about “learning coding” and “code literacy” while also allowing kids to make “without knowing a computer language.” There is no programming language in Ready.  What is coding then? Is it just making stuff?  I agree with Rushkoff’s concerns about Ready.

True, if people don’t have to code, they may never find out how this stuff really works. They will be limited to the programming possibilities offered by the makers of the platforms, through which they assemble ready-made components into applications and other digital experiences.

Let’s consider Ready against the five principles I propose.

  1. Connect to what learners know – the components of Ready are the icons and sliders and text areas of any app or game. That part is probably recognizable to children.
  2. Keep cognitive load low – Ready is all about dragging and dropping pieces to put them together. My guess is that the cognitive load is low.
  3. Be honest – Ready is not “real” in most sense of authenticity. Yes, students build things that look like apps or games, but that’s not what motivates all students. More of Betsy DiSalvo’s “Glitch” students preferred Python over Alice (see blog post). Alice looked better (which appealed to students interested in media), but students knew that Python was closer to how professional programmers worked. Authenticity in terms of practice matters to students. No professional programmer solely drags and drops components. Programmers use programming languages.
  4. Be generative and productive – Ready completely fails this goal. There is no language, no notation. There is no tool to think with. It’s an app/game builder without any affordances for thinking about mathematics, science, economics, ecology, or any other STEM discipline. There’s a physics engine, but it’s a black box (see Hmelo and Guzdial on black box vs glass box scaffolding) — you can’t see inside it, you can’t learn from it. They build “models” with Ready (see this neurobiology example), but I have a hard time seeing the science and mathematics in what they’re building.
  5. Test, don’t trust – Ready offers us promises and quotes from experts, but no data, no results from use with students.

Ready is likely successful at helping students to make apps and games. It’s likely a bad choice for learners. I don’t see affordances in Ready for computational literacy.

June 20, 2016 at 7:46 am 23 comments

Older Posts

Recent Posts

January 2018
« Dec    


Blog Stats

  • 1,469,134 hits

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 5,214 other followers

CS Teaching Tips