WTF#: Syllabus for the rest of the students at a university, with a focus on Functional Programming
Information science and computer science pretty much control the programming classes and curriculum at the universities, colleges and trade schools. Most of the training is either to implement and manage systems or how to write programs and think about new problems and solutions. It is all good and needed, but what about the rest of the students?
In my thinking, I am just thinking about the students down the hall from computer science, the mechanical/aero/civil/electrical engineers. Much of what they do requires computations of some sort. Their research requires the use of computers, but is the approach currently recommended by the ACM and IEEE really fitting the bill?
Let’s say I am an electrical engineering student who is passionate about solving EMF problems related to the power curve utilization in the home. Here the power delivered by power companies is being polluted by the switching power supplies used by computers and battery chargers. That means that the AC power has all kinds of little spikes in it that changes the power distribution system in small ways.
Or I am a civil engineer that needs to do a hydrostatic simulation of drains in cities to determine the impact of gutter water on streams and ocean outlets. Or I am an aero that needs to do a simulation of a historical aircraft, like the airplane model that Einstein created while playing with his son Hans. Finally, what if I am a mechanical engineer that needs to do a dynamic stress analysis of a Ferrari automobile.
How do I as an engineering student get started with developing a program that doesn’t necessarily require MatLab or Mathematica? Or even be able to extend those excellent tools?
Java? C#? Visual Basic? Small Basic? Or a functional language that can do OOP when needed, like F#? What does a engineering student get motivated by? Having to write programs that conform to computer science protocols of code or problem domain? Or does the student need something that conforms more to their domain knowledge needs? What will these engineering students be doing with their domain knowledge when they go to work for the local utility firm, aerospace company, city permit desk or automotive design consultancy?
In the past functional languages such as FORTRAN, APL (A Programming Language), would be there to help with the early engineering student to help with the matrix calculations of matrixes larger than 4 by 4, and so forth. Today, the classes offered to these students may use a language like OCAML, which is the mother of F# where F# uses the light syntax of the OCAML language. These languages are prefect for the engineer, and F# is a play for both sides of the equation, in that it is both functional as well as object oriented.
In a well designed class for the engineers and scientists, the computer science students who also attend the class would have to sit through the way that the matrixes are used in math and engineering. But here is the trick: The engineers would be able to see the difference between the use of arrays and trees (something I always have problems with). So by making the modifications the students would be able to gain a more diverse way to use software to solve problems.