Introduction to programming with dependent types in Scala
Offered By: Stepik
Course Description
Overview
This course is an introduction to type theory, homotopy type theory (HoTT), dependent-type programming, type-level programming, and theorem proving using Scala. It covers such topics as dependent types (including path dependent types), type families, sum and product types, functions, dependent Σ- and Π-type, inductive types, identity type, type classes, eliminators (recursion and induction), β-reduction, η-conversion, Curry–Howard isomorphism, programming at type level.
Syllabus
- Installing software
- Boolean type
- ProvingGround DSL
- Type of natural numbers
- Combining booleans and natural numbers
- List type
- Dependent types
- Type classes. Simulacrum
- Product type
- Co-product type (sum type)
- Function type
- Empty and unit types
- Type family List(A)
- Dependent pair type (Σ-type)
- Dependent function type (Π-type)
- Type of length-indexed vectors
- Heterogeneous list (HList)
- Matrices
- Identity type. Curry–Howard correspondence
- Eliminators into dependent types (induction)
- Type-level programming. Shapeless
Taught by
Dmytro Mitin
Related Courses
Radical and Type Theories in Organic Chemistry (1832-1850) - Lecture 22Yale University via YouTube Uncovering the Unknown - Principles of Type Inference in Programming Languages
ChariotSolutions via YouTube Univalence from a Computer Science Point-of-View - Dan Licata
Institute for Advanced Study via YouTube Univalent Foundations and the Equivalence Principle - Benedikt Ahrens
Institute for Advanced Study via YouTube Turing Award Recipient Dana S. Scott - Reflections on Logic and Computer Science - Part 4
Association for Computing Machinery (ACM) via YouTube