This isn't the 90% case. At least half of CS students come in with at least a basic proficiency in programming. It's a big enough portion of the class that not boring them into ignoring the actual Computer Science parts while getting the other half up to speed is the defining issue of lower-division CS courses.