Imagine it's thirty years in the future, 2043, and computer science is taught in every high school in the United States. Maybe students choose CS as a science option alongside biology, chemistry, or physics. Maybe students can choose between calculus and CS for their fourth year mathematics requirement. What has to happen between now and then for this stable future for computing education?
One significant difference from today is that computer science will have to be taught to future teachers. Our current practice focuses on converting existing teachers. Everything taught in today's high schools appear in a teacher's pre-service education (before they start teaching in a school, in contrast with in-service professional development). Pre-service education is where methods for teaching are introduced.
We have to have computer science in pre-service education for a reliable stream of new teachers. If you were a superintendent of a big city school district, would you require every school in your district to teach computer science without reliable production of new teachers? Pre-service education is based in schools and departments of education, not in computer science.
Today, we develop new high school computer science teachers in the United States (and similarly in England and Denmark) through in-service professional development. We work with teachers who were originally certified in science, mathematics, or business (where the last is the most common in most states) and teach them both computer science and how to teach computer science. We're "converting" them to computer science. The in-service professional development being offered today in the US is coming mostly from university computer science departments.
In these early days of establishing computing education in schools, the computer scientists have to be involved. The education faculty don't have the expertise yet. More importantly, the job of making CS for everyone changes how we see our own field and its relationship with society. What is so valuable about computer science that it's important to have in every high school? How much computer science do non-programmers need? What tools and notations are appropriate for general use, as opposed to practitioner use? These are useful questions to answer, and it's our job to answer them.
But at some point, we will have to start institutionalizing the process of developing new high school computer science teachers. The first step will be in creating and offering endorsements. An endorsement (in most states) is an add-on to an existing teaching certification. It's a credential showing that a teacher who is moving to computer science has had additional professional development. Several states already have computer science endorsements. Offering an endorsement will require collaboration between computer scientists and education faculty. All endorsements that I know require a methods course (see the ISTE/NCATE standards for a CS endorsement) that help teachers learn how to teach computer science well? Computer scientists can contribute to that, but in the end, it's education faculty who know how to describe, evaluate, and teach methods.
We're just starting on this path. Endorsements are not (yet) having much of an influence. In Georgia, endorsement programs are shutting down because they've not had students enroll in several years. Last I heard from him, Aman Yadav at Purdue has had no more than one student in his program in any year. Teachers won't seek the endorsement until they see that there's value in it.
After the endorsement, we will need certifications. We will need teachers to be able to go to school to become "Computer Science Teachers," just as they become "Biology Teachers" or "Mathematics Teachers" today. The Computer Science Teachers Association (CSTA) has just released their report on CS teacher certifications in the United States. "Bugs in the System reveals that only two states (Arizona and Wisconsin) require teachers to be certified/licensed in Computer Science and in many states there are no requirements for teaching Computer Science at all, meaning teachers with little or even no Computer Science knowledge can teach it and teacher preparation institutions are unlikely to offer programs for new Computer Science teachers." We have a long way to go, and we can only get there in collaboration with education faculty. Computer scientists don't want to be in the business of certifying teachers, and we shouldn't be. We don't know how to prepare teachers for a career in education.
I talked to Michelle Friend, past president of CSTA (and a PhD student at Stanford) about establishing pre-service computing education programs. She agreed that we need education faculty to help prepare future CS teachers, but she suggested that the first step isn't creating a Computing Education Program or Department (as there are Science Education and Mathematics Education Departments today). She thought that we would first see faculty who have a focus in computing education hired into either Mathematics or Science Education faculty. From there, courses could be taught and pre-service computing programs established.
How do we get to computing education in all US high schools in 30 years? We have to be able to produce computing education teachers. To do that:
- We need to get education faculty to teach future CS teachers. They'll probably start out in mathematics or science education.
- We need endorsements, in collaboration between CS and education faculty, so that teachers who move to CS can get a credential for their effort. And the endorsement has to be worth something.
- We need certifications so that undergraduate students can pursue a career as a CS teacher.