Future of Computer Science Education
I’m helping to write a chapter on the status of computer science education, and all of us helping to write the chapter were asked to make a pass on what we foresaw as the “Future of Computer Science Education.” I thought it would make a nice blog post for the end of National Computer Science Education Week. (I won’t name my co-authors here — I’m giving myself freedom to dream what I’d like to see in 10-15 years, which might not match others’ visions, so I’ll give them the freedom to ignore me
Computer science classes will be accepted as meeting general science requirements in most state curricula. We require students to take science classes in high school for many reasons, but I’m going to focus on two: (1) To understand some of how their world works and appreciate that there is more going on than can be seen by their senses, and (2) to use methods of scientists, like hypothesis generation, experiment, and analysis of results.
Certainly, the virtual world is as important to students’ future lives as any slice of the natural world. It is important for students to know about the processes of mitosis and meiosis in generating cells. It is as important for students in their everyday lives to understand that all information in a computer is stored in bytes, and thus a byte of a downloaded image might be interpreted as a machine instruction. Computer science is no less important for focusing on the designed world.
The work processes of computer scientists are like those of natural scientists, and students could learn the processes of science in computing, perhaps more easily than when working with the physical world. Defining a program is creating a hypothesis. Running a program is conducting an experiment. While few computer science classes are created in order to teach science process, they could be, and perhaps should be, to earn the right to be counted toward achieving science learning standards. Computing taught as a science will introduce computing as a powerful tool for supporting thinking.
Computer science majors will become the smallest percentage of students studying computing. When computer science is taught in all high schools, to give students more options in meeting their science requirements, more students will discover their love of computing and will pursue the field in undergraduate years. However, few of these students will study “computer science.” Computing will continue to specialize and to develop new degree programs, such that field of “computer science” will diminish.
Herb Simon called the computer a “millennial device,” a device (like the printing press) comes along once a millennium and defines the next millennium. Many academic disciplines would emerge from such a device. It would be surprising if we got the name of the field and its definition right in the first 50 years of a millennium-long revolution. We do not have a “printing press science” or even a “book science,” though maybe there was something akin to that in the first 50 years of the printing press.
We already have five disciplines defined in our curricular volumes. There are many more disciplines and degree programs emerging already beyond those five, such as Informatics, Bioinformatics, Video Game Design, and Computational Media. Over the next 10 years, more will emerge.
Jim Foley has pointed out that 100 years ago, you got a degree in “Engineering.” Somewhere along the way, people realized that that was too broad, and the disciplines of Mechanical, Aerospace, Civil, and Electrical Engineering were defined. Computing is even more broad than engineering, and will be defined in terms of subdisciplines, too. Such specialization enables growth in the overall field and greater advances along each branch of division.
Computing education will broaden beyond the majors, and even beyond undergraduates. A joking criticism of the ACM SIGCSE community read on the Internet is that it is really “SIGCS1,” playing on the curricular code name for the first course in computer science, “CS1.” Much of SIGCSE focuses on introducing computing to the undergraduate major in computer science. As more and more people want to know about computing, the computing education community will grow to address the broader needs of helping people understand computing at all ages.
A recent study estimates that, by 2012, there will be four times as many professionals programming computers who are not professional software developers as there are professional software developers. The vast majority of people building software will not be computing majors. Who will help them learn computing? Should they have to teach themselves all the lessons learned by computer scientists on how to develop software effectively and efficiently? Computing educators will have an important audience in the non-majors who need to use computing in a significant, intellectually deep way.
Computing is important for everyone. It will become accepted as meeting science requirements in secondary school. There will be a broad diversity of undergraduate majors studying computing, and even more who do not plan to become computing professionals. There will be many adults needing to learn and re-learn computing. The demand for computing education will be enormous, at many levels in many forms. The computing education community will need to grow and diversify to meet this demand.
Computing will use distance learning technologies effectively. Apart from the language interpreters and compilers that our students use to program, few computing courses use technology to facilitate learning. That’s surprising. No discipline is better suited to having its concepts and practices easily supported by a computer. Providing scaffolding and guidance on a computer for computing should be an obvious target for learning technologies development. Computer science departments are not at a lack for software development expertise.
Distance learning is becoming more important, for reaching those students who cannot reach traditional institutions, e.g., such as full-time high school teachers who need to develop new understanding of computing to teach these new classes. Demand for computing education will grow, and there will be increased demand for computing education at a distance. This pressure will lead computing teachers, finally, to develop the learning technologies that will aid students in learning computing. These technologies will be developed to support the growing number of students at a distance.
The sum of these predictions leads to a technologically literate citizenry – literate about how to use computing to support thinking, not just literate about how to use computers. People will learn more about computing using computing, through effective implementation of learning technologies. The result will be new levels of productivity and advances in many disciplines.