F#: Re-Thinking the syllabus for training engineers and scientists in programming
Well continuing my effort to bring F# to the Engineers, one of the things that Engineering students look for is the move from graphing calculators to solving problems in a way that doesn’t require an expensive tool like MatLab or Mathematica, although both are excellent tools. When engineers leave school, it sometimes comes as a rude shock that the company they go to work for can’t afford the MatLab or Mathematica licenses.
First, don’t get me wrong, MatLab and Mathematica are great tools and later I am going to cover the use of F# with these important tools (if I can get a copy of one of them to work with).
Over the past 30 years I have been an Electrical Engineer, and Electrical Engineers are often trapped between the physics of the universe on one side, mechanical engineers on the other, then computer science on the opposite side. No one seems to understand the Electrical Engineer, it doesn’t help the Einstein’s equivalent of an undergraduate degree was in Electrical Engineering, that likely made it worse as the 20th century wore on. Mechanicals and Civil engineers have similar complaints, Computer Science seems to have a desire to exist to create and solve problems unique to the domain of the computer. And frankly they have done a great job of creating new technologies and jobs that employ 100’s of millions of people, so GOOD JOB Computer Scientists! But the engineering and science types need a little love too, which with imperative programming such as C#, Java is not really able to supply.
Let’s take a look at a situation that sits between electrical engineering and mechanical engineering: Control Systems. If I am designing a control system, I am not comfortable with object oriented software. If I am doing a simulation of a control system over a long period of time, imperative programming isn’t something that does me much good. Object Oriented programming is great for social networks, games, office applications, networks, but not for the control system simulation.
What is needed to excite the engineering students about programming? The physics student? Over the next few posts I will lay down some thoughts, and they will lead to functional programming with a dash of object oriented programming.
Do you have any thoughts on how a syllabus would look for non-CS students to get into programming?