Software engineering
Computer programming
Computing
Type theory
Data types
Functional programming
Subroutines
Lambda calculus
Subtyping
Const
Unification
Type system