Teaching programming alone usually takes up several courses in a Computer Science programme. Why would reasoning about programming be any simpler? This course is about reasoning techniques for imperative programming. E.g. loop invariants, preconditions, postconditions, and so on. I imagine you could fill many University courses with all the verification community has to say about this topic.