Discrete structures, logic, and computability