Mikhail Moshkov Professor, Applied Mathematics and Computational Sciences machine learning data mining discrete optimization algorithmic complexity