I spent 25 years as a professor in the College of Computing at Georgia Tech, and I’ve spent the last three years as a professor in Computer Science & Engineering in the College of Engineering at the University of Michigan. I realized pretty soon after I got to Michigan that the way my colleagues talked about Engineering Education was different from how I understood Computing Education. This semester, I taught a course on "Theoretical and Conceptual Frameworks in Engineering Education Research (EER)," which gave me the opportunity to dive deep into engineering education. Now I can better articulate the differences. These differences might not exist for all CS departments in Engineering, and it’s always hard to characterize whole disciplines like "engineering education" and "computing education." I’m relying a lot on the literature about computing and engineering education.
A College of Engineering produces engineers. That’s probably obvious if you’re in a College of Engineering. For many engineering educators, an Engineering school is a professional school. A Medical school produces doctors. A Law school produces lawyers. An Engineering school produces engineers. That’s why there are relatively few minors in Engineering, and why Engineering schools tend not to offer courses for non-Engineering students. The goal is not to produce graduates who know something about Engineering; the goal is to produce professional engineers.
The College of Computing at Georgia Tech aims to produce software engineers, too, but that’s only one of the educational goals. Computing education aims to provide students with the computing that they need in their profession. Every undergraduate at Georgia Tech takes a course in programming explicitly designed to serve the needs of their major. There are computing degrees that aren’t about software engineering. The College of Computing has a human-centered computing Ph.D., which prepares researchers who study humans in computational contexts. Computing and Liberal Arts Colleges jointly offer a BS in Computational Media.
My point is different from whether computer science is in engineering, science, or mathematics. Rather, I’m arguing that computing education intersects engineering education, but is not the same as engineering education. If you think that programming is an engineering skill, then my point is that Learning Engineering is not always about Becoming an Engineer. Sometimes, people want to learn programming for their own goals and identities, not to become a professional engineer — that’s actually the bigger part of computing education.
Here are three ways in which computing education is different from engineering education, which go beyond my personal experiences at Georgia Tech and at Michigan.
1. Organizations: The organizations that lead computing and engineering education each have mission statements, which reflect the values of (at least) the leadership of those organizations. The leading Engineering Education organization in the world is the American Society for Engineering Education (ASEE). ASEE’s mission is to "advance innovation, excellence, and access at all levels of education for the engineering profession."
Let’s contrast that with the mission of the ACM SIG for Computer Science Education (SIGCSE), the largest organization of CS post-secondary educators. SIGCSE’s Mission: is to provide "a global forum for educators to discuss research and practice related to the learning, and teaching of computing, the development, implementation, and evaluation of computing programs, curricula, and courses at all education levels, as well as broad participation, educational technology, instructional spaces, and other elements of teaching and pedagogy related to computing."
ASEE is about the engineering profession. SIGCSE is about the learning and teaching of computing. Engineering education is concerned with the profession of engineering, where computing education is about people learning the computing that they need.
2. K-12 Education: The EER scholar James Holly Jr. told me about the National Academy publication Standards for K-12 Engineering Education. I hadn’t read it before. It’s worth looking at because it doesn’t actually contain standards for K-12 engineering education. Instead, they decided that it wasn’t worth doing. Quoting from the conclusions section of the executive summary:
The committee concluded that, although it is theoretically possible to develop standards for K–12 engineering education, it would be extremely difficult to ensure their usefulness and effective implementation.
In contrast, CS Education is a huge movement in K-12. There is a framework for K-12 CS education (see https://k12cs.org/), which is being instantiated in standards across the country. Code.org reports that 22 of the 50 U.S. states have explicit policies to give all high school students access to CS education (see advocacy site here). The ECEP Alliance works with 23 states and Puerto Rico on implementing computing education in their public policy.
Why is it different? I don’t know for sure, and suspect that there is probably a dissertation or two worth of content in answering that question. Here’s my guess. Two of the problems identified in the Standards report are "there is not at present a critical mass of teachers qualified to deliver engineering instruction" and "evidence regarding the impact of standards-based educational reforms on student learning in other subjects, such as mathematics and science, is inconclusive." That sounds like applying the standards of the engineering profession to K-12 education. If teachers don’t know professional engineering practices, then they can’t be expected to teach engineering. If we can’t teach engineering to professional standards, we shouldn’t teach in K-12.
Computing in K-12 has broader goals than becoming a computing professional. When Code.org talks about the number of jobs impacted by computing, they’re talking about jobs from data analyst to computational scientist — not only as a professional software developer. You can get a great job that uses computing without becoming a professional software engineer. There are alternative endpoints for computing education. While it may seem impossible to teach enough teachers engineering, we can teach science teachers enough computing to teach computational science (as Uri Wilensky writes about here) or teaching math teachers enough computing to teach algebra by building video games (as in Bootstrap: Algebra). We can decompose computing into useful pieces that can fit in and serve K-12 education.
3. Identity: Teaching my first EER course drove home how important engineering identity is to engineering education. Studies in EER often include asking students "Are you an engineer?" and "Do you think others see you as an engineer?" Researchers relate a lack of engineering identity as a sign of trouble, that the student might drop out of engineering or might not succeed in the field. Engineering educators mean to develop and promote a sense of engineering identity. When I told one of my EER colleagues about my insights about engineering and computing education, she asked, "So engineering education is about developing identity, but computing education is just about transmitting the knowledge?"
Computing education is more complicated than that. A computing educator can’t assume one professional identity, especially when considering courses for non-majors. Think about courses preparing future computational scientists or computational artists as examples — those students have or are developing an identity apart from engineering. Further, there’s a lot of diversity among people who want to learn computing, but don’t want to become a professional engineer. Computing education researchers have studied how computing education must adapt to a student’s identity. Betsy DiSalvo found that African-American teens’ identity did not encourage technology production, which was a challenge for her computing education design. Brian Dorn studied graphic designers who wanted to learn to code but balked at traditional programming courses, because they don’t connect with the identity of being a programmer. Katie Cunningham created a curriculum for data science students who didn’t succeed in CS classes because their identity rejected a focus on syntax and semantics for its own sake.
Computing education is about more than transmitting knowledge, but it’s less about promoting professional identity than engineering education. Computing educators can’t assume a single professional identity. We have to deal with many identities.
Conclusion: Engineering education is focused on producing professional engineers. That’s an important goal. The world needs more great engineers. Computing education is sometimes about producing more software engineers, and that’s great because we need many more of those, too. But computing education is also about developing scientists, artists, end-user programmers, and citizens who understand the technological world in which they live. There’s a big intersection between computing education and engineering education, but the part outside the intersection is a lot bigger than the part inside.
My thanks to Leo Porter, Cynthia Lee, Adrienne Decker, Briana Morrison, Ben Shapiro, and Tamara Nelson-Fromm, who gave me comments on earlier drafts of this post.
Mark Guzdial is professor of electrical engineering and computer science in the College of Engineering, and professor of information in the School of Information, of the University of Michigan.