
Many aspects of Data Science rely on computers to do the heavy lifting for computing results, handling data, etc. With larger datasets, it becomes crucial that such computations and the handling of data are performed efficiently in terms of the time needed for the computations and the space used to store the data.
In this course, you will develop basic skills and knowledge to create, select and reason about efficient algorithms and data structures. For this, we consider different basic algorithms and data structures for frequently appearing problems, techniques for designing efficient algorithms, how to establish that an algorithm is correct by a mathematical proof, and how to analyze the efficiency of an algorithm or data structure.
Students will learn about basic algorithms and data structures, and how to select an algorithm or data structure for a given task. These include
 arrays, lists, stacks and queues,
 searching and sorting algorithms,
 search trees,
 hash tables,
 heaps,
 and basic graph algorithms.
In addition, students will learn how to design simple algorithms using techniques like incremental algorithms and divide&conquer, how to prove that an algorithm is correct, and how to analyze algorithms and data structures in terms of their efficiency.
So, after this course, students are able to:
 understand basic algorithms and data structures
 select an algorithms or data structure for a given task
 design simple algorithms using different techniques (e.g. incremental algorithms and divide&conquer)
 prove that an algorithm is correct
 analyze algorithms and data structures in terms of their efficiency
Assessment
The course will be based on a formal exam and practical assignments.



Students will learn about basic algorithms and data structures, and how to select an algorithm or data structure for a given task. These include
 arrays, lists, stacks and queues,
 searching and sorting algorithms,
 search trees,
 hash tables,
 heaps,
 and basic graph algorithms.
In addition, students will learn how to design simple algorithms using techniques like incremental algorithms and divide&conquer, how to prove that an algorithm is correct, and how to analyze algorithms and data structures in terms of their efficiency.
Type of instructions
Lectures and labs/instructions
Compulsory Reading
 The class notes and material from reference books will be used in this course..
Specifics
This course is part of the premaster’s program Data Science and Entrepreneurship, consisting of:
 JBP021B6 Programming
 JBP031B6 Datastructures and Algorithms
 JBP041B6 Introduction to Machine Learning
 JBP051B6 Foundations of Databases
 JBP061B6 Statistics for Data Scientists
The courses from the Data Science and Entrepreneurship program require specific prior knowledge. It is only possible to participate in this course if approved by the admission committee and if you are enrolled for the program. Please note that this course will be taught in Mariënburg, ‘sHertogenbosch (JADS).
Minor students
Are you enrolled for a BSc program and you want to follow the courses of the premaster’s courses during your BSc program, this might be possible as a minor student (in Dutch: bijvakstudent). A hard requirement is that your examination program (as presented in your study programs Education and Examination Regulations (in Dutch: OER)) contains at least 10 ECTS in Mathematics and 10 ECTS in Statistics. Do you want to know if you are eligible? Contact the admissions officer (admissionsmdatascience@tilburguniversity.edu).
Incoming exchange students
For incoming exchange students: you should have passed at least 10 ECTS in Mathematics and 10 ECTS in Statistics in order to be eligible for this course





Course available for exchange students 
Conditions of admission apply 
  Required materialsRecommended materialsTestsAssignment (40%)
 Exam (60%)
 Final grade


 