## Online Course Running Time: 10 Hours

**Quick Summary:**

**Lecture 1. Introducing F# and Functional Programming (Running Time: 1:45:40)**

Multiple Choice Quiz: Introducing F# and Functional Programming

Lecture 1 Discussion Forum

**Lecture 2. Working with Collections and Data Structures (Running Time: 1:47:28)**

Multiple Choice Quiz: Working with Lists and Data Structures

Lecture 2 Discussion Forum

**Lecture 3. Implementing Mathematical Calculations (Running Time: 1:53:52)**

Multiple Choice Quiz: Implementing Math Calculations using F#

Lecture 3 Discussion Forum

**Lecture 4. Explorative Data and Time-Series Analysis (Running Time: 1:42:43)**

Multiple Choice Quiz: Explorative Data and Time-Series Analysis

Lecture 4 Discussion Forum

**Lecture 5. Domain Specific Languages for Finance (Running Time: 1:35:05)**

Multiple Choice Quiz: Domain Specific Languages for Finance

Lecture 5 Discussion Forum

**Lecture 6. F# in the Larger Context (Running Time: 1:30:57)**

Multiple Choice Quiz: F# in the Larger Context: Integrating & Testing

Lecture 6 Discussion Forum

**Introduction:**

Self-Paced online course: F# and Functional Programming in Finance with Tomas Petricek

The complete series of video lectures is available for you to view and study and will appear in your members area.

**Course Outline:**

Functional-first programming in F# is an effective tool for solving complex problems that often arise in financial computing. The strong typing of F# provides important correctness guarantees and means that numeric code written in F# runs efficiently. Furthermore, a number of case-studies show that F# significantly reduces time-to-market, especially in the financial domain.

This course is a practical introduction to the F# language, functional programming and their use in the financial domain. You’ll learn about F#, fundamental functional concepts as well as libraries for numeric computing, data analysis. You’ll also become familiar with best practices for using F# tools and integrating F# with larger systems.

The course is practically focused. Throughout the course, we look at examples of time-series analysis, modelling and pricing of stock options and more. Each lecture provides a number of fun exercises that guide you through the problem. Furthermore, F# and functional programming makes you a better programmer even if you do not end up using the language immediately after the course.

**Outcomes:**

- How to approach problems from the functional perspective and capture your ideas using idiomatic F#.
- Model a problem domain, such as stock options, using functional types and develop domain specific languages (DSLs) for processing such domains.
- Use type providers to access data, perform interactive data and time-series analysis on financial data using the Deedle library and create charts to visualize the results.
- How to use F# within a larger context, including interoperability with R and best practices for the encapsulation of F# components for .NET.

**Lecture 1. Introducing F# and Functional Programming**

We quickly look at the main reasons for adopting F#. Why is it becoming popular in the finance industry and what are some successful case studies? Then we introduce the fundamental F# language features such as immutability, tuples and pattern matching.

**Lecture 2. Working with Collections and Data Structures**

This lecture introduces the most important functional pattern – processing of immutable data structures using higher-order functions. We finish the processing of historical stock prices from Yahoo! Finance, calculating statistics and visualizes the result with simple charts.

**Lecture 3. Implementing Mathematical Calculations**

F# makes it easy to turn mathematical equations to code. In this lecture we look at examples such as Monte-Carlo simulations, Black-Scholes equation and calculating historical volatility. You’ll learn how to avoid mistakes with units of measure, how to write efficient numerical code and how to use the rich Math.NET library.

**Lecture 4. ****Explorative Data and Time-Series Analysis**

Domain specific languages (DSLs) are an effective way of solving recurring problems. In this lecture, we build a DSL for pricing financial options and for detecting patterns in changing prices. You’ll learn how to model problem domain using functional data structures and how to build an easy to use library on top of the model.

**Lecture 5. ****Domain Specific Languages for Finance**

In this lecture we look at F# type providers and Deedle. Type providers make it easy to access data from sources including CSV and XML files, Excel, SQL databases and Web and REST services. Using Deedle we can then align multiple time-series and perform interactive analysis – such as comparing different industry sectors or calculating daily returns.

**Lecture 6. F# in the Larger Context**

We wrap up by looking at the ways for integrating F# in the broader context. This lecture explores how to call advanced statistical libraries using the R provider, how to use object-oriented programming to integrate with .NET and how to use F# tools and libraries for unit testing, building and documenting code.

**About the Presenter:**

**Tomas Petricek** is a long-term F# enthusiast, frequent conference speaker and an author of “Real-World Functional Programming”. He is a founder of DualNotion ltd. where he provides training and consulting services.

Tomas contributed to the development of F# as a contractor at Microsoft Research, authored Try F# tutorials on financial computing and recently spent 3 months in New York, working on financial data analytics tools for F# at BlueMountain Capital.

CPD Certification

You will be able to receive up to** 40 CPD points** **(10 hours of structured CPD and 30 hours of self-directed CPD)**taking this course.

The CPD Certification Service was established in 1996 as the independent CPD accreditation institution operating across industry sectors to complement the CPD policies of professional and academic bodies. The CPD Certification Service provides recognised independent CPD accreditation compatible with global CPD principles.