<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Sam Stokes on Research in your life and studies : Electrical Engineering</title><link>http://blogs.msdn.com/research/archive/tags/Electrical+Engineering/default.aspx</link><description>Tags: Electrical Engineering</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>F#: Using the Interactive Panel in VS 2010 Part 1</title><link>http://blogs.msdn.com/research/archive/2009/07/01/f-using-the-interactive-panel-in-vs-2010-part-1.aspx</link><pubDate>Wed, 01 Jul 2009 19:43:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9811398</guid><dc:creator>SoCal Sam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/research/comments/9811398.aspx</comments><wfw:commentRss>http://blogs.msdn.com/research/commentrss.aspx?PostID=9811398</wfw:commentRss><description>&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:5eb015c5-c750-4740-9861-499b3a9169a2" class="wlWriterEditableSmartContent"&gt;&lt;div id="912c999f-5c67-49ab-877e-1235a6374a4e" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://video.msn.com/video.aspx?vid=80e94d8a-69e5-4fdf-a940-6ff5c4fdb921&amp;amp;from=writer" target="_new"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/research/WindowsLiveWriter/FUsingtheInteractivePanelinVS2010Part1_88A1/video7a8a182a1bb8.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('912c999f-5c67-49ab-877e-1235a6374a4e'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;embed src=\&amp;quot;http://images.video.msn.com/flash/soapbox1_1.swf\&amp;quot; quality=\&amp;quot;high\&amp;quot; width=\&amp;quot;625\&amp;quot; height=\&amp;quot;468\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; pluginspage=\&amp;quot;http://macromedia.com/go/getflashplayer\&amp;quot; flashvars=\&amp;quot;c=v&amp;amp;v=80e94d8a-69e5-4fdf-a940-6ff5c4fdb921&amp;amp;from=writer&amp;amp;mkt=en-US\&amp;quot; &amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Use the Interactive Panel in VS 2010 to learn how to use F#.&amp;#160; I have not included the code used in my examples, my guidance to you is to visit:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html"&gt;F# 1.9.6.16 Draft Language Specification&lt;/a&gt;, &lt;/p&gt;  &lt;p&gt;start off with: “Making Data Simple” use the interactive panel to test the examples.&amp;#160; Then work through the rest of the specification, as you do note down ideas that you have about how to use F#.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;It’s pretty cool.&lt;/p&gt;  &lt;p&gt;For the QuickStart viewers, my apologies for the latest of this video, I use MSN Videos and the system hasn’t been working well lately.&lt;/p&gt;  &lt;p&gt;The video is also available for download, and easier viewing at the following link:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/FunctionalCode/Release/ProjectReleases.aspx?ReleaseId=2886"&gt;Coding Functionally&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I should be able to get the rest of the talk posted over the next few days.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9811398" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/research/archive/tags/Fun/default.aspx">Fun</category><category domain="http://blogs.msdn.com/research/archive/tags/Electrical+Engineering/default.aspx">Electrical Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://blogs.msdn.com/research/archive/tags/Celestial+Mechanics/default.aspx">Celestial Mechanics</category><category domain="http://blogs.msdn.com/research/archive/tags/Domain+Specific+Languages/default.aspx">Domain Specific Languages</category></item><item><title>WTF#: Changing the curriculum on programming for scientists and engineers</title><link>http://blogs.msdn.com/research/archive/2009/03/23/wtf-changing-the-curriculum-on-programming-for-scientists-and-engineers.aspx</link><pubDate>Mon, 23 Mar 2009 18:39:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9501600</guid><dc:creator>SoCal Sam</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/research/comments/9501600.aspx</comments><wfw:commentRss>http://blogs.msdn.com/research/commentrss.aspx?PostID=9501600</wfw:commentRss><description>&lt;div class="wlWriterHeaderFooter" style="float:right; margin:0px; padding:0px 0px 4px 8px;"&gt;&lt;script type="text/javascript"&gt;digg_url = "http://blogs.msdn.com/research/archive/2009/03/23/wtf-changing-the-curriculum-on-programming-for-scientists-and-engineers.aspx";digg_title = "WTF#: Changing the curriculum on programming for scientists and engineers";digg_bgcolor = "#FFFFFF";digg_skin = "normal";&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/research/WindowsLiveWriter/WTFChangingthecurriculumonprogrammingfor_79BC/image_2.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; margin: 0px 0px 0px 15px; border-left: 0px; border-bottom: 0px" height="332" alt="image" src="http://blogs.msdn.com/blogfiles/research/WindowsLiveWriter/WTFChangingthecurriculumonprogrammingfor_79BC/image_thumb.png" width="410" align="right" border="0"&gt;&lt;/a&gt; Changing the curriculum for Physics Majors and Engineers, as we can see, the process to prepare people who might be engineers and scientists (except for the computer scientists) need to have some modifications.&amp;nbsp; First of all, the process of training engineers and scientists appears to be modified, the computer scientist students need different approaches, they are building, deploying and maintaining tools.&amp;nbsp; The current approach of attempting to combine engineering and scientists in the training of programming doesn’t help the computer scientists, they have to spend time learning languages like Java and C#, that could be better spent learning and using C++.&amp;nbsp; Engineers, especially Computer Engineers have to spend time not learning the C Language used in controllers (although there are better languages), other engineers and scientists do not spend enough time learning how to implement solutions using high level languages.&lt;/p&gt; &lt;p&gt;Examination of the Mars Climate Orbiter clearly points to the factors that the aerospace engineers could have better served learning how to use tools to test the integration of the MCO, which would have been higher level languages.&amp;nbsp; &lt;/p&gt; &lt;p&gt;System engineering, software engineering is still suffering from lack of focus, although lately there has been a stronger focus on the implementation of improved software engineering at schools like California State University, Fullerton and others.&amp;nbsp; To me it is time that engineers feel comfortable with programming, programming that will solve their problems, not computer scientists.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Of course the problem for the schools is getting the students interested in the programs.&lt;/p&gt; &lt;p&gt;In later blogs, I will be covering the solution of simple physics problems using F#, but for now, I hope to hear from you about how to improve the teaching of programming for engineers and scientists.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7c02aa70-5b9d-4072-a898-b6229b5b5970" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Curriculum" rel="tag"&gt;Curriculum&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WTF" rel="tag"&gt;WTF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/science" rel="tag"&gt;science&lt;/a&gt;,&lt;a href="http://technorati.com/tags/engineering" rel="tag"&gt;engineering&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9501600" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/research/archive/tags/simulations/default.aspx">simulations</category><category domain="http://blogs.msdn.com/research/archive/tags/Electrical+Engineering/default.aspx">Electrical Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/Engineering/default.aspx">Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/MSDNAA/default.aspx">MSDNAA</category><category domain="http://blogs.msdn.com/research/archive/tags/Mars+Climate+Orbiter/default.aspx">Mars Climate Orbiter</category><category domain="http://blogs.msdn.com/research/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://blogs.msdn.com/research/archive/tags/Orbital+Mechanics/default.aspx">Orbital Mechanics</category></item><item><title>WTF#: Could F# have saved the Mars Climate Orbiter?</title><link>http://blogs.msdn.com/research/archive/2009/03/17/wtf-could-f-have-saved-the-mars-climate-orbiter.aspx</link><pubDate>Wed, 18 Mar 2009 00:05:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9484774</guid><dc:creator>SoCal Sam</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/research/comments/9484774.aspx</comments><wfw:commentRss>http://blogs.msdn.com/research/commentrss.aspx?PostID=9484774</wfw:commentRss><description>&lt;div class="wlWriterHeaderFooter" style="float:right; margin:0px; padding:0px 0px 4px 8px;"&gt;&lt;script type="text/javascript"&gt;digg_url = "http://blogs.msdn.com/research/archive/2009/03/17/wtf-could-f-have-saved-the-mars-climate-orbiter.aspx";digg_title = "WTF#: Could F# have saved the Mars Climate Orbiter?";digg_bgcolor = "#FFFFFF";digg_skin = "normal";&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:3b0f9770-14a7-4e15-96b2-577f7f969be3" style="padding-right: 0px; display: inline; padding-left: 0px; float: right; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;div id="dc72ab34-95c6-4e6a-9a0f-1583fa4a8828" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://video.msn.com/video.aspx?vid=c5fb9ef5-fefd-464c-824f-3e2a7cd3266e&amp;amp;from=writer" target="_new"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/research/WindowsLiveWriter/WTFCouldFhavesavedtheMarsClimateOrbiter_119FF/video77778ad00bfe.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('dc72ab34-95c6-4e6a-9a0f-1583fa4a8828'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;embed src=\&amp;quot;http://images.video.msn.com/flash/soapbox1_1.swf\&amp;quot; quality=\&amp;quot;high\&amp;quot; width=\&amp;quot;432\&amp;quot; height=\&amp;quot;364\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; pluginspage=\&amp;quot;http://macromedia.com/go/getflashplayer\&amp;quot; flashvars=\&amp;quot;c=v&amp;amp;v=c5fb9ef5-fefd-464c-824f-3e2a7cd3266e&amp;amp;from=writer&amp;amp;mkt=en-US\&amp;quot; &amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;The Mars Climate Orbiter likely failed due to one sensor passing data in the wrong units to the central processing units on the MCO.&amp;nbsp; I have created a first cut demonstrating the use of the dimensional analysis capabilities in F#.&amp;nbsp; It is a simple idea, but one that helps the engineers and scientists to get the issues on incorrect dimensions being used in software.&lt;/p&gt; &lt;p&gt;I am working on creating a simple Hohmann trajectory simulator, but it is a little more difficult than I thought so that will be coming out a little later in my blogging cycle. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d1cf9dd8-ecb6-4e88-9a32-f664c79cf603" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/dimensional+analysis" rel="tag"&gt;dimensional analysis&lt;/a&gt;,&lt;a href="http://technorati.com/tags/game+programming" rel="tag"&gt;game programming&lt;/a&gt;,&lt;a href="http://technorati.com/tags/games" rel="tag"&gt;games&lt;/a&gt;,&lt;a href="http://technorati.com/tags/XNA" rel="tag"&gt;XNA&lt;/a&gt;,&lt;a href="http://technorati.com/tags/engineering" rel="tag"&gt;engineering&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9484774" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/research/archive/tags/Fun/default.aspx">Fun</category><category domain="http://blogs.msdn.com/research/archive/tags/simulations/default.aspx">simulations</category><category domain="http://blogs.msdn.com/research/archive/tags/Electrical+Engineering/default.aspx">Electrical Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/Engineering/default.aspx">Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/MSDN+Academic+Alliance/default.aspx">MSDN Academic Alliance</category><category domain="http://blogs.msdn.com/research/archive/tags/Mars+Climate+Orbiter/default.aspx">Mars Climate Orbiter</category></item><item><title>WTF#: F#, and the Mars Climate Orbiter (MCO) crash in 1998</title><link>http://blogs.msdn.com/research/archive/2009/03/09/wtf-f-and-the-mars-climate-orbiter-mco-crash-in-1998.aspx</link><pubDate>Mon, 09 Mar 2009 23:41:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9468171</guid><dc:creator>SoCal Sam</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/research/comments/9468171.aspx</comments><wfw:commentRss>http://blogs.msdn.com/research/commentrss.aspx?PostID=9468171</wfw:commentRss><description>&lt;div class="wlWriterHeaderFooter" style="float:right; margin:0px; padding:0px 0px 4px 8px;"&gt;&lt;script type="text/javascript"&gt;digg_url = "http://blogs.msdn.com/research/archive/2009/03/09/wtf-f-and-the-mars-climate-orbiter-mco-crash-in-1998.aspx";digg_title = "WTF#: F#, and the Mars Climate Orbiter (MCO) crash in 1998";digg_bgcolor = "#FFFFFF";digg_skin = "normal";&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/research/WindowsLiveWriter/WTFFandtheMarsClimateOrbiterMCOcrashin19_C08E/image_4.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="387" alt="image" src="http://blogs.msdn.com/blogfiles/research/WindowsLiveWriter/WTFFandtheMarsClimateOrbiterMCOcrashin19_C08E/image_thumb_1.png" width="532" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;OMG: Slide Rules and F#, ‘sup with that?&amp;nbsp; World of Twitter, Facebook, $300 computers running Windows 7, why would I even mention this arcane tool?&amp;nbsp; F# and Slide Rules have something in common: Dimensional Analysis.&lt;/p&gt; &lt;p&gt;In F# you can use dimensional analysis to implement your programs.&amp;nbsp; What does this mean?&amp;nbsp; You can save $250,000,000 in wasted space craft for example.&amp;nbsp; In 1999 the Mars Orbiter was doing a aerobraking maneuver to enter into Martian orbit, and when it started it’s rocket motor, it blasted itself out of orbit and crashed.&amp;nbsp; The problem?&amp;nbsp; Some of the code was in SI units (metric) and others were in the SAE (feet/pounds), somehow this passed critical code review.&amp;nbsp; Nice job!&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;"People sometimes make errors," said Dr. Edward Weiler, NASA's Associate Administrator for Space Science. "The problem here was not the error, it was the failure of NASA's systems engineering, and the checks and balances in our processes to detect the error. That's why we lost the spacecraft." &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Would F# as a high level language&amp;nbsp; been able to solve this problem?&amp;nbsp; Not knowing if the control law synthesis was done in a high level language or using assembly language or even hardware level programming.&amp;nbsp; I am certain that with the many successes, as well as failures since the Mars Climate Orbiter’s crash, however the brief accident report that I can find easily on the web, has the quote from &lt;a href="http://www.spaceref.com/news/viewpr.html?pid=3149"&gt;NASA ADVISORY COUNCIL March 16, 2000&lt;/a&gt; (you have to scroll down a bit to see the article): &lt;blockquote&gt; &lt;p&gt;“There were four common themes from the failure investigations and studies: inadequate reviews; inadequately addressing risk management; inadequate testing, simulation, and V&amp;amp;V; and communications. In response to a question, Mr. Stephenson noted that more attention needs to be put on people—skills, training, etc. The Board made recommendations in four categories: people, process, execution, and technology. NASA tends to focus on process. People includes picking the right people (including the right leader), teamwork, communication, and adequate staffing and oversight. In the process area, the mission success criteria needs to be very clearly defined up front. Out of this derives the top level system requirements, etc. Other important aspects of the process are: systems engineering, verification and validation, risk assessment (e.g., fault tree analyses and probability risk assessment), the responsibility of the line organization, science involvement, operations (on the program from the start), and transitions (from development to operations).”&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Wow, that sounds like a bunch of “blah, blah, blah”&amp;nbsp; Improve process, the check is in the mail, and so forth.&amp;nbsp; The problem was that there was a disconnect in the units used in programs and I haven’t found the article, but I am GUESSING that the rocket control law had been used in other systems successfully and wasn’t fully tested prior to launch.&amp;nbsp; So fixing that would fix other problems as well.&amp;nbsp; So maybe F# wouldn’t save the day, but for this blog article let’s assume the error in dimensions was the problem, see the &lt;a href="http://science.nasa.gov/newhome/headlines/ast30sep99_2.htm"&gt;article&lt;/a&gt; on the NASA site for a very brief explanation.&lt;/p&gt; &lt;p&gt;&lt;a href="http://regentsprep.org/Regents/physics/phys00/no_units/mistake.htm"&gt;So what happened&lt;/a&gt;?&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;“Twice a day during the cruise to Mars, tiny thrusters on the spacecraft were fired briefly to counteract the effects of solar wind and other forces on the spinning of the flywheels.&amp;nbsp; The spacecraft team in Colorado used English units called pound-seconds to describe the small forces….&lt;br&gt;That data was shipped via computer to JPL where the navigation team was expecting to receive the information in newton-seconds, a metric measure of force.”&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;How would F# have aided in preventing that problem?&amp;nbsp; F# gives the developer the ability to assign units to variables.&amp;nbsp; So it would be possible for a software architect to implement a system that would perform error checking of the results to make sure that the correct units were being used.&amp;nbsp; In later articles I will be going over how to code and do the error handling.&amp;nbsp; &lt;p&gt;Of course the bottom line is that the Mars Climate Orbiter crash was a monument to the dumb approach of faster, better, cheaper approach to spacecraft design, which is still causing problems inside of NASA these days.&amp;nbsp; More in the next post.&amp;nbsp; This is fun, well it would be if wasn’t so sad. :( &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:aaafa02b-073f-412f-8a8e-010acaeab263" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Mars+Climate+Orbiter" rel="tag"&gt;Mars Climate Orbiter&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MCO" rel="tag"&gt;MCO&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Simulations" rel="tag"&gt;Simulations&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Orbital+Mechanics" rel="tag"&gt;Orbital Mechanics&lt;/a&gt;,&lt;a href="http://technorati.com/tags/F%23" rel="tag"&gt;F#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Functional+Languages" rel="tag"&gt;Functional Languages&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9468171" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/research/archive/tags/Research/default.aspx">Research</category><category domain="http://blogs.msdn.com/research/archive/tags/eScience/default.aspx">eScience</category><category domain="http://blogs.msdn.com/research/archive/tags/simulations/default.aspx">simulations</category><category domain="http://blogs.msdn.com/research/archive/tags/Electrical+Engineering/default.aspx">Electrical Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/Engineering/default.aspx">Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/Servers/default.aspx">Servers</category><category domain="http://blogs.msdn.com/research/archive/tags/Mars+Climate+Orbiter/default.aspx">Mars Climate Orbiter</category></item><item><title>WTF#: Syllabus for the rest of the students at a university, with a focus on Functional Programming</title><link>http://blogs.msdn.com/research/archive/2009/02/21/wtf-syllabus-for-the-rest-of-the-students-at-a-university-with-a-focus-on-functional-programming.aspx</link><pubDate>Sat, 21 Feb 2009 22:29:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9437980</guid><dc:creator>SoCal Sam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/research/comments/9437980.aspx</comments><wfw:commentRss>http://blogs.msdn.com/research/commentrss.aspx?PostID=9437980</wfw:commentRss><description>&lt;div class="wlWriterHeaderFooter" style="float:right; margin:0px; padding:0px 0px 4px 8px;"&gt;&lt;script type="text/javascript"&gt;digg_url = "http://blogs.msdn.com/research/archive/2009/02/21/wtf-syllabus-for-the-rest-of-the-students-at-a-university-with-a-focus-on-functional-programming.aspx";digg_title = "WTF#: Syllabus for the rest of the students at a university, with a focus on Functional Programming";digg_bgcolor = "#FFFFFF";digg_skin = "normal";&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;Information science and computer science pretty much control the programming classes and curriculum at the universities, colleges and trade schools.&amp;nbsp; Most of the training is either to implement and manage systems or how to write programs and think about new problems and solutions.&amp;nbsp; It is all good and needed, but what about the rest of the students?&amp;nbsp; &lt;/p&gt; &lt;p&gt;In my thinking, I am just thinking about the students down the hall from computer science, the mechanical/aero/civil/electrical engineers.&amp;nbsp; Much of what they do requires computations of some sort.&amp;nbsp; Their research requires the use of computers, but is the approach currently recommended by the ACM and IEEE really fitting the bill?&amp;nbsp; &lt;/p&gt; &lt;p&gt;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.&amp;nbsp; Here the power delivered by power companies is being polluted by the switching power supplies used by computers and battery chargers.&amp;nbsp; That means that the AC power has all kinds of little spikes in it that changes the power distribution system in small ways.&lt;/p&gt; &lt;p&gt;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.&amp;nbsp; Or I am an aero that needs to do a simulation of a historical aircraft, like the airplane model that &lt;a href="http://press.princeton.edu/chapters/i8331.pdf" target="_blank"&gt;Einstein created while playing with his son Hans&lt;/a&gt;.&amp;nbsp; Finally, what if I am a mechanical engineer that needs to do a dynamic stress analysis of a &lt;a href="http://www.hpcwire.com/offthewire/Ferrari_Takes_Windows_HPC_Server_for_a_Spin.html" target="_blank"&gt;Ferrari&lt;/a&gt; automobile.&lt;/p&gt; &lt;p&gt;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?&amp;nbsp; &lt;/p&gt; &lt;p&gt;Java? C#? Visual Basic? Small Basic? Or a functional language that can do OOP when needed, like F#?&amp;nbsp; What does a engineering student get motivated by?&amp;nbsp; Having to write programs that conform to computer science protocols of code or problem domain?&amp;nbsp; Or does the student need something that conforms more to their domain knowledge needs?&amp;nbsp; 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?&lt;/p&gt; &lt;p&gt;In the past functional languages such as FORTRAN, APL (&lt;a href="http://www.c2.com/cgi/wiki?AplLanguage" target="_blank"&gt;A Programming Language&lt;/a&gt;), 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.&amp;nbsp; 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.&amp;nbsp; 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.&lt;/p&gt; &lt;p&gt;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.&amp;nbsp; 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).&amp;nbsp; So by making the modifications the students would be able to gain a more diverse way to use software to solve problems.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5f174183-bb60-4eb9-bede-bc41e1e625b3" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/APL" rel="tag"&gt;APL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/FORTRAN" rel="tag"&gt;FORTRAN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Martix+Math" rel="tag"&gt;Martix Math&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Binary+Trees" rel="tag"&gt;Binary Trees&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Engineering" rel="tag"&gt;Engineering&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9437980" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/research/archive/tags/Research/default.aspx">Research</category><category domain="http://blogs.msdn.com/research/archive/tags/eScience/default.aspx">eScience</category><category domain="http://blogs.msdn.com/research/archive/tags/simulations/default.aspx">simulations</category><category domain="http://blogs.msdn.com/research/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/research/archive/tags/Science/default.aspx">Science</category><category domain="http://blogs.msdn.com/research/archive/tags/Electrical+Engineering/default.aspx">Electrical Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/Engineering/default.aspx">Engineering</category></item><item><title>F#: Re-Thinking the syllabus for training engineers and scientists in programming</title><link>http://blogs.msdn.com/research/archive/2009/02/20/f-re-thinking-the-syllabus-for-training-engineers-and-scientists-in-programming.aspx</link><pubDate>Fri, 20 Feb 2009 21:44:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9436409</guid><dc:creator>SoCal Sam</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/research/comments/9436409.aspx</comments><wfw:commentRss>http://blogs.msdn.com/research/commentrss.aspx?PostID=9436409</wfw:commentRss><description>&lt;div class="wlWriterHeaderFooter" style="float:left; margin:0px; padding:0px 8px 4px 0px;"&gt;&lt;script type="text/javascript"&gt;digg_url = "http://blogs.msdn.com/research/archive/2009/02/20/f-re-thinking-the-syllabus-for-training-engineers-and-scientists-in-programming.aspx";digg_title = "F#: Re-Thinking the syllabus for training engineers and scientists in programming";digg_bgcolor = "#FFFFFF";digg_skin = "normal";&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script type="text/javascript"&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/script&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/research/WindowsLiveWriter/FAsyllabus_7B51/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://blogs.msdn.com/blogfiles/research/WindowsLiveWriter/FAsyllabus_7B51/image_thumb_1.png" width="216" height="244"&gt;&lt;/a&gt;  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.&amp;nbsp; 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.&amp;nbsp; &lt;/p&gt; &lt;p&gt;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).&lt;/p&gt; &lt;p&gt;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.&amp;nbsp; 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.&amp;nbsp; 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.&amp;nbsp; 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!&amp;nbsp; 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.&lt;/p&gt; &lt;p&gt;Let’s take a look at a situation that sits between electrical engineering and mechanical engineering: Control Systems.&amp;nbsp; If I am designing a control system, I am not comfortable with object oriented software.&amp;nbsp; 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.&amp;nbsp; Object Oriented programming is great for social networks, games, office applications, networks, but not for the control system simulation.&lt;/p&gt; &lt;p&gt;What is needed to excite the engineering students about programming?&amp;nbsp; The physics student?&amp;nbsp; 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.&lt;/p&gt; &lt;p&gt;Do you have any thoughts on how a syllabus would look for non-CS students to get into programming?&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:165464da-973d-44bc-bfa5-f804a4efb24c" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F%23" rel="tag"&gt;F#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/FSharp" rel="tag"&gt;FSharp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Functional+Programmning" rel="tag"&gt;Functional Programmning&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9436409" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/research/archive/tags/Research/default.aspx">Research</category><category domain="http://blogs.msdn.com/research/archive/tags/eScience/default.aspx">eScience</category><category domain="http://blogs.msdn.com/research/archive/tags/Fun/default.aspx">Fun</category><category domain="http://blogs.msdn.com/research/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/research/archive/tags/Science/default.aspx">Science</category><category domain="http://blogs.msdn.com/research/archive/tags/Electrical+Engineering/default.aspx">Electrical Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/Engineering/default.aspx">Engineering</category></item><item><title>Checking out the Microsoft Speech Server</title><link>http://blogs.msdn.com/research/archive/2009/01/12/checking-out-the-microsoft-speech-server.aspx</link><pubDate>Mon, 12 Jan 2009 23:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9309625</guid><dc:creator>SoCal Sam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/research/comments/9309625.aspx</comments><wfw:commentRss>http://blogs.msdn.com/research/commentrss.aspx?PostID=9309625</wfw:commentRss><description>&lt;DIV style="PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 8px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 0px" class=wlWriterHeaderFooter&gt;
&lt;SCRIPT type=text/javascript&gt;digg_url = "http://blogs.msdn.com/research/archive/2009/01/12/checking-out-the-microsoft-speech-server.aspx";digg_title = "Checking out the Microsoft Speech Server";digg_bgcolor = "#FFFFFF";digg_skin = "normal";&lt;/SCRIPT&gt;

&lt;SCRIPT type=text/javascript src="http://digg.com/tools/diggthis.js" mce_src="http://digg.com/tools/diggthis.js"&gt;&lt;/SCRIPT&gt;

&lt;SCRIPT type=text/javascript&gt;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;&lt;/SCRIPT&gt;
&lt;/DIV&gt;
&lt;P&gt;This blog has been moved to the following blog.&amp;nbsp; Why? I decided that I want to reactivate my Software Engineering Blog and this is fitting.&amp;nbsp; If you came here from DevSchool, I will make changes on that blog as well... 
&lt;P&gt;&lt;A href="http://blogs.msdn.com/socal-sam/archive/2009/01/30/checking-out-the-microsoft-speech-server.aspx"&gt;http://blogs.msdn.com/socal-sam/archive/2009/01/30/checking-out-the-microsoft-speech-server.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9309625" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/research/archive/tags/Fun/default.aspx">Fun</category><category domain="http://blogs.msdn.com/research/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/research/archive/tags/Science/default.aspx">Science</category><category domain="http://blogs.msdn.com/research/archive/tags/Electrical+Engineering/default.aspx">Electrical Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/Engineering/default.aspx">Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/Microsoft+Developers+Network/default.aspx">Microsoft Developers Network</category><category domain="http://blogs.msdn.com/research/archive/tags/MSDN+Academic+Alliance/default.aspx">MSDN Academic Alliance</category><category domain="http://blogs.msdn.com/research/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/research/archive/tags/Microsoft+Speech+Server/default.aspx">Microsoft Speech Server</category><category domain="http://blogs.msdn.com/research/archive/tags/Servers/default.aspx">Servers</category><category domain="http://blogs.msdn.com/research/archive/tags/MSDNAA/default.aspx">MSDNAA</category></item><item><title>F#, Imperative Languages and Identifiers</title><link>http://blogs.msdn.com/research/archive/2008/12/29/f-imperative-languages-and-identifiers.aspx</link><pubDate>Tue, 30 Dec 2008 00:21:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9256188</guid><dc:creator>SoCal Sam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/research/comments/9256188.aspx</comments><wfw:commentRss>http://blogs.msdn.com/research/commentrss.aspx?PostID=9256188</wfw:commentRss><description>&lt;p&gt;OMG!&amp;nbsp; I got pulled off my usual job of doing a bunch of things and have been focused on getting students involved in the Imagine Cup Software Design Invitational in the United States.&amp;nbsp; Then it was Christmas and I ate to many cookies, etc.&amp;nbsp; Finally I ignored my one comment from a int19h, and when you get as few comments as I do, everyone is precious!&lt;/p&gt; &lt;p&gt;Int19h ask about my previous blog:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;"This is one of the differences between functional programming (F#, OCAML) and imperative&amp;nbsp; programming (C#, VB.NET, Java), the concept of identifiers is not really supported in the imperative languages, although there are constants. &lt;p&gt;Can you explain what you mean by "the concept of identifiers is not supported"? Try as I might, I cannot parse this in such a way as to produce some meaning."&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Fair enough int19h, just what in the heck was I saying?&amp;nbsp; Well, if I had wrote my next blog on the day I thought about it, instead of focusing like a laser on getting the students involved with Imagine Cup (hopefully my manager is reading that!).&amp;nbsp; The concept of the identifier in F# could be explained with this quote from Chris Smith's blog entry,&amp;nbsp; &lt;a target="_blank" href="http://blogs.msdn.com/chrsmith/archive/2008/05/09/f-in-20-minutes-part-ii.aspx"&gt;F# in 20 Minutes&lt;/a&gt;: &lt;blockquote&gt; &lt;p&gt;"...using the term ‘value’ to refer to &lt;u&gt;identifiers&lt;/u&gt; rather than ‘variable’.&amp;nbsp; The reason for this is that types in F# are immutable by default, meaning that once they are created they cannot be changed. This may seem like a severe limitation, but immutability actually prevents &lt;a href="http://blogs.gotdotnet.com/jomo_fisher/archive/2007/05/16/leaky-functions-barrel-of-bugs.aspx"&gt;some classes of bugs&lt;/a&gt;. In addition, immutable data is inherently thread safe meaning you don’t need to worry about sync locks in order to make your code parallelizeable."&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;What is an "Identifier"?&amp;nbsp; Identifiers give names to values in F# for reference later in a program.&amp;nbsp; You would use the keyword 'let', in the following manner, no semi-colon:  &lt;blockquote&gt; &lt;p&gt;let x = 15&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;When a value is assigned to an identifier, it never changes in a functional program. The style is to refer to this construct as identifiers and not variables, see the book "Foundations of F#", by Robert Pickering. &lt;p&gt;Functions and Values in F# are treated exactly the same, also, functions in F# supports passing less arguments than the function supports, which is referred to as partial or curried functions.&amp;nbsp;&amp;nbsp; For more information on this see&amp;nbsp; this excellent &lt;a target="_blank" href="http://weblogs.asp.net/podwysocki/archive/2008/02/21/adventures-in-f-f-101-part-2.aspx"&gt;Podwyski's blog entry&lt;/a&gt;. &lt;p&gt;&amp;nbsp; &lt;p&gt;Are you interested in loading up F# and Visual Studio&amp;nbsp; but don't want to buy or load the full version of Visual Studio?&amp;nbsp; This is a great way to learn about the Visual Studio Shell and to get started with F#, if you have VS Pro or VS team system, then you only need to load up F#, unless you want to add Visual Studio Shell to your development tools, go ahead and load it. &lt;p&gt;First download and install the Visual Studio Shell: &lt;blockquote&gt; &lt;p&gt;&lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=40646580-97FA-4698-B65F-620D4B4B1ED7&amp;amp;displaylang=en"&gt;Microsoft Visual Studio 2008 Shell (integrated mode) Redistributable Package&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Then download and install F# CTP: &lt;blockquote&gt; &lt;p&gt;&lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=61ad6924-93ad-48dc-8c67-60f7e7803d3c&amp;amp;displaylang=en"&gt;Microsoft F#, September 2008 Community Technology Preview&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Have fun, make sure to check out the various blogs out there, so much good stuff, so little time!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9256188" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/research/archive/tags/Research/default.aspx">Research</category><category domain="http://blogs.msdn.com/research/archive/tags/eScience/default.aspx">eScience</category><category domain="http://blogs.msdn.com/research/archive/tags/Fun/default.aspx">Fun</category><category domain="http://blogs.msdn.com/research/archive/tags/simulations/default.aspx">simulations</category><category domain="http://blogs.msdn.com/research/archive/tags/Science/default.aspx">Science</category><category domain="http://blogs.msdn.com/research/archive/tags/Electrical+Engineering/default.aspx">Electrical Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/Engineering/default.aspx">Engineering</category></item><item><title>F# variables or a return to BASIC?</title><link>http://blogs.msdn.com/research/archive/2008/12/05/f-variables-or-a-return-to-basic.aspx</link><pubDate>Sat, 06 Dec 2008 03:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9180847</guid><dc:creator>SoCal Sam</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/research/comments/9180847.aspx</comments><wfw:commentRss>http://blogs.msdn.com/research/commentrss.aspx?PostID=9180847</wfw:commentRss><description>&lt;P&gt;In the example I used in the past post utilized the "let" command and it didn't have any data&amp;nbsp;type, what's up with that?&amp;nbsp; Oh it gets worse, the identifier (not variable) are immutable.&amp;nbsp; That is the memory location of the identifier cannot be modified.&amp;nbsp; To create an mutable identifier you have to declare the identifier as mutable.&amp;nbsp; This is one of the differences between functional programming (F#, OCAML) and imperative&amp;nbsp; programming (C#, VB.NET, Java), the concept of identifiers is not really supported in the imperative languages, although there are constants.&amp;nbsp; This is not to say that F# doesn't support imperative programming, F# is object oriented, but it's focus on the functional approach to programming.&lt;/P&gt;
&lt;P&gt;Identifiers are interesting, and to continue the discussion about solving engineering problems, we definitely will need to deal with functions.&amp;nbsp; Functions easy to work with in F#, and we will take a look at functions in the next episode of the blog, mainly because I need to work on my game blog at &lt;A href="http://blogs.msdn.com/devschool" mce_href="http://blogs.msdn.com/devschool"&gt;http://blogs.msdn.com/devschool&lt;/A&gt;, where you can learn how to build a game for a Christmas Present this year!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9180847" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/research/archive/tags/Research/default.aspx">Research</category><category domain="http://blogs.msdn.com/research/archive/tags/eScience/default.aspx">eScience</category><category domain="http://blogs.msdn.com/research/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/research/archive/tags/Xbox/default.aspx">Xbox</category><category domain="http://blogs.msdn.com/research/archive/tags/Science/default.aspx">Science</category><category domain="http://blogs.msdn.com/research/archive/tags/Electrical+Engineering/default.aspx">Electrical Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/Engineering/default.aspx">Engineering</category></item><item><title>Using F# to solve a standard engineering problem</title><link>http://blogs.msdn.com/research/archive/2008/12/03/using-f-to-solve-a-standard-engineering-problem.aspx</link><pubDate>Thu, 04 Dec 2008 00:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9172027</guid><dc:creator>SoCal Sam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/research/comments/9172027.aspx</comments><wfw:commentRss>http://blogs.msdn.com/research/commentrss.aspx?PostID=9172027</wfw:commentRss><description>&lt;P&gt;F# has many interesting features, such as the use of lists, maps, and so forth. There are many blogs and websites dedicated to discussing the computer science side of F#, and for good reason the language supports these types of efforts. However, what about the rest of the computational users, for instance engineering students who are studying physics and want to generalize their homework problems in case they can use them when they are interns or are working after the leave school. After all, the homework that you do does serve a purpose other than getting a grade in class. 
&lt;P&gt;Please note that any discussion about using F# in my blogs are simply to illustrate the use of F# and not to make a statement that it is better than any other language or system such as Mathematica or Matlab, in fact F# is designed to work with those products as a friendly kind of language. 
&lt;P&gt;To get started, let’s take a look at how one F# can be used a very basic Ohm’s Law problem. 
&lt;P&gt;Let's take a look at a simple problem of electrical resistance. 
&lt;P&gt;Using Ohm’s law, Voltage= Current divide by Resistance or V=IR. If we know the total resistance and voltage, then current equals voltage divided by total resistance. 
&lt;P&gt;Let's use a circuit made up of three resistors that equal 40 ohms, 50 ohms and 60 ohms that are connected to a voltage source&amp;nbsp; of 3 volts. To determine the current then I would divide the total voltage by the total resistance. 
&lt;UL&gt;
&lt;LI&gt;The equation would look like: current = voltage/(Resistor1 + Resistor2 + Resistor3).&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Let’s write a simple F# program and a C# program to do the calculation:&lt;/P&gt;
&lt;P&gt;Both sets of code look pretty much the same, and if we want to use it to solve circuits, we would have to insert the new values every time. In the next blog entry, we will take a look at using Excel for our input system.&amp;nbsp; It isn't pretty, nor is it practical, but it does give us a basis of a simple application that can be built on over a number of blogs.&amp;nbsp; Like many academic 
&lt;TABLE border=5 cellSpacing=0 cellPadding=2 width=697&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=206&gt;
&lt;P&gt;F# form of the calculation 
&lt;P&gt;(Formatting is correct)&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=481&gt;
&lt;P&gt;C# form of the calculation 
&lt;P&gt;(Formatting is correct)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=206&gt;
&lt;P&gt;#light 
&lt;P&gt;open&lt;B&gt; System&lt;/B&gt; 
&lt;P&gt;let&lt;B&gt; v1=3.0&lt;/B&gt; 
&lt;P&gt;let&lt;B&gt; r1=40.0&lt;/B&gt; 
&lt;P&gt;let&lt;B&gt; r2=50.0&lt;/B&gt; 
&lt;P&gt;let&lt;B&gt; r3=60.0&lt;/B&gt; 
&lt;P&gt;let&lt;B&gt; i1=v1/(r1+r2+r3)&lt;/B&gt; 
&lt;P&gt;Console.WriteLine(i1) 
&lt;P&gt;Console.Read()&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=481&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt; System;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;SeriesResistance&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Main(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;[] args)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt; v1 = 3;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt; r1 = 40;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt; r2 = 50;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt; r3 = 60;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt; i1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;i1 = v1 / (r1 + r2 + r3);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.WriteLine(i1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.Read();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-bidi-font-size: 8.0pt; mso-no-proof: yes; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;problems we are starting simple, but since we are talking about real components like resistors that you might buy from Radio Shack or Fry's, there could be variations in values, the battery could vary between 2.50 volts (Ni-Cads) and 3.0 volts (Alkaline), plus the battery will vary with use as well.&amp;nbsp; How do we model this kind of variations.&amp;nbsp; How can we improve the input of the resistors, etc.&amp;nbsp; 
&lt;P&gt;If you want to learn more about F# and how to use it to do lists, etc. take a look at the other blogs such as Don Syme, Chris Smith and &lt;A href="http://www.hubfs.com/" mce_href="http://www.hubfs.com"&gt;http://www.hubfs.com&lt;/A&gt;. This blog will be utilize for me to figure out how to use F# to solve engineering and scientific problems that non-computer science and computer science students both might be interested in.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9172027" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/research/archive/tags/Research/default.aspx">Research</category><category domain="http://blogs.msdn.com/research/archive/tags/eScience/default.aspx">eScience</category><category domain="http://blogs.msdn.com/research/archive/tags/Fun/default.aspx">Fun</category><category domain="http://blogs.msdn.com/research/archive/tags/simulations/default.aspx">simulations</category><category domain="http://blogs.msdn.com/research/archive/tags/Science/default.aspx">Science</category><category domain="http://blogs.msdn.com/research/archive/tags/Electrical+Engineering/default.aspx">Electrical Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/Engineering/default.aspx">Engineering</category></item><item><title>Happy Birthday John Blackus, inventor of FORTRAN</title><link>http://blogs.msdn.com/research/archive/2008/12/02/happy-birthday-john-blackus-inventor-of-fortran.aspx</link><pubDate>Wed, 03 Dec 2008 08:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9168386</guid><dc:creator>SoCal Sam</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/research/comments/9168386.aspx</comments><wfw:commentRss>http://blogs.msdn.com/research/commentrss.aspx?PostID=9168386</wfw:commentRss><description>&lt;P&gt;Dec. 3 is the birthday of John Blackus, he was one of the principle inventors of FORTRAN, see the article found at: &lt;A href="http://en.wikipedia.org/wiki/FORTRAN" mce_href="http://en.wikipedia.org/wiki/FORTRAN"&gt;http://en.wikipedia.org/wiki/FORTRAN&lt;/A&gt; 
&lt;P&gt;In my opinion, John Blackus best quote describing a motivation to continue to create programming systems: 
&lt;UL&gt;
&lt;LI&gt;· “Much of my work has come from being lazy. I didn't like writing programs, and so, when I was working on the &lt;A href="http://en.wikipedia.org/wiki/IBM_701" mce_href="http://en.wikipedia.org/wiki/IBM_701"&gt;IBM 701&lt;/A&gt; (an early computer), writing programs for computing missile trajectories, I started work on a programming system to make it easier to write programs."&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;John Blackus received the Turing Award for his work in creating FORTRAN in 1978 and used the award to describe his thoughts on what a formal functional language could look like.&amp;nbsp; Click on the link to his paper/speech "&lt;A href="http://www.stanford.edu/class/cs242/readings/backus.pdf"&gt;Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs&lt;/A&gt;". 
&lt;P&gt;Also, historically, John Blackus, invented one of the first high level languages for IBM machines called "speedcoding" in 1953, and the short article is fun to read and gives a historical perspective on floating point calculations: &lt;A href="http://www.softwarepreservation.org/projects/FORTRAN/paper/p4-backus.pdf" mce_href="http://www.softwarepreservation.org/projects/FORTRAN/paper/p4-backus.pdf"&gt;http://www.softwarepreservation.org/projects/FORTRAN/paper/p4-backus.pdf&lt;/A&gt;. 
&lt;P&gt;Finally, if you think you could use more memory, read about the memory on the IBM 701 that John Blackus was working with at: 
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://en.wikipedia.org/wiki/IBM_701" mce_href="http://en.wikipedia.org/wiki/IBM_701"&gt;IBM 701&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://en.wikipedia.org/wiki/Williams_tube" mce_href="http://en.wikipedia.org/wiki/Williams_tube"&gt;Williams Tube Memory&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The languages that John Blackus created were powerful and with FORTRAN long lasting, FORTRAN continues to be used in legacy scientific applications today, and was used extensively for 40 years after it's invention.&lt;/P&gt;
&lt;P&gt;My challenge to you: How would you create a new language that helps you solve problems important to your career?&amp;nbsp; 
&lt;UL&gt;
&lt;LI&gt;One way to get started on creating new languages would be read the article on &lt;A href="http://msdn.microsoft.com/en-us/library/bb126278.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb126278.aspx"&gt;Domain Specific Languages&lt;/A&gt;.&amp;nbsp; 
&lt;LI&gt;You can create programming languages that solve the problems that affect your life.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;John Blackus was a pioneer in creating languages that were used by scientists and engineers to design the systems used by the American space program to reach the moon and beyond.&lt;/P&gt;
&lt;P&gt;This is the type of research that drives the current world economy, and you can do your own research in languages using the &lt;A href="http://msdn.microsoft.com/en-us/library/bb126278.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb126278.aspx"&gt;Domain Specific Languages&lt;/A&gt;.&amp;nbsp; F# was used to create the solver foundation, and example of Domain Specific Languages, check it out at:&lt;A href="http://code.msdn.microsoft.com/solverfoundation/Release/ProjectReleases.aspx?ReleaseId=1799" mce_href="http://code.msdn.microsoft.com/solverfoundation/Release/ProjectReleases.aspx?ReleaseId=1799"&gt;F# Optimization Modeling Language Utilizing Microsoft Solver Foundation&lt;/A&gt; 
&lt;P&gt;Have fun, create your own language or try out F#, a functional language!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9168386" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/research/archive/tags/Research/default.aspx">Research</category><category domain="http://blogs.msdn.com/research/archive/tags/Fun/default.aspx">Fun</category><category domain="http://blogs.msdn.com/research/archive/tags/simulations/default.aspx">simulations</category><category domain="http://blogs.msdn.com/research/archive/tags/Science/default.aspx">Science</category><category domain="http://blogs.msdn.com/research/archive/tags/Electrical+Engineering/default.aspx">Electrical Engineering</category><category domain="http://blogs.msdn.com/research/archive/tags/Engineering/default.aspx">Engineering</category></item></channel></rss>