Hello, everyone! I'm a sophomore Physics and Math major from Temple University. Currently my GPA is 3.91 and I'm currently in Differential Equations, multivariable calculus, and Physics 2 (introductory E&M type of class basically). My problem is that, although I've been doing great grade-wise in all of my classes, I feel like I'm not truly learning the material. I can do all the computations and such without any problem really, but the proofs and underlying concepts seem to go right over my head. I feel like this is going to cause me a ton of trouble after this semester when I get to the upper level courses (advanced calculus, classical mechanics, etc) and I want to lessen that trouble if I can in some way. Is there any efficient way to increase my understanding of the material outside of class? I want to eventually land an REU and go to graduate school, and I'm not sure if I'll be able to do either without really understanding everything I'm learning in these fundamental courses. Also, as a little side question, does anyone recommend a certain way to learn to program? I've read that it's necessary to have at least a slight aptitude with it but my school only requires one course in programming for my major, and I feel like that won't be enough at all, so I plan to try and self-learn a bit over the summer.