Scientific Computing with F#
This talk explores the initial motivation behind building F# as a viable language for scientific computing, and how far the ecosystem around F# has come, to realize this. We'll also dive into how F# interacts with other languages such as Python, R and Julia, in order to "cannibalize" their respective libraries. We'll also do some quick live-coding, where I'd walk the participants through running some quick ML algorithms in F#, work on a bit of symbolic computing, as well as use F# to hook into libraries in Python, R and Julia for situations where similar libraries for F# don't exist.
Outline/structure of the Session
1. We kick it off with a quick introduction to F#, and what motivated Don Syme and his team at Microsoft Research to pursue its development.
2. We'll do a 5-minute dive into F#'s syntax. We'll also talk about how it can run on multiple platforms including most Linux distros and OSX, to show how anyone can get started with the language.
3. Now we'll start exploring multiple libraries. We'll start off with Math.NET, a nifty project that encompasses a lot of fields. I'd do demos with Math.NET Numerics for linear algebra, probability models and the like. Then I'd move on to a couple of demos using Math.NET Symbolics, for symbolic computation. I'd finally wrap up this section with Math.NET Filtering, for signal processing.
4. Now I'll touch upon the Accord.NET ML Framework. We'll work on some walkthroughs that show participants how one can quickly get started with clustering, classification, regression and kernel methods in F#, as well as probabilistic modeling and hypothesis testing.
5. Now, a quick segment on how one can call into libraries in other languages such as Julia, R or Python, using F#, for scenarios where libraries for F# don't exist. I'll also try and showcase the F# kernel for the Jupyter Notebook, which is a powerful tool for F# power-users.
6. I'd finally wrap up with a brief note on where I feel the F# language is headed, as well as things I feel are missing from the language and the ecosystem around it.
The biggest learning outcome from this talk is that F# isn't like other .NET languages, and thus, shouldn't be treated with the same kind of disdain that other .NET languages receive. F# is a robust and mature functional language, and it can be a powerful tool for computational scientists. I'd like this talk to underscore this point, and also demonstrate how easy it is, to get started with this gorgeous language, no matter what language you've used before.
Programmers, Computational Scientists, Functional Programming Buffs