nl en

Foundations of Computer Science


Admission requirements

Not applicable.


Computer science has its roots in mathematics, mathematical reasoning, and mathematical structures. Of particular relevance are concepts and elements from topics of set theory, elementary mathematics, graph theory, combinatorics and number theory. These branches of mathematics, sometimes collectively called “discrete mathematics” deal with discrete objects, as opposed to say calculus which deals with continuous objects.
In this course, we will explore the basics of discrete mathematics and its role the foundations of computer science. For example, we will discuss sets, relations and functions which form the basic objects for an exact specification of what a computing system does. Graphs and trees allow us to represent networks, and to construct and understand various types of algorithms and database structures. Mathematical induction is a key tool to analyze the efficiency of programs. Finally, we will explore the basics of formal languages and finite automata, which allow us to provide clean mathematical descriptions of what computation is, at its core.

Course objectives

The broad objective is to introduce the basic mathematical elements which are a pre-requisite for many computer science fields, and to introduce the basic examples of formal descriptions, abstraction and proof techniques.
At the end of the course the successful student will:
-understand the basic mathematical structures appearing in computer science
-be able to compute basic combinatorial and counting problems, solve graph-theoretic problems, use induction to solve basic recursive problems, and solve basic problems involving formal languages and simple automata.
-know working examples of applications of the underlying mathematics to computer science problems.


The most updated version of the timetables can be found on the students' website:

Mode of instruction

Lectures and exercise classes.

Assessment method

Students will be evaluated by means of a mid-term and final exam.
In the case the students do not attend the mid-term, or fail to get a grade larger or equal to 5.0, the final grade is the grade of the final exam. In the case the students get a grade y ≥ 5.0 (greater or equal to 5.0) on the mid-term, then the final grade is the final exam grade plus y/10. So, if the final exam grade is x, the final grade will be given with x+(y/10) if y ≥ 5.0, and x otherwise.

Reading list

Schaum's Outline of Discrete Mathematics (3rd edition), by Seymour Lipschutz, Marc Lipson. ISBN 9780071615860.
Some additional pieces of lecture notes, assignments and slides will be provided as the course progresses.


Aanmelding voor vakken verloopt via uSis. Hiervoor is de uSis-code van het vak nodig, die te vinden zijn in de Studiegids. Meer info over het inschrijven voor vakken of tentamens is hier te vinden.


In MyTimetable kun je alle vak- en opleidingsroosters vinden, waarmee jij je persoonlijke rooster kunt samenstellen. Onderwijsactiviteiten waarvoor je in uSis staat ingeschreven, worden automatisch in je rooster getoond. Daarnaast kun je My Timetable gemakkelijk koppelen aan een agenda-app op je telefoon en worden roosterwijzigingen automatisch in je agenda doorgevoerd; bovendien ontvang je desgewenst per e-mail een notificatie van de wijziging.

Vragen? Bekijk de video-instructie, lees de instructie of neem contact op met de ISSC helpdesk.


Inschrijving voor vakken verloopt via uSis. Wanneer je je hier inschrijft voor een bepaald vak krijg je automatisch ook toegang tot de omgeving van dit vak via Brightspace.

Voor meer informatie over Brightspace kun je op deze link klikken om de handleidingen van de universiteit te bekijken. Bij overige vragen of problemen kan contact opgenomen worden met de helpdesk van de universiteit Leiden.


Onderwijscoordinator Riet Derogee


Course announcements and additional materials will be provided on this [website]