Describir: Discrete mathematics with algorithms