But still, what are the right didactic concepts? IMO, the first decision to be made: teach computer mathematics and not mathematics. Apply learner-centered approaches based on explorative constructive learning principles.
If our aim is to help students to become competent, autonomous acting experts in their field of practice we must give them the opportunity to behave as competent and autonomous as learner too.
Therefore our courseware shall try to construct learning situations by addressing individual motivation and pre-knowledge, starting each learning unit with real-life problems, explain the central concepts and give as much space for individual acquisition and experiments as possible, apply further examples for applications and strengthening of newly gained knowledge, emphasizing on limits, pathological cases, traps, .., as well as self-assessment facilities with qualitative feed back.
Courseware builders enjoy Mathematica's vast variety of solvers, demonstration capabilities with dynamic visualisation, expression manipulators as well as assistent palettes (see picture), but probably not as common in these circles: the ability to declare and apply any transformation rule in Mathematica allows for implementing white-box problem solving steps for solution checkers with qualitative feed-back in self-assessment environments.