Initial programming courses were electives, where you could choose between more basic or more advanced "intro to programming" course. Basic had python, while advanced had c and c++.
Similarly logic classes were in basic and advanced groups and it was easy to choose the group you want and switch groups during course.
In fact, I was the guy who came for CS degree after never doing great at math or CS in high school and it reaaaaaally helped me to get up to speed with the others.
What I imagine really smart person would do is: go to people giving the course for additional work or talk with them to show where they are at. Skip classes, read something else while in a class. Take advantage of knowledge to not care about the course curriculum and do his own research.
But that is my idea and maybe people who think their time is wasted could be a bit more humble and learn to work with other people.
>If those people who do not waste time are so smart why they have to be hold by the hand and given curriculum?
There's a culture of "rules apply to everyone" and people are not used to asking for special treatment. So if you don't make it super obvious, people will assume they can't ask for adjustments. Also, no tuition so weaker incentive to get your money's worth.
People who think they are exceptional are mostly just casual. (wink wink instagram)
Always seems to be the solution. It doesn't scale, even if you know how to make a PCB or a cupboard (for example), it doesn't take 0 time. That extra work would be extra time spent, which is nonsense if the goal is to demonstrate competency and reduce wasting time.
Plus, the extra work is still about the same course material - instead of one hello world you write two. It's not hard, it becomes depressing and demoralizing.