CUDA is extremely simple, the classes might as well be on rails. OpenCL is like impossible without graphics and/or CUDA/distributed computing/operating system experience.
I'm not sure if I really agree - the level of abstraction used for each is extremely similar. There's not really any "Graphics Pipeline Specifics" pollution in OpenCL or CUDA.
You can pretty much translate something like https://github.com/jcupitt/opencl-experiments/blob/master/Op... with string replace function names.
I'm sure plenty of professors use CUDA in their courses because it's what they actually use. At the same time, in 2013 when I was in college I took a course on "parallel computing" as a CS elective. The professor told us on day 1 that NVidia was sponsoring the course and had donated a bunch of GPUs to the clusters we could remotely connect into for the sake of the class. Naturally we used CUDA exclusively.
I know for a fact that this happened at a lot of schools. I don't know if it's still happening since I'm not in that world anymore, but don't see why it would have stopped.