Honestly, I think the course from Duke is better than UC San Diego, at least the goal of the course at Duke is quite clear, it helps me think to solve the problems that the assignment poses, It's basically programming thinking, and it's essential to whatever language or framework you're going to use in the future to solve problems, it's a good course, as for UC San Diego (3rd course in this major - OOP in Java) , they use a rather old technology that is Applet and it doesn't work with new version of Java, and dozens of other bugs with OpenGL, Canvas included and I still can't fix it, instead of focusing on OOP, solving and designing, organizing code based on OOP, now we have to fix errors on IDE, Applet, OpenGL, Processing (a library like JavaFX, Java Swing) just to run the code and do the exercises, it took me a long time to fix the unrelated errors that come from the IDE, the operating system you use (I use linux and couldn't fix it to make it work at all, I couldn't find any information about the bug on gg,stackoverflow to fix it) , quite disappointed about the 3rd course in this major