Good advice! If we really cared about the systems we create and the effect they have on the world then the language it is programmed in and the implementation of that system would only be one part of the process. The means of effective reasoning about the design of software systems is formal. However it seems to be outside the scope of any introduction to computer science or programming course.<p>To quote <i>Friedrich Bauer</i>:<p>&quot;Software engineering is the part of computer science which is too difficult for the computer scientist.&quot;