SMS: Discrete mathematics with algorithms