The problem with first year CS students is that, unlike math, they’re allowed to have a huge range of possible prior experience in the subject. Some have zero programming experience whatsoever, while others started programming in diapers and competed in numerous programming contests (and even won) before enrolling.
Yes, we do offer an advanced version of the intro course that is far more challenging and would be appropriate for many of those advanced students. But the advanced course is optional so no student can be forced to take it. Many of the advanced students opt to take the standard intro course in the hope that it would boost their grades.
So the course is dealing with (essentially) a strongly bimodal distribution of student ability and the professors don’t want to give the advanced students a free ride. That means the course is actually somewhat challenging for all but the most elite programmers and therefore extremely challenging for total beginners.
What this meant was that Monday office hours (assignments were due Tuesday mornings) typically had several hundred students (out of a total of about 1800) scrambling for help from a dozen TAs. Of course, my school only has a tiny fraction of the funding of Harvard, but there you go.
I doubt that Harvard would want to spend proportionally more on TAs for their course (which would mean more TAs than students), so even though their course may be way more “well-funded” than ours, it’s not at all so relative to endowment.