1. The commenters seem to imply that java is probably not the most appropriate language for cs1, where syntax considerations often overpower practical concerns.
2. Bright students that 'get it' are not the baseline, they're the exception. It's the other, intro level students that the class/recitation/curriculum should be catered towards.
3. Many (if not all) fields of study 'get hard' in college (i.e. physics, pure math, etc). The problem in this case is one of students being improperly tracked (i.e. curriculum failure).
4. Intro CS courses vary wildly in expectations and ideology. This set of courses seems to focus on 'practical' considerations that are probably better suited to a separate 'software design' course. It's possible that this 'survey' is actually too broad and not focused enough.
5. The music analogy is cute, but fails to consider that intro cs courses typically only succeed (and attempt) in getting students expressive (i.e. jibbering toddler) rather than elegantly fluent. This is why many post-cs1 students generally can solve problems using their new toolkit, but often solve them naively (it's like a toddler that says the wackiest things)
6. Confusing "programming ability" with "computer science" is problematic overall, i don't know that anyone would want to spend four semesters "programming" but i've know a bunch of people that enjoy the theory=>pracitce :: state machines => regular expression 1-2 punch. You can do quite a bit of fascinating cs in a logic/philosophy class as well as in a complexity theory class without ever touching a computer. I know, heresy, but it's true.
I think finally, the issue here is confusing "computer science" with "software engineering." I think java's a great language for software engineering, it's got all the stuff builtin to teach those concepts, but as a language for sketching, i'd probably use python.
And this is a hard question to be confronted with in any case: what are you teaching and why are you teaching it? Neither of those seem to be fully addressed in the author's description of cs1/2.
If you follow the analogy, the best programming languages for CS101 will first, minimize the amount of technique required to accomplish simple tasks. Java is out, "hello world" already introduces the concept of classes, static methods and access specifiers. Ruby, python, and plenty of other dynamic languages look a lot better, "hello world" is a single statement/expression. Second, the layout of the keys should be intuitive, consistency and simplicity in syntax/semantics is often cited as one of lisp's strong points with regard to it's suitability as a teaching language. If you want to play a scale, you just need to hit the keys in order.