# Teaching 2019-12-23.

Tip! We recommend typesetting homework solutions in $\LaTeX$. You may want to use our Overleaf template, which will get you started in no time!

The following courses are taught by members of the Applied Geometric Algorithms group in the academic year 2019-2020.

• 2IHA10 Algorithms and Data Structures
Lecturer: Arthur van Goethem
In this course, you will develop basic skills and knowledge to create and reason about efficient algorithms to solve computational problems. To be able to reason about algorithms efficiently we first consider the structure and textual form of formal proofs. We then explore different basic algorithms and data structures for frequently appearing problems, using the proving techniques learned to show their correctness. We consider basic algorithm design techniques, correctness analysis, and efficiency analysis of algorithms.
• 2IL50 Data Structures
Lecturer: Bettina Speckmann
There are many aspects to the study of data structures, and the algorithms that operate upon them. In this course, you will learn the basic skills and knowledge to develop efficient algorithms to solve computational problems and to make informed choices between different solutions for the same problem.
• 2IMA15 Geometric Algorithms
Lecturers: Kevin Buchin and Irina Kostitsyna
In many areas of computer science such as robotics, computer graphics, virtual reality, and geographic information systems, it is necessary to store, analyze, and create or manipulate spatial data. This course deals with the algorithmic aspects of these tasks: we study techniques and concepts needed for the design and analysis of geometric algorithms and data structures. Each technique and concept will be illustrated on the basis of a problem arising in one of the application areas mentioned above.
• 2IMG00 Seminar Applied Geometric Algorithms
Lecturer: Irina Kostitsyna
This seminar focuses on one specific area in the field of applied algorithms. This year, we will examine selected areas of robotics and distributed systems, including such fields as multi-robot systems, programmable matter, and self-assembly. These new and emerging areas have sparked the interest of researchers in the algorithms community. During the course of this seminar the students will learn about recent developments in design and analysis of algorithms in application to these areas.
• 2IMG10 Topological Data Analysis
Lecturer: Kevin Verbeek
Topological data analysis is an approach to the analysis of datasets using techniques from topology. One of the key messages around topological data analysis is that data has shape and the shape matters. Extraction of information from datasets that are high-dimensional, incomplete and noisy is generally challenging. Topological data analysis provides a general framework to analyze such data in a manner that is insensitive to the particular metric and provides dimension reduction and robustness to noise. The application of topological techniques to traditional data analysis, which before has mostly developed on a statistical setting, has opened up new opportunities. This course is intended to cover the basics of computational topology that underlie such techniques along with the developments of generic techniques for various topology-centered problems.
• 2IMG15 Algorithms for Geographic Data
Lecturer: Wouter Meulemans
A significant part of today's data is geographic, has a geographic component (is geo-referenced), or benefits from geographic interpretation. To analyze these data requires advanced algorithmic tools. This course takes a data-driven perspective on algorithm design for geographic data.
• 2IT80 Introduction to Discrete Structures
Lecturers: Bettina Speckmann and Marcel Roeloffzen
In this course we will cover basic discrete mathematical structures that occur in many contexts in computer science. You will learn the basic skills and knowledge to formally reason about these structures. Among others we will cover relations and ordering, counting arguments, and graphs and trees.

• JBI020 Foundations of Computing
Lecturer: Wouter Meulemans
Many aspects of Data Science rely on computers to do the heavy lifting for handling data, computing results, running simulations, etc. To effectively use the computer as a tool, this course provides the fundamental concepts to reason about what computers can and cannot compute. For certain problems exact solutions can be computed by algorithms, and we need methods to establish that an algorithm is correct, and to analyze its efficiency.

• JBI040 Algorithmic Aspects of Data Analysis
Lecturers: Mark de Berg and Marcel Roeloffzen
This course teaches students how data analysis problems can be formulated in precise mathematical terms, how to apply algorithmic techniques to solve the resulting optimization or decision problems, and how to implement the resulting algorithms. We will use an important data-analysis task, namely clustering, as a vehicle. The course will give an overview of different approaches to clustering, starting with evaluation metrics - how can we define what a good clustering looks like - and with a focus on algorithms for computing a clustering. We explore how certain data structures and algorithmic techniques can be used to gain considerable speedups. We will discuss how the curse of dimensionality affects the clustering problem, and discuss dimension-reduction techniques that can be used to mitigate these effects.