Integrating the science of computing into undergraduate engineering curricula

Engineering computing is much more than a specialized skill that enables engineers to create programs and use commercial tools. The science of computing involves the study of representation and reasoning strategies as well as fundamental topics such as computational complexity. The core ideas associated with such topics are expected to have an important impact on decisions related to computing during the careers of current engineering students. This paper describes a course on the fundamentals of computing that has been taught to second-year civil-engineering undergraduates in Switzerland for ten years and more recently, to undergraduate and graduate students in India and the USA. Practical outcomes include a sustainable knowledge of fundamentals for competence across a wide band of technologies, agile adoption of future developments, better collaboration with computer scientists for large, and often out-sourced, projects in practice and more informed purchases of software.