It is September once again (today is the 7316th day of September), and once again students are asking their homework problems on Stack Overflow and Programmers.SE.

We start seeing questions like:

A car dealer has 10 salespersons. Each salesperson keeps track of the number of cars sold each month and reports it to the management at the end of the month. The management keeps the data in a file and assigns a number, 1 to 10, to each salesperson....

Write the code to store the number of cars sold by each salesperson in the array cars, output the total numbers of cars sold at the end each month, and output the salesperson number selling the maximum number of cars. (Assume that data is in the file cars.dat, and that this file has been opened using the ifstream variable inFile.)

The first thing to understand is that Stack Overflow, and especially Programmers.SE are not code writing services. You don't just throw some a question in there with something of the form "give me the codez" into the text area and hope that someone will answer the question do your homework.

There are several things to consider as to why this is bad.

The typical class builds upon previous experiences. The compiler class has machine language and data structures as prerequisites because if you don't understand those, you will be hopelessly lost in the class and not even able to understand the lectures.

Lets assume you do understand the code (the person answering the question did a good job explaining it)... the curriculum is designed to take you from A to Z with 24 steps between. As industry programmers we often take short cuts and don't need say, steps ijkl to do something. Learning from us, you'll never get these steps. However you may find in your next assignment or class that understanding jk is assumed and critical to the understanding of some other concepts. Just because we don't need ijkl to do it doesn't mean it isn't understood.

An example of this is an anecdote of the machine programming class I took years ago which used SPIM - a MIPS simulator. One of the students when stuck with a program discovered a little used DECStation off on the side of the lab that had gcc on it. Instead of writing the assignment (factorial) by hand with the concepts we had access to (we were supposed to write a recursive function to learn about the stack and frame pointer), he wrote it in C, compiled it with gcc -S and got out a some MIPS assembly source that he then handed in. However, the compiler, recognizing an optimization converted the entire code from recursive subroutine into a for loop and used other things we wouldn't hear mentioned until a few weeks later. He got a '0' on that homework and had trouble with the next one (that assumed you already understood the frame pointer and stack pointer).

It cheats you of the education you are paying to get. Copy and paste takes no skill.

It cheats us of good interview candidates. It is often lamented the quality of college graduates by technical interviewers. You may be enthusiastic, but unless you can write code and explain concepts better than the other guy, we're going to hire the other guy.

Your first resource to look at should be your instructor. They are there for you and want to have you follow a specific path to get to the end point of understanding.


So, you've exhausted the resources. You've tried asking your instructor. You've searched google. You've gone over your lecture notes and even knocked on the TA's door during office hours. And you've come here...

The urgency of your question is not something we are concerned with. Good questions and answers are timeless - not something that needs to be done by 5pm today or 8am on Monday (you may find the rate of answers to drop substantially on the weekends and evenings of various timezones). Don't expect an answer in any given time frame.

As just mentioned, good questions are timeless. Answering your homework problem is likely not timeless and not a good question. Describe the problem you are having, what your understanding of the problem is and where you are confused. For a question from a student, the best questions are often the ones that are asking how to take a single step in understanding rather than trying to leap all the way to the solution.

Realize also that the answer we give may be completely wrong for the path that your instructor is trying to get you to follow. Having previously fought through the problem ourselves, we know understand when one can jump directly from il and when one needs to go through each step of ijkl in a process. Our answers may skip over steps that aren't needed for this particular problem, but may be critical for understanding the next assignment or some problem years down the road where skipping jk is the wrong answer. In many cases, it is important to follow the curriculum as best as you are able. Going above and beyond is good where one gains a deeper understanding of a problem domain, but one must have the foundation upon which to build.

We want you to do your homework to the best of your ability. Getting points off on an assignment and learning something from that produces a better interview candidate than one who can copy and paste code that got As in school but can't solve a simple problem they've never seen before.


If your question on Programmers.SE is just a copy paste of homework problem, expect it to be downvoted, closed, and deleted - potentially in quite short order.

share
16  
You seem to be very morally bothered by this. Many many people and many students parents tell said students that success in school and education is your only measure of success as a human being in this cruel world of cronyism for a few, and high competition for the masses. They learn from an early age that if you are even given one shot at a better life then it is better to cheat and manipulate your way to get there and then worry about learning later, because growing up in a society amidst abject poverty and hungry competition teaches you that the smartest and most learned (cont...) –  maple_shaft Sep 11 '13 at 18:03
9  
(cont) ... do not always get ahead, but the hungry, greedy and manipulative secure their spot. I think few are outright selfish sociopathic individuals, just desperate people who make bad choices based on the lessons that life has taught them. This is not an excuse to accept the behavior, but it is one to not be morally repulsed and judgmental about it. I pity these students, not hate them. –  maple_shaft Sep 11 '13 at 18:06
58  
@maple_shaft I certainly don't hate them. I want them to get the most for their money through education. By asking us for the answers they are missing out on what education has to offer (if you're just going to ask P.SE for the answer, don't go pay tuition). Skipping to the answers in the back of the book doesn't help you learn and makes everything you need to understand after that even harder. And then when I interview people with a degree in CS who can't even program and working minimum wage at a loading dock, thats time and money they've wasted. I'd rather them not waste that money. –  MichaelT Sep 11 '13 at 18:13
18  
A few words on our side. We are educating our next generation of co workers here and fellow hobbyists. Lots of people use Stack Exchange sites every day when learning to code, often it's among the first resources they see and the first truly useful one. Anyone passionate about building things would sympathize with this letter - it's painful to see people give up on being better so easily even if it's completely understandable (as maple_shaft said). Being a community network filled with people who like coding, we should aspire to give them a good education, if not for their sake for our own. –  Benjamin Gruenbaum Sep 11 '13 at 19:21
12  
Benjamin, yes they should use Stack Exchange. But the point is that they should post what exactly they are stuck on, not ask for copy-and-paste code. It's not about not using Stack Exchange, it's about copy and paste on its own not being a good education –  Michael Durrant Sep 11 '13 at 19:38
4  
@BenjaminGruenbaum When we are asked a basic question that is trying to understand how to take that next step in understanding, we can be an excelent resource. But when asking to skip to the end or take a short cut, we can help with that too (if its a reasonable question - on topic, not too broad) - but realize that by doing that way you may find that we've skipped or glossed over some necessary steps for some other concept that is to be used in the next assignment, making that one even harder. –  MichaelT Sep 11 '13 at 19:43
23  
Very well written. Both of the students who read it seemed pretty impressed. –  psr Sep 11 '13 at 23:36
4  
hey, I did the gcc -S trick too. But I still tried to understand it which led me to use -O0 (disable optimisation). That was 15 years ago, I've never seen another sparc since. Oth, knowing how to use gcc is still useful, more than understanding sun arch. I want my money back. –  imel96 Sep 12 '13 at 2:25
6  
Copy and paste takes no skill. - You'll be surprised :D –  CodeART Sep 18 '13 at 16:03
4  
@JeroenVannevel well, it was outdated on the day after I wrote it (on the 7317th day of September 1993...). Given the Endless September, one could say it is still September. –  MichaelT Oct 14 '13 at 19:08
2  
If SE was serious about lazy students, both SO and P.SE would have a dialog box showing frequently (in the manner of Wikipedia's donation requests) reminding users to read this letter or more directly to be critical towards homework questions. –  Piovezan Oct 23 '13 at 11:05
2  
I just wanted to leave a side note here: In some countries, education is actually free (including high-level education). I don't know what effect that has on the questions being asked though. –  Simon André Forsberg Nov 9 '13 at 18:07
3  
FWIW, asking the instructor is about the one thing the students are probably not doing. Poor students tend to see instructors as people who are there to mark them, not as people who are there to teach them. As such, they'll do anything to avoid showing up with the perfect answer even though they don't understand at all. If they'd been better students, they'd turn up at lectures and tutorials where they'd actually learn something and wouldn't need help here on specific homework problems. The ones who never turn up are almost always the ones who fail. –  Donal Fellows Jan 12 at 9:15
2  
Sometimes I'll welcome the poster to the site, explain most of the above, and suggest they do their own work. But, y'know - sometimes when in a particularly foul mood I'll do the little snot's piddly-arsed homework and let them turn it in precisely because they won't learn the concepts, (hopefully) won't pass the course, and in due time will end up as furniture salesmen or appliance installers instead of software developers that I might someday have to work with. Be careful what you ask for - you might get it. –  Bob Jarvis Jan 17 at 2:55
3  
@JayScott - Perhaps it's "just a rant", or perhaps it reflects the community's response to a relatively common and recurring problem. This post won't necessarily prevent poor homework questions from being asked, but it handles the explanation of why it was closed and possibly heavily down voted. And for the not-quite-poor homework questions, this provides guidance on how to turn it into a constructive question. –  GlenH7 Mar 18 at 15:50
show 10 more comments

5 Answers 5

I agree with this open letter. I guess it's more directed at the people potentially answering this kind of thoughtless questions, because the people asking them -- more often than not Help Vampires -- will never read meta, or the FAQ, or try to understand the issues involved. So I guess it could be rephrased to say: "potential answerers, don't encourage these questions with answers, but downvote and close them instead".

Wasn't the purpose of StackExchange, as stated by Jeff Atwood, to increase the signal-to-noise ratio of the internet? This kind of questions reduce the ratio, plain and simple.

Don't encourage Help Vampires. Educate them, if you can, but know it's an uphill battle.

share
1  
is there a homework.stackexchnage.com ? –  Amogh Talpallikar Sep 26 '13 at 6:13
7  
@AmoghTalpallikar No, and I doubt there will ever be one. What would be the point? If you look at the whole range of stackexchange sites, none caters to the "help me solve my problem even though I've never made an effort to understand it myself" crowd. –  Andres F. Sep 26 '13 at 12:48
1  
Just to be clear i don't want one for myself. I was just thinking its not that bad idea to come up with a forum for students. sometimes teachers aren't that good. They may not get ready made answers but knowledge can be gained from a online forums, i am sure a lot of people who like teaching would like to give answers that a beginner can understand. –  Amogh Talpallikar Sep 26 '13 at 15:07
1  
@AmoghTalpallikar With rules being strict and strong community checks in place on stackoverflow, so many useless questions which don't show any effort on the part of OP come daily, so if we make a official site for this , then god knows how many bad questions might come. Moreover, if the OP shows genuine effort on his part, then people on SO answer their questions. –  ps06756 Jan 22 at 17:48
1  
@AmoghTalpallikar SE is fine with helping students with problems find solutions to those problems. It's NOT a platform for handing them ready made term papers, which is what the majority of this kind of question comes down to. –  jwenting Feb 5 at 11:55
1  
@ps06756 seeing from other sites that are less dilligent at policing such rules, expect very quickly the vast majority of posts to be by homework kiddos, and any qualified people to answer them to disappear as they get sickened by it (or to try and stem the tide and eventually fail). –  jwenting Feb 5 at 11:57
    
@jwenting: true. I experience this on Quora. people post anything there. Even if thy will get the answer with a quick Google search, –  Amogh Talpallikar Feb 5 at 12:11
    
Why not create a homework stack exchange site? It could be a honeypot, and potentially increase the quality of the "real" sites. –  John Gaughan Mar 5 at 15:49
add comment

An Open Response

  • Does this belong on P.SE meta?
  • If so, should we expect and accept similar posts from other users?
  • Chances are, the students who paste homework don't read P.SE meta.
  • Your evidence in anecdotal. I could offer a story of how my education was saved by scooping the answer to a stubborn problem from the interwebs, which gave me time to focus on more important parts of a difficult class.
  • You assume that everyone shares your values. Things that are meaningful and valuable to you aren't necessarily meaningful and valuable to others.
  • Besides, pasted homework questions are adequately defined as out-of-bounds in the FAQ and many other meta posts.
  • The basic question you cite in a comment as a good homework question already received several downvotes, a close vote, and a warning from gnat. Even if a student wants to ask a good question, it's not easy. I've seen basic questions closed because they were too basic. More involved questions are often closed because the student (or any other learner) may not have enough experience to articulate their root problem.

I agree that the "car dealer has 10 salespersons..." is bad. It's too localized. Simple. I just don't see how your question/open letter helps prevent it.

share
3  
Yes, maybe - there are other discussions. Its been tagged as 'featured' which means it shows up on the community bulletin, and hopeful useful for a user to link to as a comment. It is indeed anecdotal, but its ment to be cautionary that we aren't here to educate we are here to solve problems, the two are not always aligned. I certainly welcome other views and values. While C&P homework is off topic (for people who don't read M.P.SE), it doesn't explain why its a bad idea for a student to use that resource as a student. Alas I saw another person post the same car salesman question. –  MichaelT Sep 12 '13 at 19:53
    
The static methods static data question, as I see, only has one downvote at the time of this comment - it will also likely remain open (follow the review). Asking questions on P.SE isn't easy (even for non-students). There is a difference between too broad and too basic. Basic questions are often broad. Another one (which took some refinement) is How do I easily print number triangles? Using for loops. –  MichaelT Sep 12 '13 at 19:58
3  
The key to a good student P.SE question is articulating where they are now and the direction of the next step they want to take. Questions that are one step at a time are rarely too broad. The difficulty comes when they want to jump to the end - and they may find future topics more difficult because of that jumping to the end. –  MichaelT Sep 12 '13 at 20:00
    
@MichaelT - I took a look at the OP's reputation. That's where I noticed the other downvotes. I already reviewed and voted to leave it open. I didn't mean to focus too much on this one question. I was just pointing out that, as you noted, the P.SE rules can be tricky. –  Corbin March Sep 12 '13 at 20:08
2  
(back to your first point), do consider that FAQ posts are on Meta sites. The alternative is a blog posting (or both) - and I certainly wouldn't be disappointed if this was migrated in that direction, though it has a different level of interaction. MSO also has a fairly strong tradition of 'address the user base and see how people like it.' The Stack Overflow question checklist even made it into a close reason. –  MichaelT Sep 12 '13 at 20:11
1  
Ahh, you may have missed the '+2 undownvote' and interpreted the '-5 unupvote' as a downvote. –  MichaelT Sep 12 '13 at 20:13
    
Open comment to your open answer to that open letter (bullet by bullet): * Yes * Yes, and yes we already do * Doesn't matter (guess why?) * Who cares * This is a trick and it works * I prefer this way * Who cares –  gnat Sep 12 '13 at 21:53
2  
was your education actually saved by scooping the answer to a stuborn problem from the interwebs? –  psr Sep 12 '13 at 21:55
8  
I think you're missing the point of this post. It's not meant to be preventative, it's meant to simply be a letter to share some thoughts that may hopefully inform students of a common opinion of this site's community and how they might work with it more effectively. I don't suspect any students will read this before they are instructed to, but now that it's here they may be instructed to read it. Posting it on Meta is a valuable way of ensuring this site's community can publicize feedback so it's apparent that it is not simply the beliefs of one person, if it were that too would be obvious. –  Jimmy Hoffa Sep 12 '13 at 22:18
add comment

SO and this community has gained a reputation that many of users do dream of following the trend. We see Jon Skeet and many many other.

I completely agree that asking for solutions against homework is not good. But if the user tried something, did researched on the topic and is stuck with it, that makes the question valid.

Asking good question and getting recognition is different topic. The point here is start to this community. I am so much obliged that this community has extended help to all those who seek the help!

Students face different situations as we do in work culture. I just hope we can make a difference by enlightenment to technology areas. I sincerely hope only start is the difficult part, once you get started the next steps follows easily.

share
1  
The point I was trying to make is that even with a good question, P.SE isn't necessarily the best place to ask questions for academic approaches - we should be the last resource rather than the first for homework problems. Our answers may be completely contrary to what the instructor is trying to teach, or go off in the wrong direction. One example of this, I recently helped a student with an assignment. When complete, it was very well done using techniques both he and the professor were unaware of... –  MichaelT Jan 28 at 15:47
1  
... however, it also went in a direction that the assignment wasn't supposed to take. The core thing that the professor was trying to teach was completely gone because of the design approach that I suggested. And I can't know what the goal of the assignment was because I am neither the student nor the instructor. While the question was valid, the answer correct, it was wrong for the homework and the student likely got a worse grade by asking here than if help was sought from the professor first. This is the warning I'm trying to give to students who are asking questions here. –  MichaelT Jan 28 at 15:51
    
I completely agree with you, doing assignment is not correct. Help , guidance and direction to all is what i expect. I think its dependent on the OP how well he uses this site. –  Aditya Jan 29 at 6:55
add comment

Homework and projects can count for a large part of a grade, but there should be some sort of exam (maybe that is proctored) that has enough complexity to it and a time limit that makes SO not practical. A large code quality discrepancy between the tests and other tasks should be a red flag for cheating.

All questions should indicate some effort by the OP and not just ask for all the coding to be done for them whether it's homework or not.

If the "copy and pasters" can't get a job, they'll just have to spend more time actually learning to program and/or pay for additional training. Good programmers are hard to find, but if you can't spot a bad one, get someone else to do your hiring.

Imagine a company (not a software company but someone developing an internal app) that hires one beginner programmer, but puts the app on Github as an open source project or several posts on SO to get free coding. This wouldn't be good for the profession either.

share
4  
Its not so much the 'get code from SO or get algorithms from P.SE' thats the issue that is the trouble - both of these spell problems well before an exam that students may not be aware of. We may gloss over some concept that the student will find is key for the next assignment. In that respect, going to the instructor first for homework is always best. Single steps, are much less likely to be problematic questions and have fewer concepts that can be glossed over. I believe this is key to getting good questions for us, and a better experience for students on SE. –  MichaelT Sep 13 '13 at 20:19
1  
@MichaelT - Be careful what you ask for. Students will expect you to respond 24/7. –  JeffO Sep 19 '13 at 18:31
add comment

I agree that cheating is the worst thing a student can do; Not because it is dirty or manipulative, but because it causes significant harm to the student and the student along.

However, even some the most intelligent people in the worlds history (Einstein and Edison for example) have/had problems understanding even simple problems if they were not described in a language that they related to. To the point that many are/were considered "dumb" or "delayed".

It's the same system that leaves countless thousands of young people struggling to divide crates of apples and bananas in math class just to excel in calculating fuel:air ratios for fuel injection systems in shop class. Present the problem in a way that engages the student and they quickly understand things that they often felt was beyond them.

What I'm getting at is the greater question of why the student feels they need help with a problem. Assuming that they should only need help applying the concepts within the solution assumes that they should be able to fully understand the problem, which history has proven is a dangerous generalization during somebodies education.

I'm not saying that the basic point of your letter is wrong or unneeded, however your letter does seem a bit presumptuous and possibly negative towards people who need help.

share
1  
The point that I'm trying to get across is that by asking questions of P.SE, the answers that one gets may be wrong for the class, skip over important things the instructor is trying to teach, or be otherwise counterproductive to learning the material (that the student is graded on). In trying to provide the best answer for a professional programmer we are often providing the worst answer for an academic. Without all the additional background of what is in the class and what isn't, we can't give an answer with the right constraints... which are arbitrary and not real world problems. –  MichaelT Jan 28 at 21:39
add comment

You must log in to answer this question.

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