A Question that Everyone should Ask their CS Professors: Why do we have to learn this?

September 14, 2012 at 1:11 pm 12 comments

There’s a meme going around my College these days, about the 10 questions you should never ask your professor (linked below).  Most of them are spot-on (e.g., “Did we do anything important while I was out?”).  I disagreed with the one I quote below.

One of our problems in computer science is that we teach things for reasons that even we don’t know.  Why do we teach how hash tables are constructed?  Does everybody need to know that?  I actually like the idea of teaching everybody about hash functions, but it’s a valid question, and one that we rarely answer to ourselves and definitely need to answer to our students.

Why we’re teaching what we’re teaching is a critical question to answer for broadening participation, because we have to explain to under-represented minorities why it’s worth sticking with CS. Even more important for me is explaining this to non-majors, and in turn, to our colleagues in other departments.  Computing is a fundamental 21st Century literacy, and we have to explain why it’s important for everyone to learn.  “Stuck in the Shallow End” suggests that making ubiquitously available can help to broaden participation, but we can only get it ubiquitously available by showing that it’s worth it.

I’m back from New Zealand and ICER: today, yesterday, tomorrow — days get confused crossing a dateline.  (We landed in both Sydney and Los Angeles at 10:30 am on 13 September.)  I spent several hours of the trip reading Mike Hewner’s complete dissertation draft.  Mike has been asking the question, “How do CS majors define the field of computer science, and how do their misconceptions lead to unproductive educational decisions?”  He did a Grounded Theory analysis with 37 interviews (and when I tell this to people who have done Grounded Theory, their jaws drop — 37 interviews is a gargantuan number of interviews for Grounded Theory) at three different institutions.  One of his findings is that even CS majors really have no idea what’s going on in a class before they get there.  The students’ ability to predict the content of future courses, even courses that they’d have to take, was appallingly bad.  Even our own majors don’t know why they’re taking what they’re taking, or what will be in the class when they go to take it.

We will have to tell them.

Why do we have to learn this?” In some instances, this is a valid question. If you are studying medical assisting, asking why you have to learn a procedure can be a gateway to a better question about when such a procedure would be necessary. But it should be asked that way–as a specific question, not a general one. In other situations, like my history classes, the answer is more complicated and has to do with the composition of a basic liberal arts body of knowledge. But sometimes, a student asks this because they do not think they should have to take a class and want a specific rationale. In that case, I respond, “Please consult your course catalog and program description. If you don’t already know the answer to that question, you should talk to your advisor about whether or not this is the major for you.”

via 10 Questions You Should Never Ask Your Professor! – Online Colleges.

Entry filed under: Uncategorized. Tags: , , , , .

Does Google get that teachers innovate? Survey on Scaling K-12 Computer Science Education: Please Complete!

12 Comments Add your own

  • 1. alanone1  |  September 14, 2012 at 1:22 pm

    Hi Mark

    What is the support for assuming that the CS professor can give a decent and/or correct answer?

    (I.e. I think that an enormous percentage of the CS courses given in universities are at best misleading about computing.)



    • 2. Mark Guzdial  |  September 14, 2012 at 1:24 pm

      Maybe their should be a return policy on doctorates and tenure if you can’t? 🙂

      • 3. alanone1  |  September 14, 2012 at 1:26 pm

        If only it were so easy to garbage collect our field!

      • 4. nickfalkner  |  September 15, 2012 at 10:31 pm

        I mooted a rank retention scheme at one point – rather than a promotion-focussed approach, you also have to demonstrate that you still have the knowledge and ability for which you were employed. (Not overly seriously, I must confess.)

        I prefer your jocular scheme more!

  • 5. Barry Brown  |  September 14, 2012 at 3:26 pm

    Referring the student to the catalog or program syllabus is a cop-out. Since many program requirements were written years or decades ago, the answer might as well be “I don’t know; we’ve always done it that way, so you just have to learn it.”

    We ought to be able to give a rationale for learning a specific topic, but on the other hand we need to avoid the trap of stripping down a curriculum to only the bare essentials. While most CS students could get away with never taking an advanced data structures course, there’s plenty of evidence that people who do know data structures make better programmers.

    When my students ask me why we need to learn this or that, I first try to connect them to near-term goals. But if I think the topic is more geared toward helping round out their education, I tell them:

    “If we could predict exactly what job you’ll have five, ten, or twenty years from now, we could absolutely design a curriculum honed to teach you precisely what you need to know for that job. No more, no less. We are fortunate, however, to live in a society where you can choose what career you’ll have and have the possibility of changing your mind later. Without that crystal ball, the best we can do is offer a broad range of topics and hope that some of them will be applicable to your career(s). The ideal time to learn these skills are between the ages of (roughly) 17-25, while your brain is most adaptable and able to form new pathways.”

  • 6. Deepak Kumar  |  September 15, 2012 at 7:37 am

    Exactly! Most CS faculty will never venture to answer these questions. Thinking about these is how you start to ‘rethink’ the curriculum and its relevance.

    Most CS (and other disciplines) faculty are happy to teach what they learned when they were students in exactly the same way they learned it. Why? It worked for them. Thereby propagating the misconceptions.

  • 7. Rob St. Amant  |  September 15, 2012 at 11:39 am

    I’ve had to think about this question, being involved in my department’s accreditation effort. This semester we’re assessing a course that covers computer organization and assembly language programming, for example, and among the questions we’re asking is how the material contributes to students’ understanding of things like pointers in a higher-level programming language. Working through the relationships between learning outcomes across courses has been worthwhile, for me.

    In my HCI courses (which include dashes of accessibility and intelligent user interfaces), I have an easier job explaining why students should find the specifics worthwhile. I can say, “You know all the ways that your computer annoys you? A lot of those problems could be fixed.”

  • 8. nickfalkner  |  September 15, 2012 at 10:34 pm

    A rationale is essential and resorting to the course catalogue is unlikely to provide a solid response to a genuine enquiry. Of course, this question is also asked by students who are attempting to justify work minimisation: an ‘invalid’ course being one where they can under perform or even fail because it is not necessary.

    I sometimes find it hard to gauge whether a student is making a genuine enquiry or is approaching it from the other angle.

  • 9. Bijan Parsia  |  September 16, 2012 at 4:06 am

    One of our problems in computer science is that we teach things for reasons that even we don’t know.

    Isn’t this true for most disciplines? Is it necessarily a problem? Or a distinctive problem?

    So, there’s two levels to the question, right? Why do we teach this topic and why do we teach this thing given the topic. In a course on algorithms and data structures, hash functions are fairly basic and critical for understanding loads of other things. There are also simple enough ones that students can grasp them more or less completely. In a cryptography class, they are even more essential, but much more complicated.

    Given the ubiquity of hash tables in programs and programming languages, it seems quite central to have a reasonable grasp of them. For example, in all sorts of programs I’ve written or examined, it was important to understand how hash tables degrade in performance (e.g., when the table is nearly full and whether you are hanging stuff off each bucket or growing the underlying store).

    And some things are just beautiful and insight giving. I bug all my students about the Chomsky hierarchy. I want that to be part of our common language both because it was a huge triumph, but also because its coherent and covering in really an amazing way.

    But we teach a lot of things for interest, some things because that’s what we’ve always done, some things to attract students or meet perceived employment needs, some things for factual background, and some things because we think they strengthen key skills.

    Of course, I’m totally not against getting a more systematically validated curriculum, but again, this seems a pretty ubiquitous problem.

  • 10. Bijan Parsia  |  September 16, 2012 at 4:15 am

    One of his findings is that even CS majors really have no idea what’s going on in a class before they get there. The students’ ability to predict the content of future courses, even courses that they’d have to take, was appallingly bad. Even our own majors don’t know why they’re taking what they’re taking, or what will be in the class when they go to take it.

    Again, I’m unclear whether this is distinctive or problematic. For example, people taking intro philosophy courses often have fundamental misconceptions of what they’ll be doing. (Indeed, the standard tip for an intro phil course is to spend some time talking about why philosophy is not “mere opinion” and thus unevaluable.)

    When we have visit days and interview students who almost certainly have taken a lot of IT, we are told to spend some time making clear the distinction between CS and IT.

    What fields don’t have people coming in with huge misconceptions?

    • 11. Mark Guzdial  |  September 16, 2012 at 10:34 am

      Mike points out a couple ways that computer science has this problem differently than other subjects. First, because of a lack of computer science in schools, there is a sizable percentage of students (at GT, 25-45% given in the year) who have never taken a CS course before they come to College, even if they’ve declared it a major. Students who have taken mathematics, biology, physics, English, and History (for examples) do have a reason to expect more of the same when they get to College. We do have studies interviewing students who think that their CS classes will be about playing video games and using applications.

      In later classes, Mike points to Nespor’s studies of students who decide that their classes aren’t teaching them what they think they ought. In Physics, Nespor documents study groups that go off in their own directions to figure things out from later classes — Nespor cites the notational strengths of Physics of support that kind of distributed collaborative learning. Nespor also documents Management classes where the students decide that the teacher doesn’t know enough about Management, and they create their own lessons aimed at getting them all jobs.

      I’m sure that you’re right, Bijan, that all fields have this problem to some extent. Even if the problem is ubiquitous, the variance may be greater in some fields than others. Mike interviewed 3rd year CS majors who told him that graphics was the study of how to use Photoshop well. Those students won’t ever take graphics because they think that it’s lightweight, application-oriented content. Are Philosophy students, in contrast, that far off in predicting the content of their 3rd year courses?

      • 12. Bijan Parsia  |  September 16, 2012 at 11:30 am

        Ok, there’s a bunch of different things going on here. I agree that pre-university expectations are typically less well structured by pre-university school for CS (but also for e.g., Philosophy; but perhaps fewer people go into Philosophy without some self study). (I’d be interested in the effect of UK IT programs on that…there they are getting the “wrong” expectations explicitly.)

        On the other hand, for example, in my math classes we explicitly had the math class that was to transition us from algorithmic problem solving to proving stuff and it was a traumatic class for many.

        It is the case that not being taught what you expect and not having your expectations reset is likely pretty bad. Though, if my students went off and learned good stuff on their own I’d be jumping up and down with joy 🙂

        That the ignorance persists into the 3rd year seems shocking too me. I doubt strongly that a philosophy student would be that far off…though, I remember imbibing a lot of contempt for various subfields that I later had to work off (ancients, ethics). I’m not sure how different that is than the graphics stuff.


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 )

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 10,185 other subscribers


Recent Posts

Blog Stats

  • 2,060,306 hits
September 2012

CS Teaching Tips

%d bloggers like this: