43

I'm a professor of Computer Science at an American university. I teach a variety of courses, ranging from Intro to C++ to Advanced TCP/IP Programming.

For the upcoming semester, I was considering making it a semester-long assignment to either answer a certain number of questions or earn a certain reputation, in a particular tag on a specific Stack Exchange site.

For example, my introductory C++ students would need to obtain perhaps 500 reputation by answering questions in the C or C++ tags on Stack Overflow.

Do you think this is a good or bad idea? Why?

17
  • 36
    I've heard of homework questions before, but homework answers is new
    – Antony
    Dec 14, 2011 at 0:46
  • 31
    Bonus points if your students somehow manage to get banned or suspended from the site.
    – user102937
    Dec 14, 2011 at 0:51
  • 6
    Wow! Real-life tag badges!
    – jscs
    Dec 14, 2011 at 2:55
  • 7
    Wait, why does your profile say you work at a bank? Is this hypothetical? +1 for discussion anyway Dec 14, 2011 at 3:05
  • +1 nice idea... And these answers are very good. As an actual (but very atypical) college student, I have no advice here.
    – SLaks
    Dec 14, 2011 at 3:13
  • 4
    Not a good ideal for "introduction to C++" as the answers will be of low quality, but could be very interesting for "Advanced TCP/IP Programming" - however how will you stop the student from cheaping by buying votes? Dec 14, 2011 at 11:03
  • @KublaiKhan Because I forgot to update it; I only updated Stack Overflow and didn't "Copy to Network." Dec 14, 2011 at 12:26
  • @bytenik It also says you are 25. You must be the youngest professor I have met so far. =) +1 for good idea though.
    – TLP
    Dec 14, 2011 at 12:31
  • @TLP Thanks! Teaching at such a young age is sometimes challenging because in the advanced grad courses, some of the students are easily double my age. Dec 14, 2011 at 12:36
  • Are you all happy? :-P I updated my profile and even added links. Dec 14, 2011 at 12:39
  • 2
    My suggestion would be for the students to bring good C or C++ questions to class. Then the class could work on answering the question. Experiencing the research that goes into answering a good question is worth learning. Dec 15, 2011 at 13:24
  • @GilbertLeBlanc: In reality, "the class" will be 5 out of 20 students that are engaged in such a collaborative project. The rest will see that those 5 are engaged and think they can refuse to participate. Dec 15, 2011 at 13:34
  • @David Pfeffer: Then the 15 will miss out on the experience. The 5 will have some idea how to get themselves unstuck when they get stuck on some unknown (to them) point about C or C++. Dec 15, 2011 at 14:03
  • 3
    It has been done before, I've seen a (now surely deleted) question some time ago. It went along the lines "My teacher gave us assignment to get X reputation on SO. I need reputation how do I get rep fast?". If you do this please make sure they respect the site and don't try to game the system just to pass the assignment.
    – kapex
    Dec 21, 2011 at 4:10
  • 4
    @TomalakGeret'kal No, obviously I hacked into the professor bio page that I link to in my profile and created it. I also hacked into the college's database of courses, created two courses listed with my name on it, and then just didn't show up when the 30 students came to class. Your post is incredibly rude and without any merit. Dec 21, 2011 at 13:27

7 Answers 7

73

Do you think this is a good or bad idea? Why?

I think it's a... "meh" idea. Let's face it: even if you're running The World's Best Intro to C++ Course here, most of your students probably won't be bringing much to the table - it's all new to them! Granted, trying to answer a question you don't immediately know the answer to can be a great way to motivate yourself to do some research, but that isn't necessarily reflected in their reputation score; by making that a goal (and putting their grade on the line), you might just end up killing any intrinsic motivation they might have for the task.

But I like the way you're thinking... Lemme run another idea by you:

Make asking questions the assignment

Every so often, we'll get an email from a professor somewhere who found out one of his students used one of our sites to cheat on a test or take-home assignment. And chances are, when I check into it, the questions turn out to be pretty lousy; heck, it's not at all surprising to see someone just type the question or assignment in verbatim, followed by some variation on "I'm stuck. Halp?"

So chances are, your students really suck at asking questions. It's bad for us, because we get lousy questions. It's bad for you, because if your students don't know how to ask us then they probably don't know how to ask you either, and there's less of you to go around. And most of all, it's bad for them - at least, the ones that will eventually graduate and find themselves facing much more difficult questions in their pursuit of careers or graduate degrees. Knowing how to find answers by breaking down a problem and then either asking, or searching is an extremely valuable skill.

It sure would be great if they had some help prior to that point...

What if, upon handing out a take-home assignment, you told them:

If you get stuck, or are unclear on something, feel free to use Stack Overflow to research it - either by asking a question, or by searching for an existing one. Show your work: if you make use of a question, make note of the ID#. You'll get extra credit for every good, relevant question reference you turn in.

...or something along those lines. I don't know what your assignments or teaching style are like, but IMHO this would be a far more productive avenue for all concerned.

And hey, if you managed to get them to willingly submit their SO account IDs this way, you'd also be well-equipped to chide those lazy bums pasting their assignments in verbatim. Not that any of your students would do this of course. Just sayin'... ;-)

6
  • 19
    +1, learning how to communicate with others is an invaluable skill, regardless of whether or not you end up a programmer.
    – jwiscarson
    Dec 14, 2011 at 2:25
  • 1
    And they get extra points if their questions get any upvotes!
    – Benjol
    Dec 14, 2011 at 9:50
  • 1
    I still think the OP's experiment is worth trying out if the students aren't complete novices and there is a great amount of motivation and dedication among them, but this is definitely the canonical answer - having SO rep as an optional achievement is going to work much better in so many scenarios
    – Pekka
    Dec 14, 2011 at 10:41
  • 7
    I think this is really the answer. I might still go on reputation, but I'll base it on questions as well as answers. I might even insist that I won't answer programming questions via email -- only via StackOverflow and only if they're not duplicates. Dec 14, 2011 at 12:25
  • 2
    @DavidPfeffer: I wouldn't be too hard-line about the latter. With students, there's room for "basic comprehension" questions specific to the course, which would be inappropriate on SO as too localized.
    – McCannot
    Dec 14, 2011 at 17:08
  • 6
    Office hours? Psh! Try stackoverflow. I'm already on there every minute I'm not trying to cram skill into you louts anyway.
    – Pollyanna
    Dec 21, 2011 at 1:09
14

Do you think this is a good or bad idea? Why?

It's definitely an interesting idea and my initial gut feeling is that although rep points are ultimately really, really meaningless and tell little about actual expertise, there's nothing really wrong with doing things this way. Earning 500 points in those tags will be at least some indicator of a fundamental understanding in them.

You just want to evaluate every student's actual contributions as well - to prevent instances where people really just answer the dumbest trivial questions and eventually gain the required amount that way ("rep whoring"). Watch out for track records that have a lot of downvotes, and inspect those more closely.

There is always the risk of actual malicious circumvention attempts like sock-puppetry - but that's why you look at the actual contributions, too, and threaten consequences if cheating is detected, right? Plus, the SO system is there to fight malicious stuff anyway. If one of your students gets suspended or loses their account altogether, you know what's up. Make sure you write down their user IDs before the whole thing starts so they can't just create new accounts when the old one gets burned.

In general, I find this an interesting idea and as long as your students aren't complete imbeciles, I don't see how unleashing them on the site could do harm to either side.

2
  • 1
    as long as your students aren't... Hopefully the bar is set a little higher than that.
    – user102937
    Dec 14, 2011 at 0:49
  • 5
    +1 for not looking just at gained rep. Answering old unanswered questions (which are usually more difficult than others since they are old and unanswered) usually earns you 15 to 25 rep. Poiting out a silly mistake in a brandnew question can easily earn you 100 rep. 200 if you post about it on Meta...
    – Dennis
    Dec 14, 2011 at 1:30
10

On the surface, it looks like a good idea. It certainly is an interesting one. The problem with school assignments is, let's face it, nobody likes them:

enter image description here

I wouldn't do it because of how easy it is to cheat, and how users would be motivated to do so for a grade. I can already see it: some students will create sockpuppets to gain the necessary reputation, which will decrease the overall quality of Stack Overflow (and give mods more problems to handle).

Also, considering the highly variable difficulty of questions on SO, a certain number of answers is not a good way to gauge effort. A hard question might require as much effort as 10 easy ones. Also, reputation can be a tricky thing: answers to trivial questions tend to generate more reputation than answers to hard questions. See: The bikeshed problem and Stack Exchange

8
  • I don't see a problem there: Students can be told that any evidence of cheating will lose them their grade. The teacher will know every user's account, and can monitor the contributions. This group of students is much easier to keep honest than the millions of anonymous people who visit SO every day
    – Pekka
    Dec 14, 2011 at 0:30
  • 3
    But the picture is great, I have to store that somewhere :)
    – Pekka
    Dec 14, 2011 at 0:30
  • 5
    @TheP.G.RepMiningCo. It's hard enough for us mods to determine if someone is cheating (unless it's really blatant); how is the professor going to do that? Dec 14, 2011 at 0:43
  • 1
    he isn't, you're right - but would you dare cheat if an actual real-world grade depended on it? Not knowing what mechanisms the site may or may not employ to detect cheating (including detection of cross-voting patterns)? Remember, these aren't professional programmers. It's not perfect protection, but I stand by my argument that this group of people is less likely to do malicious things than everybody else coming here
    – Pekka
    Dec 14, 2011 at 0:54
  • 2
    I've had students cheat, be failed on an assignment, and then cheat again by copying off of the same web site as the first time (and fail the class). Never underestimate what students will do. Dec 14, 2011 at 1:19
  • 1
    On the flip side, the algorithm tends to be very harsh -- I once lost something like 100 reputation because the site decided I was sockpuppeting, just because I tend to link my best answers to my best programming buddy (who always ended up upvoting because he too thought they were good). Dec 14, 2011 at 1:21
  • 1
    @bytenik That isn't harsh; if your buddy's account exists for the sole purpose of upvoting your answers (or it looks that way), there's no way for us (or the system) to distinguish it from a sockpuppet. Dec 14, 2011 at 1:25
  • 1
    @NullUserExceptionอ_อ Sure there is; he writes lots of his own questions and answers. He just happens to also read and upvote a lot of my answers. Dec 14, 2011 at 12:21
8

Do you think this is a good or bad idea? Why?

One way to make some students hate something is to make it an assignment.

Putting that aside for a moment, I noticed that you want to do this for your introductory C++ students on the and tags. I'm not sure exactly what questions you expect novices in said language to actually answer.

8
  • 1
    One of the best ways to learn something is to answer questions about it. It requires adequate research into the topics posed in questions in order to be able to answer. Dec 14, 2011 at 0:52
  • 1
    Well, this is a potential fair argument against - but if getting upvoted is a school "requirement", care and research when answering can be expected.
    – Pekka
    Dec 14, 2011 at 0:52
  • 1
    @bytenik This would just encourage people to answer the easiest questions they can find. Where's the value in that? Dec 14, 2011 at 0:56
  • Perhaps they will answer the easiest questions, but there's only a limited number of those. I can't imagine earning 500 rep over a 4 month period unless you are either continuously looking for easy questions (with considerable time commitment) or answering somewhat more difficult questions. Dec 14, 2011 at 0:59
  • 3
    @bytenik As I mentioned in my answer, easy questions tend to attract more upvotes than hard ones. For example, I got 215 points for this trivial answer here. I don't think rep gained is a good indicator of effort. Dec 14, 2011 at 1:18
  • 1
    @NullUserEx: But you have to be fast for that game. If you don't know the answer but have to think about it for a minute you won't get nearly as much rep. You answered that question 90 seconds after it was asked while the guy that took 2 minutes more only got upvoted 3 times. The other answer with a lot of upvotes that came later is much more expansive and less "trivial".
    – sth
    Dec 14, 2011 at 2:50
  • 1
    @sth, isn't that all the more reason to not base your success criteria on reputation? If students are just refreshing SO or perusing for low-hanging fruit, what are they learning?
    – jwiscarson
    Dec 14, 2011 at 3:17
  • @DavidPfeffer: Perhaps they will answer the easiest questions, but there's only a limited number of those. No, there's a never-ending supply of terrible cr@p on SO; your students will just contribute their cr@p to that, and learn nothing. Dec 21, 2011 at 0:10
5

I don't teach an actual programming class, but I've been forced to teach a lot of other people how to program, and I always reference Stack Overflow. I remember finding this site and learning an incredible amount of information just by reading questions and even attempting to answer a few of them.

That said, here are my thoughts:

  1. Don't measure reputation points. The community doesn't always upvote equitably, and a poorly-written question (that isn't atrocious) with a great answer can go unnoticed.
  2. As Pekka said, measure participation and really look for quality in posts (detail-oriented, perhaps addressing issues not necessarily mentioned in the original post, but still problematic points nonetheless). This would be difficult to accomplish with beginner students, but possible depending on the course outline you have to follow.
  3. Perhaps consider participation by having students list some of their favorite questions and what details they've learned from those questions.

I think you have a difficult choice to make. Even when I'm not actively looking to answer a question, I read Stack Overflow purely as an intellectual exercise. Your students, however, probably will not (outside of those students who are already truly engaged in programming).

Perhaps it would be more worthwhile if your course were set up in such a way that students had semester-long projects and used Stack Overflow as a resource? I constantly advocate using the site to my programmer friends and co-workers, but very few of them truly "get" it.

2

I would not consider this as such a good idea. While the points here are a big motivation for many people, they do it by their own will, mostly on their own time. Such an assignment seems to me like a chance to fill this (great) site with many answers that have only one goal — to get a better grade; this may add a lot of noise to the site.

On the other hand, it may make people to look for answers and increase their knowledge in variety of subjects.

1

Why is it a good idea?

  • Students get to help others

  • They can show off their expertise and knowledge

  • Competition! They could have little challenges among each other, such as hitting a rep cap, or getting X number of answers with Y number of upvotes.

  • Promoting Stack Overflow! (And other sites)

  • Being able to answer each others own questions and present that to the world.

  • Rather than making up projects for them, they get to make tons of code and you can grade that.

Why is this a bad idea?

  • Students might just spam crappy answers to hit that rep goal.

  • If they get banned, there might be a problem completing the assignment.

  • You'll need to check over their posts constantly to make sure they aren't abusing anything or trying to cheat their way to the top of the class.

  • If they don't know C++ already, the class will suck a lot.

1
  • 3
    Re: bad answers, he can only count answers with positive score (and rely on SO's existing anti-sockpuppeting)
    – SLaks
    Dec 14, 2011 at 3:09

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .