# Teaching

## Foundations of Computing II

Second year required course covering topics from discrete math and formal methods building the foundation of computing. The material of this course is pervasive in the areas of algorithms, data structures and programming but appears virtually in all areas of computer science as well. The course will cover topics such as, but not limited to, proof methods, formal languages, deterministic and nondeterministic finite automata, grammars and pushdown automata, Turing machines, computability, decidability and complexity, P and NP, NP-completeness.

**Learning outcome**: The goal of the course is to familiarize the student with formal methods of computing and their value for computer science and related disciplines, and to provide basic training in applying formal methods to many different kinds of problems. Students should learn the fundamental limits of computation and extend their knowledge on formal languages as well as on formal programming models. Principles of interference, deduction, induction and contradiction should regularly be applied to demonstrate the formal correctness of models and limits.

**Target groups**: Recommended for students in BSc from 3th semester and also for students in NF from 3th semester.

**Semester**: This course will be offered starting September 2021.

## Introduction to Data Science

Introduction to data science; Quick recap on necessary background on continuous mathematics, linear algebra, probability, design and analysis of algorithms, data management; Introduction of tools for data science projects to be used in the practicals; Introduction to different paradigms of machine learning; Linear prediction, Regression; Maximum Likelihood, MAP, Bayesian ML; Regularization, Generalization, Cross Validation; Basics of Optimization; Linear Classification, Logistic Regression, Naïve Bayes; Support Vector Machines; Kernel Methods; Neural Networks, Backpropagation; Convolutional Neural Networks; Unsupervised Learning, Clustering, k-means; Dimensionality Reduction, PCA.

**Learning outcome**: This course introduces supervised and unsupervised learning. Students will learn the algorithms which underpin popular machine learning techniques, as well as developing an understanding of the theoretical relationships between these algorithms. The practicals will concern the application of machine learning to a range of real-world problems.

**Target groups**: Recommended for first-year MSc students.

**Prerequisites**: Introductory courses on continuous mathe-matics, linear algebra, probability, design and analysis of algorithms, databases. Quick recap will be given at the beginning of the course.

Familiarity with Python and SQL is of advantage as these languages will be used in the practicals.

**Semester**: This course will be offered starting September 2020.

## Efficient Algorithms for Relational Data

A significant amount of data is relational. This course gives a unifying overview of the latest research in efficient computation over relational data, with applications spanning databases, artificial intelligence and machine learning, algorithms, and linear algebra. Besides their theoretical interest, algorithms overviewed in this course represent the key differentiator for commercial database and relational AI engines and thus essential knowledge for the future data system engineer.

**Learning outcome**: As part of the course, the students will learn how to formalise problems using various algebraic formalisms, analyse their computational complexity using a toolbox of techniques that exploit the algebraic and combinatorial structure of the problem, familiarise themselves with simple yet powerful algorithms that exploit such structure, and finally implement and benchmark such algorithms.

**Target groups**: This is an advanced course with lectures, exercises, and a practical task. It is recommended to MSc and PhD students.

**Semester**: This course will be offered starting February 2021.

## Seminar: Advances in Data Management and Machine Learning

This seminar overviews recent research development at the intersection of databases and machine learning. In particular, it considers two distinct lines of work:

- The application of machine learning to databases: Use models to predict query performance or replace traditional modules in a database management system such as indices.
- The application of existing and novel database techniques to improve the runtime performance for training machine learning models.

**Learning outcome**: The goal of the seminar is to expose the students to the recent trends in academia and industry on rethinking database management systems and on how to effectively unify knowledge on both machine learning and databases to scale data science workloads.

**Target groups**: Recommended for students in BSc and MSc with an interest in data science.

**Semester**: This course will be offered starting September 2020.