Next Sessions at SkillsMatter
- Real-World F# Programming
Next: 14 Mar 2012 in London
and 11 Jun 2012 in London
If you have any questions or if you’re interested in an on-site training, get in touch!
About the authors

Tomas Petricek is a long time F# enthusiast, using F# since the early Microsoft Research versions. He has been a Microsoft C# MVP since 2004, and together with Jon Skeet wrote Real-world Functional Programming. He also contributed to the development of F# during internships at Microsoft in Cambridge.

Phil Trelford is a Software Architect at an ISV supplying real-time electronic trading software. His career so far spans over 15 years, with experience in video games, leisure, retail and financial sectors. Phil’s recent commercial development work has been with C++, C#, SQL, JavaScript, and includes over 2 years developing F# applications at Microsoft.
Is this course for you?
If you’re architect, team leader, or a software developer who has some understanding of functional concepts, this Real-World F# Programming course is designed for you!
Note: The course can be tuned to fit your specific needs, typically when teaching the course to developers and architects in your company. For example, we can include more introductory material and focus only on some of the application areas. Contact us for more information!
Course labs & exercises
This is a very practical workshop focused on solving real-world problems. We’ll briefly present every application area and explain how we can benefit from F# concepts. Then we’ll guide you through the development of a realistic sample application.
Course prerequisites
This is an intermediate level workshop. In order to benefit the most from the course, you should have some previous knowledge of functional concepts and be familiar with basics of the F# syntax.
The prerequisites are completely covered by Tomas Petricek’s and Phil Trelford’s Functional Programming in .NET or by chapters 1-7 of Tomas Petricek’s Real-World Functional Programming.
Tomas Petricek and Phil Trelford’s two day course will teach you how to solve real-world .NET problems in F#. Will guide you through several areas where F# can help you be more productive and solve your problems faster, with code that is efficient and easy to maintain.The examples used in this course are based on experience of developing successful commercial applications in F#.In particular, you’ll learn how to benefit from functional concepts when writing concurrent applications; how to obtain, process and visualize data and how to easily solve seemingly complex algorithmic problems.
After attending the course, you’ll be able to recognize where using F# can save your time and money and you’ll know how to integrate F# components in the .NET ecosystem.
Learn how to
You’ll learn how to use and understand functional programming concepts and technologies in practice on the .NET platform.
- Use F# components in a larger .NET system
- Use agent-based programming to develop scalable concurrent applications and servers
- Express algorithms in a succinct functional way
- When to use embedded domain specific languages (DSLs) and how to create them in F#
- Download, explore and visualize data
If you work in one of the areas covered by the course, you’ll get immediately usable practical knowledge and code samples. If you don’t you’ll learn many advanced techniques that are necessary for any real-world F# programming.
Programme
Day 1 – Working with data & Concurrency
Processing and visualizing data
- Downloading and exploring data
- Defining the structure of data with F# types and units of measure
- Accessing data with F# 3.0 type providers
- Visualizing data using F# charting library
Concurrent and parallel programming
- Overview of parallel & concurrent technologies
- How to write scalable server-side applications with asynchronous workflows
- Concurrent programming with F# agents
- How F# asynchronous workflows relate to “async” in the futre version of C#?
Day 2 – Developing algorithms
Using domain specific languages (DSLs)
- Creating composable functional libraries
- When should I develop a DSL?
- Modelling problems from the financial domain
Distributed and scientific computations
- Implementing recommender system in F#
- Distributed parallelism with MPI.NET
Using F# with agile methodologies
- Using F# for writing .NET unit tests
- Specifying and testing behavior using functional Behavior Driven Development (BDD)


