Home Research Google Scholar Teaching

Courses
Graduate Algorithms (COMPSCI 532) Fall 2021 Fall 2023
Randomization is a key technique in many settings, and is becoming more important in both theory and practice. It does not only lead to algorithms with better performance/fast running time, in some settings it also makes impossible things feasible. In this course we will see examples of the power of randomness. This will include basic techniques like linearity of expectation, union bounds and concentration of measure. We will also focus on the applications related to dimension reduction (in different settings) and Markov Chains.
Randomized Algorithms (COMPSCI 630) Spring 2016 Spring 2018
Randomization is a key technique in many settings, and is becoming more important in both theory and practice. It does not only lead to algorithms with better performance/fast running time, in some settings it also makes impossible things feasible. In this course we will see examples of the power of randomness. This will include basic techniques like linearity of expectation, union bounds and concentration of measure. We will also focus on the applications related to dimension reduction (in different settings) and Markov Chains.
Algorithmic Aspects of Machine Learning (COMPSCI 590) Fall 2015, Fall 2016 , Spring 2021
Many machine learning problems (like sparse coding or topic modeling) are hard in the worst-case, but nevertheless solved in practice by algorithms whose convergence properties are not understood.
In this course we will see many instances where we can design algorithms for machine learning problems that have rigorous guarantees. The course will cover topics such as: nonnegative matrix factorization, topic models, matrix completion and tensor decomposition. Although all these problems are NP-hard in the worst-case, we will see what properties real-life instances may satisfy and why these properties allow us to design efficient algorithms with provable guarantees.
Design and Analysis of Algorithms (COMPSCI 330) Fall 2016, Fall 2017, Spring 2019, Spring 2020, Spring 2021, Spring 2022
Algorithms are one of the foundations of computer science. Designing efficient algorithms under different resource constraint is a ubiquitous problem. In this course, we will study basic principals of designing and analyzing algorithms. In the class we will see classical examples of algorithms design including graph algorithms, data structures, Linear Programming and gradient descent. The goal of this course is to familiarize undergraduate students with algorithm design techniques that can be generalized to many application areas.
Introduction to Graduate Study (COMPSCI 701)
Fall 2023, Fall 2024
This course is designed to introduce many aspects of graduate study for incoming students. The topics include computer science research in general, tools and methodologies, publishing and review process, ethics and policy issues, how to be a successful researcher and many others.