I had very similar experiences as a Computer Science undergraduate not many years ago at a prestigious British university. The expectations were so low that eventually I stopped attending lectures and got a full-time programming job and I still kept getting quite good grades. The problem is so widespread that it's not just about undergraduates; as an undergraduate I have met several PhD students who struggled with even basic programming or mathematical concepts.
Still, in a class of 300 people, there are still about 10 very talented and bright students who'd rather be (and not afraid of) writing Prolog interpreters and doing similarly interesting and cool stuff. There should be a way these students could learn advanced concepts with while being mentored by professors.
Still, in a class of 300 people, there are still about 10 very talented and bright students who'd rather be (and not afraid of) writing Prolog interpreters and doing similarly interesting and cool stuff. There should be a way these students could learn advanced concepts with while being mentored by professors.