Teaching Computational Thinking to Engineers