As for my programming skills, I can safely say they are top 1%, as I can often ignore inquiries from say FB HRs. Yet I learnt everything myself. Without math, and without that structured way of thinking that's required to prove theorems, I wouldn't be able to get to the CS fundamentals, and my CS knowledge would be very shallow. There were a few CS teachers in college, but even then it was obvious to me that they don't know much and they had to cater to the least able students in the group anyway. I don't see a way to bring highly skilled and competent CS teachers to college: those who really know programming and have interest and ability to deal with people, often make 500k+ a year with very relaxed work hours - there is simply no incentive for them to bother teaching CS to (mostly uninterested) kids in college. And those who do teach CS in college as their full time job don't know much about CS, simply because gathering that knowledge is a separate full time job.
Edit: so online courses or college? Neither. You only need a book that thoroughly explains fundamentals and will to go thru it. Not enough will? Then you need a teacher whose only job will be to assess your knowledge twice a year in the form of some exam. Both online courses and college are too slow: I could honestly finish a masters degree in 1 year if I could avoid wasting time on all the fluff.