Innate ability for thinking at any of those levels varies, of course. Then again, maybe CS instructors do an especially poor job of teaching higher level thinking skills.
It's not just CS that has people that can't apply the skills they've learned. In electrical engineering we did basic work with programmable logic controllers that use a visual interface called ladder diagrams. Basically it's a schematic entered in a computer, and the logic controller follows what your schematic says. It's the most basic level of programming imaginable. The stuff I programmed in grade 11 was actually more difficult because grade 11 was all text whereas logic controllers was all visual. It's simple stuff like if a sensor gets a signal, make a counter count up, when it gets to a certain number do this action, reset the counter after it does that act, start over. Even at this level, some people had a hard time dealing with logic programming. They just couldn't get it.
I'm not a very bright person, but my group was flying through the assignments really fast. If you have the technical abilities of a monkey, you can do basic programming like this. If hungry, eat food. If need to pee, go to the bathroom. It really is that basic. Being a class full of engineers, most people picked this up right away; engineers should be logical people. There were still a few groups, probably about 6 people, who seemed to have the teacher's assistance the entire time. It's not like we're looking around to see who's worse than us; we need to demonstrate that our program works and have the teacher sign it. We end up sitting there, staring across the room where the teacher has been trying to explain the most basic concept to people who memorize things for tests. Just learn the damn material and it won't be so difficult!! Grrrrrrr!.