F#: Re-Thinking the syllabus for training engineers and scientists in programming

image 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?

Comments (2)

  1. kfarmer says:

    As a physics & astronomy graduate, I’d suggest being able to readily plot field lines.  Perhaps if you were to show how to create a WPF panel in F# that would do so for various fields (EM, gravitational, etc).  Showing how to tie into graphing libraries in general.  The development of a special functions library (Bessell, Error Function, generalized beta, etc) certainly worked well to pass my time. 🙂

  2. SoCal Sam says:

    Hey thanks for the comment, I will make this a focus, I have been thinking about what to do.  By the way there is a way to do this in F# using a tool in http://www.codeplex.com/vslabs, take a look at that!