I study at ETH Zurich in Switzerland. In each one of my courses all students devote countless hours to solving the problems the instructors throw at us, there is explicit assistance given if you need it and each problem you solve is then corrected & graded (if you want).
It‘s very satisfying, say in an algorithms class, to come up with an algorithm that satisfies the given runtime requirements, often taking ideas from multiple basis courses - and this is expected. It‘s always explicitly stated that the goal is not to, say, remember an algorithm like Dijkstra by heart, but to internalize how to come up with such an algorithm, as the exam is also structured around coming up with new algorithms.