Teaching ethics to computer engineering students thus requires an understanding only of the intellectual core of engineering itself and thus of how design solutions are themselves ethically loaded.
Ethics is already in engineering and only needs to be revealed.
Once revealed as internal to any design solution, ethical issues can become a subject of explicit discussion within the intellectual core of engineering itself. We might imagine, using the Cartesian conceit, an evil genius of an engineer who makes our lives miserable by designing artifacts which mislead into mistakes even the most intelligent, the most highly trained, and the most highly motivated among us and which, in the most diabolically perverse cases, seduce us into producing the opposite of what we were led to expect by the design. We may have perverse engineers in our midst, but, far more likely, we have engineers who do not think through the implications of their design solutions for those who are to use the artifacts created in accordance with them. Whenever there is a mechanical or technical failure, it is always a question where the responsibility ought to rest. A pilot who takes off on the wrong runway and so causes a catastrophic crash will be exonerated if something was amiss that would lead even an intelligent, well-trained, and highly motivated pilot to turn into the wrong runway.