Haniye Kashgarani

My name is Haniye, and I am a Computer Science student with interests in Machine Learning, AI, and programming. To go further, I can say I live currently in Wyoming, US, and study there as a Ph.D. student at the University of Wyoming. I am also research assistant under supervision of Dr. Lars Kotthoff in MALLET Lab and do investigation in the field of Machine Learning and Algorithm Selection.


Ph.D. Research

University of Wyoming

Scheduling and Algorithm Selection for solving combinatorial problems

For solving NP-Complete problems, there is more than one algorithm or approach to solve them. Such algorithms often have complementary performance – where one fails, another performs well, and vice versa. Per-instance algorithm selection leverages this by employing portfolios of complementary algorithms to solve sets of difficult problems, choosing the most appropriate algorithm for each problem instance. However, this requires complex models to effect this selection and introduces overhead to compute the data needed for those models. On the other hand, even basic hardware is more than capable of running several algorithms in parallel. We investigate the tradeoff between selecting a single algorithm and running multiple in parallel and incurring a slowdown because of contention for shared resources. Also, we investigate dynamically estimating and allocating parallel computational resources for solving Algorithm Selection problems which is known as scheduling problem but in solving combinatorial problems.

August 2019 - Present

Summer 2022 Internship

National Center for Atmospheric Research

Exploring performance of GeoCAT data analysis routines on GPUs

The GeoCAT-comp program is a Python toolkit used by the geoscience community to analyze data. This project explores ways to port GeoCAT-comp to run on GPUs, as recent supercomputers are shifting to include GPU accelerators as the major resource. Although GeoCAT-comp's routines are all sequential or utilize Dask parallelization on the CPU, the data processing is embarrassingly parallel and computationally costly, enabling us to optimize using GPUs. GeoCAT uses NumPy, Xarray, and Dask arrays for CPU parallelization. In this project, we examined different GPU-accelerated Python packages (e.g., Numba and CuPy). Taking into account the deliverability of the final porting method to the GeoCAT team, CuPy is selected. CuPy is a Python CUDA-enabled array backend module that is quite similar to NumPy. We analyzed the performance of the GPU-accelerated code compared to the Dask CPU parallelized code over various array sizes and resources, and through strong and weak scaling.

May 2022 - July 2022

Teaching Assistant

University of Wyoming

WyStack - Supporting Teachers and Computing Knowledge

WyStack is a program to support Wyoming Teachers in gaining computational knowledge. During this program some research questions was addressed and teachers use modeling practices as supports for student understanding of algorithms and coding in a variety of ways.

Keywords: HPC, Machine Learning, Research.

June 2021 - July 2021

2020 Internship

University of Wyoming

Animal Indentification

Having an automated system to extract data from images would be useful if it can give us accurate and detailed information on objects that appeared in the images. In wildlife biology, biologists tend to protect and monitor animals, and for this goal, they use auto-capturing cameras in the animals’ habitats. The cameras are sensitive to movement, and they take pictures whenever they sense a change in the frame. There can be many images taken not because of animal movement but for other movements like wind, and they need to be identified. Using human labor would be very expensive and time-consuming, and using a system that can give us information about the behavior of animals inexpensively and accurately would be helpful to protect and monitor animals. For this purpose, it is advantageous to train a machine learning tool to automatically extract the data. Deep convolutional neural networks are versatile, powerful, and scalable, making them ideal to tackle large and highly complex Machine Learning tasks, such as classifying billions of images (e.g., Google Images), powering speech recognition services (e.g., Apple’s Siri), or recommending the best videos to watch to hundreds of millions of users every day (e.g., YouTube). For using a deep neural network in extracting information from camera-trap images, we used pre-trained deep neural networks (DNN) and do transfer-learning of our image data. We used pretrained models and this is because deep learning works best with a huge quantity of (e.g., millions) labeled images that we don’t have yet. Our camera-trap images are captured in a National Park in Wyoming state.

May 2020 - February 2021


University of Wyoming

Doctor of Philosophy - Computer Science
Machine Learning - Algorithm Selection - Resource allocation in Algorithm Selection

GPA: 3.71

August 2019 - Present

Shariaty Technical College of Tehran

Bachelor of Science - Software Engineering

GPA: 3.52

January 2013 - May 2017


Programming Languages & Tools


I enjoy most of my time being outdoors and traveling. During the warmer months here in Wyoming, I enjoy hiking, camping and photo shooting. When forced indoors, I follow movies and television shows, and I spend a large amount of my free time exploring the latest technology advancements in the computer science world.

Publications and Poster Presentations

  • Is Algorithm Selection Worth It? Comparing Selecting Single Algorithms and Parallel Execution

    AAAI 2021 Meta-Learning Workshop
    Authors: Haniye Kashgarani, Lars Kotthoff

  • Exploring performance of GeoCAT data analysis routines on GPUs

    RMACC HPC Symposium 2022 (winner for poster competition) and Super Computing 2022
    Authors: Haniye Kashgarani, Cena Miller, Supreeth Suresh, Anissa Zacharias