There was a time when engineering students learned to program using a compilable language. Today, schools prefer using math packages. There are various reasons for this.
First, compilers became too sophisticated to use in an introductory course. Second, some departments relied on students having their own computers, rather than support labs. PC, Mac, and Linux operating systems created environments that lack the minimal homogeneity necessary for student instruction. So schools turned to math packages like Matlab. I find this unfortunate. Before I explain my reasoning, we should review the generations of computer languages.
A first-generation programming language is a machine-level language. One codes directly in machine-readable form. The principle language is binary.
A second-generation programming language requires translation of one line of language instruction into one line of machine language. Such languages are more friendly to the computer and specific to a particular central processing unit (CPU).
A third-generation language is not CPU specific, and it is friendlier to the programmer. One line of such a language instruction is translated into multiple lines of machine instruction. C and FORTRAN are such languages.
A fourth-generation language moves beyond the burden of a compilable syntax; it is actually a programming environment. Matlab is an example. One interacts within it to implement mathematical operations.
As you move up this hierarchy, you focus more on the mathematical algorithms and less on the computer. But, we live in a world where our mechanical devices think and communicate. Engineers should know more about how mechanisms function in the context of the computer. By programming in a third-generation language, students are compelled to follow syntax rules and to find errors in their work. One also more readily learns to think systematically — a skill not as rewarded by safe programming environments like Matlab. Students also learn more about their computer and operating system. Students could learn to use packages like Matlab — in time — but that should not substitute for learning to program.
So how does one teach a programming language in the heterogeneous computer world we have today? I will address that in Part Two.
- Check out part two of this story on a way to combate these difficulties in teaching