Speaking from my background as a humble college student, I think the most important principle to embrace to successful pedagogy (in the professor side) and learning (in the student side) is that of independence. I've seen way too often classmates that copy and paste code without thinking twice about what the hell the code means, or memorize slides and regurgitate answers for a midterm or final. Partly this is the fault of their laziness, but professors have to be somewhat culpable for letting this laziness fester in the first place. It's distressing to me how many people in my class see programming as a (money-making) skill, yet see class material as just a parade of <i>facts</i> to learn, not a mindset to adopt.