Apply Property-Based Testing to a Currency-Conversion Module
Overview
What this challenge is about.
Write F# property tests for a currency-conversion module, catch bugs with 10,000 cases each, and earn a verifiable certificate.
The scenario
The remittance app (around USD 90M transaction volume/year, regulated by CBN — Central Bank of Nigeria) had a USD 14k rounding-loss incident last quarter that the existing test suite did not catch.
The Brief
What you'll do, and what you'll demonstrate.
Rewrite a buggy currency-conversion module in F# and validate with property-based tests covering 12 named invariants the example-test suite missed.
Earning criteria — what you'll demonstrate
- Use units of measure to model currency types safely
- Identify and codify mathematical + business invariants for testing
- Apply property-based testing to a real production module
- Document the marginal value of property tests over example tests
Program Fit
Where this fits in your program.
Sharpens the same skills your degree expects you to demonstrate.
Functional Programming
Bachelor · Programming Languages
Strong alignment
This challenge maps to Functional Programming at the Bachelor level. It sharpens the same practical skills your coursework expects — but in a real industry context with actual constraints and deliverables.
Skills
Skills you'll demonstrate.
Each one shows up on your verified credential.
- Fsharp
Apply fsharp to solve real industry problems and demonstrate production-level capability.
- Property Based Testing
Apply property based testing to solve real industry problems and demonstrate production-level capability.
- Fscheck
Apply fscheck to solve real industry problems and demonstrate production-level capability.
- Units Of Measure
Apply units of measure to solve real industry problems and demonstrate production-level capability.
- Pure Functions
Apply pure functions to solve real industry problems and demonstrate production-level capability.
- Type Driven Design
Apply type driven design to solve real industry problems and demonstrate production-level capability.
Careers
Career paths this challenge builds toward
Completing this challenge demonstrates skills that transfer directly to these roles: