We describe and compare the programming languages C, MATLAB and Python as teaching languages for engineering students. We distinguish between two distinct phases in the process of converting a given problem into a computer program that can provide a solution: (i) finding an algorithmic solution and (ii) implementing this in a particular programming language. It is argued that it is most important for the understanding of the students to perform the first step whereas the actual implementation in a programming language is of secondary importance for the learning of problem-solving techniques. We therefore suggest to chose a well-structured teaching language that provides a clear and intuitive syntax and allows students to quickly express their algorithms. In our experience in engineering computing we find that MATLAB is much better suited than C for this task but the best choice in terms of clarity and functionality of the language is provided by Python.