Teaching Programming as Engineering

In spite of unheralded advances in computer hardware and software, most of today's introductory programming courses are much like courses taught 30 years ago. Although the programming languages have changed, we continue to equate teaching programming with teaching the syntax and semantics of programming languages. This paper describes a different approach being taken in the Faculty of Engineering at McMaster University. Our course emphasises program design rather than language syntax, insisting that the program design is something distinct from the detailed code. It allows students a choice of programming languages for use in their laboratory work. Students learn a mathematical model of programming and are taught to use that model to understand program design, analysis, and documentation. Considerable effort is spent on teaching the students how to apply what they see as “theory” in practice.