That is true, in the sense that the 100/200 level classes are covering programming basics in addition to whatever algorithmic theory is being presented. But beyond that that, programs really seem to differ pretty strongly on applied projects and software engineering practices (basic stuff like source control) and more theoretical/mathematical concepts. One type of capstone style class commonly seen is compiler design. To a certain extent, a good school will teach you how to learn, and give you enough of a background, class projects, internships, electives with applied options, that you get a well rounded education and can quickly ramp up in a more typical software organization after graduation. But as someone who has hired many new grads over the years, it always surprises me what sort of gaps exist. It rarely is about programming basics, and almost always about "software engineering" as a discipline.
My experience is graduates of schools focused on the more practical aspects tend to make better Jr developers on day one but then stagnate. Meanwhile graduates of the more theoretical programs people pick up those same practical skills on the job leaving them better prepared for more demanding assignments.
This then feeds into the common preference for CS degrees even if they may not actually be the best fit for the specific role.