Introduction to programming with dependent types in Scala | Open Awesome