Theoretical computer science
Computability theory
Recursion
Subroutines
Scheme
Algorithm
Structure and Interpretation of Computer Programs
Factorial