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