This course aimed at students with beginner to intermediate skill in F#, basic understanding of the F# syntax and a light functional understanding would be beneficial. You'll also need a computer with Linux, OSX or Windows with F# installed and an internet connection.
Have you wanted to understand how to 'do' machine learning or implement algorithms from a textbook in a programming language, or deploy a library to Nuget? Well, this course includes sections on machine learning using a mathematical theorem known as Bayes' Theorem.
What will we do?
We will complete two F# project together,
What is f#?
F# is a mature, functional-first language especially well suited to computer science, machine learning, distributed computing and web applications too. There really is no limit to what F# can do for you!
We’ve structured the course to make learning all the material as easy and accessible as possible. We’ll challenge you to complete an F# programming task in every video to make sure you’ve got a great grip on all the concepts. But don’t worry, because after every challenge, we’ll also walk you through a solution line by line.
We have structured the course to introduce you to some computer science concepts, but to also encourage you to spend your own time to gain further insights into the concepts we introduce you to.
If you want to program with a language that has computer science at its heart and want to future proof your learning then this course is for you.
Welcome to the section where you will learn how to use some of the common building blocks that the .Net ecosystem can provide. Not only will you be exposed to F# but you will also get a taste for some unit testing with a popular F# unit testing library and NUnit. You will learn how to publish your very own library to Nuget too.
In this section, you’ll learn how to handle text based data while writing a shareable predictive text library in F#, we will cover the following areas:
In this lecture we explain how you can load text in the an array of strings and you will end up loading the entire dictionary of 100000 words.
Being able to find words within this large block of text is essential if we are going to be able to predict what words a user is trying to type. In this video, we demonstrate how to use the Array.filter <’T’> higher order function to filter words by prefix and show you how to create the API function signature to enable autocomplete. We’ll turn the code into a module and see the solution work in the FSI.
When you write code that will be used by other developers it is useful for them to recognise common conventions because they have an idea how the code should be used. In this lecture we show a few of the conventions that are useful for .Net developers who will expect your code to conform to these conventions.
During the course of this lecture we will give you a taste of the FsUnit testing library that you can obtain via Nuget, you will be up and testing in no time.
We said that you can use your F# code within other .Net projects, in the lecture we demonstrate this. You will have your library running in VB.Net and C#
In this lecture we walk you through the steps required to begin creating a Nuget library that you can share with other developers, setting up your account, and accessing your own API key to start pushing your very own packages to Nuget.
Now you are ready to start pushing your library to Nuget, so others can benefit from your efforts. Follow along with this walkthrough and learn to deploy to Nuget.
So now you have your library up in Nuget world, let's download it to a series of projects in different languages and use it.
We have downloaded our library from Nuget, now it is time to write a test harness around it and use the command line to query our predictive text library.
Well done! You have completed this course, let's take a moment to reflect on what we have done and find out where to go next to build upon this platform.
In this video you’ll learn the basics for writing a program that can be trained to recognise spam based on the features of spam. We define a clear interface to work from by creating a new project for our classifier, defining the type of our main classification method, and by clearly defining the boundaries of our project.
This lecture shows you the steps you’ll need to take to measure the accuracy of the classifier and how to write the algorithm to make it possible. You'll learn how to measure the output of the classifier and how to compare those results against the already pre-labelled messages.
In this video we learn how to test the accuracy rate of our dummy classifier using real world data. You will be challenged to use the real dataset we downloaded earlier to test our classifier.
Care needs be taken when training your classifier to ensure that it does not become too reliant on the training sample. In this lecture we explain the problem and show you how to avoid biasing your classifier toward your training sample.
For Bayes' Theorem to be applied to our dataset we will need our words, or tokens, to be labelled appropriately with 'HAM' or 'SPAM' so we can calculate their occurring frequences. This lecture explains why this is needed and how to write the working set of functions to make it possible.
In this video, we finish the classifier by using the probability functions we have developed so far. We then test our classifier for accuracy and discuss how high the accuracy is and some of the things we could do to improve it further.
In this video we import the Argu package, which we will use later to parse command line arguments, and we then clean up the code to prepare for the changes needed to control our program using command line arguments.
In this video, we use the Argu package to parse command line arguments and accept a message to classify on the command line. This completes our project.
I have been a passionate software engineer since 2002 and have worked for companies such as The AA, Volkswagen Financial Services and Compare the Market, to name but a few.
I discovered programming when I was 18 and taught myself web development and Java and then moved into the .NET world in 2003. I now run the Cambridge F# User Group and co-organise the Cambridge DDD Nights User Group, both meet on a monthly basis.
My love of programming has given me the opportunity to experience various programming languages but I have happily settled on F# and I am now a proud sustaining member of the F# Software Foundation.