What Ever Happened to Thinking Logically?

Perhaps I only see this because I have attended a two-year college, but it seems to me that students entering the programming field are not really being taught to think logically, but rather to regurgitate code that someone else has already worked out. Instead of focusing on teaching these students to develop good analytical skills, and teaching them good planning techniques, we instead shuffle them through boring, pointless, unchallenging exercises that don't really teach them anything they can use in the "real world."

One of my biggest pet peeves is hearing a student say, "I know blah blah blah and blah blah blah, and blah blah blah...," of course inserting the current fads in programming languages. Big whoop, I say. Can you actually explain your code? Do you understand the flow of data in your application, or does it "just work?"

I would rather help students build UML diagrams and pseudo-code than scan through what is often times poorly executed code to find some weird bug. I mean, learning a language's syntax is important, but having a good, well-thought-out logic to follow makes writing code much, much easier. Write the logic, then research what code is necessary to implement that logic in your language of choice...

The best analogy I have heard for this so far is this: if all you know how to use is a hammer, every problem looks like a nail. That means you are adapting your problem to fit your solution. (This is bad!) Now, if we teach you to think analytically, we give you all the tools you need to develop an original solution to your problem! (This is good!)

So, am I just way out in left field on this? Do you agree? Disagree? Post your thoughts below...