The "hour of code" campaign is on this week and million of students are flocked to learn how to program.
It is a good thing.
Learning how to program is like learning how to use a calculator. Calculator is a tool. Without the math knowledge, a calculator is a piece of plastic. Programming language is a way to express the solution to computational problems. If you don't know how to solve problem computationally, knowing a million programming languages can make you a "collector", but not a good programmer.
There is a "Software-on-CV syndrome" going on in our society. Instead of saying we know how to do Statistics with computer, we write SPSS on CV. The new trend is to write a bunch of programming languages on CV. However, it can be a deception. A person can know a programming language without much knowledge on how to solve practical computational problems. Experience with unattractive-on-CV skills such as debugging, software testing, writing documentation and more importantly how-to-write-reusable-and-readable-code cannot be reflect by writing "proficiency in Objective-C" on your CV.
There are legitimate reasons for US institutes to start undergrad CS education by teaching some so-called useless programming languages such as Lisp, Logo or even Scratch. What they want to teach are the skills to approach computational problems such as "divide-and-conquer" or "abstraction" instead of teaching how to write a program to generate fibonacci series using industrial standard languages such as C++ or Java and then get hired by HSBC.