Teaching

Machine Learning Workshop

Workshop, Notre Dame University-Louaize, 2020

The course material can be found here. Short description: This is a four day workshop on Neural Networks funded by DAAD(germany). It start by developing Neural Networks from scratch in Python with a view of what is “under the hood” including backpropagation. After that the students are introduced to Tensorflow/Keras and all the applications are done with that framework. Topics include: Convolution Networks, Recurrent Networks, Generative Adversarial Networks, Autoencoders including Variational Autoencoders.

CSC313 Data Structures

Undergraduate, Notre Dame University-Louaize, 2020

The course material can be found here. Short Description: This course provides a detailed coverage of standard data structures with an emphasis on complexity analysis. Topics include: Asymptotic analysis, vectors, linked lists, stacks, queues,trees and balanced trees, hashing, priority queues and heaps, sorting. Standard graph algorithms such as DFS, BFS, shortest paths and minimum spanning trees are also covered. We will be making heavy use of C++ so it is important you read the c++ review early before the course really takes off.

Parallel and Distributed Computing

Undergraduate course, Notre Dame University-Louaize, 2020

The programming part can be found here. Decomposition techniques, tasks and dependency graphs, parallel models. C++ thread model (threads, mutexes, condition-variables, barriers, tasks), C++17 execution policy, lock-free data structures, shared memory with openMP, distributed memory with MPI. CPU vs GPU, GPU programming with hands on experience using CUDA and Thrust.

Analysis of Algorithms

Undergraduate course, Notre Dame University-Louaize, 2020

The course material can be found here. Short description: This is the standard algorithm course where the student is introduced to thedifferent algorithm design paradigms: divide-and-conquer, greedy and dynamic programming. Network flows and applications are covered as well. In addition NP compleness is introduced from the theoretical, e.g. reductions, and practical perspective. Different methods for dealing with NP complete problems such as backtracking, branch and bound and using SAT solvers are covered.

Theory of Computation

Undergraduate course, Notre Dame University-Louaize, 2020

The course material can be found here. Short Description This is the standard theory of computation course: automata, regular expressions and languages, context-free languages (Grammars, PDA), Turing machines, computability, and complexity.