The course introduces the students to mathematical logic, fundamental discrete structures, such as: sets, functions, relations and graphs. Mathematical reasoning and various counting techniques are also covered in the course. Throughout the course students apply the techniques they learn to simplified practical problems. This course prepares the students for higher level computing courses where these concepts are of fundamental importance.