3:30 PM Saturday Room: 5502
Sometime in 2010, after years of C# development, I discovered F#, and found programming in a functional style both tricky and fun. Inspired by an article on Artificial Bee Colony algorithms, an optimization algorithm based on the intelligent foraging behaviour of honey bee swarms, I decided as a learning project to convert it from C# into a F# library, Bumblebee, which is available open-source at http://bumblebee.codeplex.com.
In this talk, I want to do 4 things:
1) cover the basics of Artificial Bee Colony algorithms, and illustrate what problems it can help solve,
2) solve a problem together with Bumblebee, and use it as a F# primer,
3) open the hood and discuss some of the design aspects (making the API both F# and C# friendly, using the Task Parallel Library for parallelism, using OO and functional styles together, unit testing...)
4) share my learning experience transitioning from a C#-mindset to thinking F#.
This talk is particularly relevant for C# developers who are F#-curious! Knowing F# beforehand is not required, but a certain comfort with functional concepts (e.g. LINQ in C#) will help.
5:00 PM Saturday Room: 5502
If you want to prove that a complex system works, a good place to start is to check that each piece is working right. Unit testing intends to do just that: take a unit of your code, and verify that it behaves properly. Unfortunately, in “real” software, classes interact with other parts of the system, which makes testing in isolation difficult.
Mocking is a technique designed to overcome that issue: replacing dependencies by Mocks, lightweight versions of the “real thing”, allows you to validate the interactions of a class with its “collaborators”.
I will discuss reasons you should care about mocks, illustrate how you would go about addressing them by rolling your own mocks & stubs, and demonstrate free, open-source frameworks, Moq, Rhino.Mocks and NSubstitute, which greatly simplify the process. Mocks and Stubs can sound intimidating – the goal of this presentation is to demystify the topic and give you a clear understanding of what they are, where they can help you, and to give you a good quick-start so that you can productively use them in your own code.