Enforcing historical research and teaching with computational thinking and metaphoric abstraction