How to deal with the wealth of "help" available for programming assignments? I teach programming, and I myself learned mostly self-taught about 30-35 years ago (pre-internet). I learned mostly by thinking things through and trying out alternate solutions. It never occurred to me that students could, or would, just "grep" the solution to many textbook assignments off the 'net. It sometimes seems that they do not make much effort to solve the problem themselves.

Sometimes I see two students's solutions with the same weird anomalies in them and it makes me go, "Hmmm..." It seems that the students who do NOT come up with the obvious best solutions are the ones actually thinking for themselves and not doing "research". In one case I searched on a strange method name and found one and only one hit on the web: a PDF that exactly duplicated the student's submission, including a lot of concepts and methods I have not taught yet.

Is this a problem generally?
How do Instructors deal with the fact that there could be many possible solutions available (most of them flawed) to students who know how to type some words in their browser?  

(I have seen this question, and I do not agree and my question is more about how to handle the situation.) The assignments at this point are simple decisions and loops, nothing that requires knowledge of frameworks, etc. Most people should require nothing more than the textbook and my lectures.

Addition: I think the real problem is - now that my naivete is shattered, I have two doubts: 


Could anything they hand in potentially have been copied? 
Am I teaching effectively?
Most people should require nothing more than the textbook and my lectures.


Probably most professional programmers today could do their jobs armed with nothing but the lectures from their programming coursework and the complete official reference material for the programming languages and libraries they are using. But why would they, when there are much more useful resources available online that allow them to do a better job, more quickly?

Your students (understandably) approach this the same way. Why would they do their homework with just the textbook and lecture notes, when this isn't the most efficient way (with respect to time, getting a good grade, and actually learning)? (Yes, the Internet can be a tremendously useful aid for learning and not just copying.)

In my experience, the best way to deal with students using online resources is:


Encourage students to use online resources. Recommend specific online resources to them that you consider most helpful and reliable.
Require students to cite all the online resources that they used. (And depending on the assignment, to also explain how they used it.)
Educate students who use online resources that are flawed about how to better evaluate the online resources they choose to use. ("This website seems useful at first glance, but it actually doesn't apply to the problem in the homework assignment. Here is how you could have known that...") If you do this successfully, this will probably be the most valuable thing they learn in your class.
Assign a mix of problems, including some that can't be answered immediately with a simple Google search.


If you want them to have some practice solving programming problems without the assistance of the Internet, you can occasionally give them a small (&lt; 10 minute) problem to complete in class.