I know I've said this before, but it still bugs me that so many students take the "hack-and-fix" approach to writing code.
I suppose part of the problem is that this college doesn't seem to worry too much about teaching proper design methodology. The main focus seems to be on teaching students to parrot what they've be told, and to let someone else down the line really teach them what the code they've been echoing is actually doing.
I think I could even deal with these waves of cookie-cutter code monkeys if they actually had a grasp of the most basic elements of programming, but many of them lack even that knowledge.
What do I mean by that? Well, I expect anyone who has completed CIS-116, our Introduction to Programming course, to know what I am referring to when I ask them to create a variable for me during a tutoring session. Many of them can't because they have NO idea what a variable is. Variables are an essential element of programming! If they don't know what a variable is, they usually don't have a clue what a function or subroutine is. I see this as a problem, since these two elements are the foundation of almost every program they will write in every other class we offer.
What gets me the most is that I KNOW these ideas are taught in every CIS-116 course. So HOW exactly are these students passing that course if they lack understanding of one of the fundamental aspects of the course?!
My answer? Someone is giving them far too much "help" in completing their assignments. And by help I mean "doing their work for them" or simply giving them the code they need to complete their assignments.
While that may get those students through the class, it hurts them in the long run, since they aren't really learning anything. I'm not against showing someone some code and walking them through how it was built, but I will not just "give them the answer..."
So, if you have a student who only partially comprehends what they are doing, and they haven't been taught how to develop their code logic correctly, what you wind up with is a student writing 400 lines of code to do what could have been done in 75 lines.
In other words, they're doing it wrong...