Connects logical languages with complexity classes through descriptive complexity. Learners use fragments of first-order and fixed-point logic to characterize computational resources and express graph properties.