I am teaching an experimental offering at UVic that goes part-way to addressing your concerns. The goal of the course is to get 2nd year students comfortable with writing mathematical software in a high-level computer language. This semester we are using Python but the specific language is the choice of the instructor. The main part of the course is about building students' confidence up, writing small scripts to test mathematical ideas. But along the way we teach them about various elements from numerical analysis and their limitations. We largely do not teach *any* theory in this course. The course is about learning by example. So students see first-hand the issues that come from round-off error. They see first-hand arbitrary precision floats and integers, and how they can help (and hinder) an investigation. We also touch on a variety of topics not specific to numerical analysis.