When computer science has to be a requirement if we want it to be available to everyone

December 2, 2019 at 7:00 am 16 comments

Robert Sedgewick had an essay published at Inside Higher Ed last month on Should Computer Science Be Required? (see link here). He has some excellent reasons for why students should study computer science. Several of them overlap with reasons I’ve suggested (see blog post here). He writes:

Programming is an intellectually satisfying experience, and certainly useful, but computer science is about much more than just programming. The understanding of what we can and cannot do with computation is arguably the most important intellectual achievement of the past century, and it has led directly to the development of the computational infrastructure that surrounds us. The theory and the practice are interrelated in fascinating ways. Whether one thinks that the purpose of a college education is to prepare students for the workplace or to develop foundational knowledge with lifetime benefits (or both), computer science, in the 21st century, is fundamental.

So, we both agree that we want all students in higher education to take a course in computer science — but he doesn’t want that course to be a requirement. He explains:

When starting out at Princeton, I thought about lobbying for a computer science requirement and asked one of my senior colleagues in the physics department how we might encourage students to take a course. His response was this: “If you do a good course, they will come.” This wisdom applies in spades today. A well-designed computer science course can attract the vast majority of students at any college or university nowadays — in fact, there’s no need for a requirement.

Colleges and universities offer the opportunity for any student to take as many courses as they desire in math, history, English, psychology and almost any other discipline, taught by faculty members in that discipline. Students should have the same opportunity with computer science.

I have heard this argument before. Colleagues at Stanford have pointed out that most of Stanford undergraduates take their courses, without a requirement. Many colleagues have told me that a requirement would stifle motivation and would make students feel that we were forcing computer science down their throats. They would rather “attract” students (Sedgewick’s word above). I recognize that most students at the University of Michigan where I now work have the kind of freedom and opportunity that Sedgewick describes.

But I know many institutions and situations where Sedgewick’s description is simply not true. CS teachers can try attracting students, but they are only going to get them if it’s a required course.

  • In most Engineering programs with which I am familiar, students have relatively few electives. In most of the years that I was at Georgia Tech, Nuclear Engineering students had no elective hours — if they took even a single course out of the planned, lockstep four years, the degree would take them longer (and cost them more). Mechanical Engineering students had exactly one three credit hour course that they could choose over a four year program. These are programs where students are not allowed to take any course that they desire. Those two degree programs are extreme situations (but still exist at many institutions). Even here in Computer Science & Engineering at the University of Michigan, students are limited in the number of elective hours that they can take outside of CS and engineering classes. For many technical degrees, if you want students to take a particular subject, you have to convince the faculty who own that degree to include computer science in those requirements. At Georgia Tech, we had to sell a computer science requirement to the rest of campus. I tell that story here.
  • If students are paying by the course, then they take the courses that they need, not the ones that they might desire. I worked with Chattahoochee Technical College when I was in Georgia. They struggled to get students to even finish the requirements for a certificate. Students would take the small number of courses that helped them to gain the job skills that they needed. Completing courses that were merely interesting or recommended to them was simply an unnecessary expense. There are millions of students in US community colleges. If you really think that everyone should learn computer science, you have to think about reaching those millions of students, too.
  • Finally, there are the students who might end up loving computer science but, right now, they don’t desire it. First, they may simply not know what computer science is. In California (as an example), only 39% of high schools offer computer science, and only 3% of all California high school students take it (see link here). Alternatively, they may know what computer science is, but have already decided that it’s not for them. In my group’s research, we use expectancy-value theory often to explain student behavior — if students don’t think that they’ll succeed in computer science, or don’t see people like them belonging in computer science, then they won’t take it. That’s one reason for mandatory computer science in high schools — to give everyone the chance to discover a love in CS. So far, it’s not working in US high schools. I have argued that (see article here) we don’t know how to ramp up to that at the high school level yet. But we certainly could at the higher education level.

I understand Sedgewick’s argument for why he wants to offer the most compelling computer science course he can at Princeton, in order to attract students and motivate them to learn about computing. (I don’t agree with him that curated online videos are better than live lectures, but I think we mean something different by “lectures.”) I also understand why making that course a requirement might undermine his efforts to motivate and engage students. But that’s only a small percentage of students at the Princeton-like institutions in the US, and elsewhere. I’m sure he would agree that everyone deserves the opportunity to learn about computer science. His reasons why CS is important for Princeton students are valid for everyone. We are going to need different strategies to reach everyone. For some students, a requirement is the only way that we are going to make it available to them.

Entry filed under: Uncategorized. Tags: , , .

The future of computing education is in providing literacy to all: Video of SIGCSE 2019 Keynote now available Please forward to high school history teachers: Task-specific programming in social studies data viz

16 Comments Add your own

  • 1. Sam Tobin-Hochstadt  |  December 2, 2019 at 7:14 am

    This question seems like it’s fundamentally about general education requirements, not about CS per se. For example, statistics, math, history, psychology, and literature are all fundamental in similar ways to CS, but very few institutions require them of all students — instead students typically have some choices about fulfilling requirements. Perhaps computing is sufficiently important and distinct that it should be separated out from “math” where it currently lives in most places, but I think a different kind of argument is needed for that than what you provide here.

    I think the argument you make is really a strong case for a CS requirement at the 9-12 level (or even earlier), where curricular choices are made very differently, as you of course know.

    Reply
    • 2. Mark Guzdial  |  December 2, 2019 at 7:47 am

      Sam, could you explain what you mean by “it should be separated out from ‘math’ where it currently lives in most places”? Are you saying that CS classes count as math classes?

      Reply
      • 3. gasstationwithoutpumps  |  December 2, 2019 at 12:51 pm

        I think that he means that CS courses count for the same general-education requirement that calculus or other math course count for. At UCSC that is the “mathematical and formal reasoning” requirement, which also includes logic classes from philosophy, economics, physics, and even some music theory classes. I’ve been told that one of the astronomy courses is the easiest way to satisfy this requirement (easier even than precalculus, which also satisfies it).

        Reply
        • 4. Sam Tobin-Hochstadt  |  December 2, 2019 at 1:58 pm

          Yes, that’s what I mean.

          Reply
        • 5. Mark Guzdial  |  December 2, 2019 at 2:15 pm

          That’s helpful, Kevin — thanks! I’m not sure if I agree with Sam about “most places.” It’s clearly true at places like the U-C system, and I know of liberal arts oriented institutions where that’s the case. At Georgia Tech, Rose Hulman, and Harvey Mudd, CS is its own requirement. At the secondary school level, in Indiana and Georgia (for two that I know about), CS is part of science requirements, not math.

          One of the findings in Miranda Parker’s thesis is that, at the K12 level, there may be as many definitions of “Computer Science (CS)” being used as there are definitions of “Computational Thinking (CT).” Decisions are being made based on definition (CS as math), when there may be others that lead to different ways of thinking about what should be in general education requirements.

          Reply
          • 6. gasstationwithoutpumps  |  December 2, 2019 at 8:03 pm

            Each UC campus has its own general-education system (and sometimes has different requirements for different parts of the same campus), so I don’t know whether the “CS counts like math for gen ed” applies to any campus other than UCSC.

            Reply
          • 7. Sam Tobin-Hochstadt  |  December 3, 2019 at 11:09 pm

            I looked at the gen Ed requirements for the following places, which are all the places I’ve attended or worked plus Michigan where you are:

            Bates college
            University of Chicago
            Northeastern University
            Indiana University
            University of Michigan

            They’re all along the lines I described, with a mathematical/quantitative/formal/symbolic component that includes computer science as well as a lot else.

            I think the three schools you listed are extremely idiosyncratic among US higher education.

            Reply
            • 8. Mark Guzdial  |  December 7, 2019 at 10:09 am

              I’m curious — where did you find GenEd requirements for U-M that includes CS in mathematical/quantitative? That doesn’t exist in the College of Engineering where I am, or in the School of Information where my wife is. Liberal Arts? Sciences?

              Reply
  • 10. gasstationwithoutpumps  |  December 2, 2019 at 12:46 pm

    At UCSC, courses from the computer science and computational media departments count for various general-education requirements: mathematical and formal reasoning, statistical reasoning, human behavior, technology and society, and interpreting arts and media.

    Of course, engineers already satisfy the mathematical and formal reasoning requirement with calculus, and most have a required probability course that satisfies statistical reasoning (though it probably shouldn’t), so general-education requirements don’t force engineers to take programming. That is indeed up to the individual departments. Indeed, my department requires several programming courses, which we teach ourselves, because the CSE department offers only slow-paced lower-division courses to non-majors.

    I do not see computer science as being nearly as important to general education as statistics is, and students with even slight interest in programming are taking programming courses, because of the job market. Adding only those who know they don’t want to be there will make the classes much harder to teach, and the resulting class attitude will not convert many. Talk to people who teach classes that are taken primarily because of a general-ed credit and not because of student interest—those classes are offered mainly to get butts in seats, not because anyone expects much learning to occur.

    Our university already cannot handle the demand for CS courses (waiting lists of 250 students for a required course for the major, large upper-division courses cancelled for lack of instructors, students outside the major denied opportunities to take any upper-division courses, students not allowed to change majors to CS if they don’t enter with it as their major, … ), so why would we require more students to take CS?

    Reply
    • 11. Mark Guzdial  |  December 2, 2019 at 2:18 pm

      I tend to agree with you that statistics may be even more important for general education than CS, but it’s not an “either-or.” In fact, it may be an “and.” Building simulations in code, gathering data from the simulations, and then analyzing the results can be a great way to learn about both statistics and programming.

      If we agree that everyone should learn something about computer science, then we should think about models that make that work. Simply packing everyone into an intro class is one model that might work, but it’s not the only viable model.

      Reply
      • 12. gasstationwithoutpumps  |  December 2, 2019 at 8:05 pm

        I think that learning programming is like learning writing—the one-size-fits-all model does not work well. Just as there are many different genres and purposes for writing, there are many different styles and purposes for programming. And I do think that it is programming, not computer science, that is worth wider (though perhaps not universal) dissemination, just as I think that writing needs to be universally taught, but literature does not.

        Reply
        • 13. Mark Guzdial  |  December 2, 2019 at 8:09 pm

          We might disagree about terms, but I think agree with your argument.

          Reply
  • 14. gflint  |  December 3, 2019 at 11:38 am

    Requiring CS in 9-12 has one huge issue, qualified teachers. Gas points out the issues with the over demand for CS at UCSC, i believe it is even worse at the high school level. The article points out only 39% of California high schools offer CS. I have a feeling this is caused by two major reasons: lack of teachers and the difficulty of CS. In most high schools CS is an elective. HS students do not want to take difficult electives. CS is difficult. Hence the 3%. Courses with too few students disappear. Back to the 39%. HS CS courses also seem to focus strictly on programming. HS teachers qualified to teach a true CS curriculum are unicorns, they do not exist except in fairy tails.

    Reply
    • 15. Mark Guzdial  |  December 3, 2019 at 6:11 pm

      Miranda Parker just completed her dissertation on why high schools in Georgia do (or more often, don’t) offer CS. We’re not going to grow more teachers in CS until more people take it. One principal talking with Miranda explained the trade-offs of which teacher he would move to what in order to teach CS. He explained that his choice was CS or Choir — he could only offer one. There were students in Choir, and he didn’t know if he’d get many students to take CS. It was an easy choice.

      Reply
      • 16. gflint  |  December 4, 2019 at 9:44 am

        And there are so many career opportunities in choir.

        Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed


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

Join 7,099 other followers

Feeds

Recent Posts

Blog Stats

  • 1,709,353 hits
December 2019
M T W T F S S
« Nov    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

CS Teaching Tips


%d bloggers like this: