I'm a Professor at the Department of Computer Science & Engineering at the University of Minnesota in the Twin Cities of Minneapolis and Saint Paul.
My research interests are concentrated in the areas of data mining, recommender systems, learning analytics, high-performance computing, and chemical informatics and from time-to-time, I look at various problems in the areas of health informatics, information retrieval, bioinformatics, and scientific computing.
Within these areas, my research focuses in developing novel algorithms for solving important existing and/or emerging problems, and on developing practical software tools implementing some of these algorithms. The results from this research have been presented in various conferences and published in leading peer reviewed journals and highly selective conference proceedings.
In my research I strive to develop algorithms that are practical (they can be easily implemented on commercially available platforms), efficient (require as little time as possible), effective (do a good job in solving the underlying problem), and scalable (remain efficient and effective as we increase the size of the problem and/or the number of processors). Quite often I consider my research as that of algorithm engineering.
The research of my group research has resulted in the development of software libraries for serial and parallel graph partitioning (METIS and ParMETIS), hypergraph partitioning (hMETIS), for parallel Cholesky factorization (PSPASES), for collaborative filtering-based recommendation algorithms (SUGGEST), clustering high dimensional datasets (CLUTO), and finding frequent patterns in diverse datasets (PAFI). In addition, my group has developed two web-based servers for clustering gene expression data (gCLUTO) and for predicting the secondary structure of proteins (YASSPP).
A lot of this software is available in the Karypis Lab github page. Additional information about the software and download instructions can be found here.
I have coauthored over one hundred journal and conference papers on these topics. More information can be be found at my Google Scholar, DBLP, and arXiv pages.
Over the years I have developed many algorithms for a variety of problems including dynamic load balancing of unstructured parallel computations, graph and circuit partitioning, protein remote homology prediction and fold recognition, protein structure prediction, recommender systems, data clustering, document classification and clustering, frequent pattern discovery in diverse datasets (transactions, sequences, graphs), parallel Cholesky factorization, and parallel preconditioners.
The following links provide more information about specific projects:
I take great joy in teaching, advising, and mentoring undergraduate and graduate students and I consider it to be one of the perks of my job.
My greatest pleasure and ultimate job satisfaction comes at those points during a course at which my students transition from simply listening and reading the material to actually understanding them, grasping them, internalizing them, and seeing how they fit within the general computer science discipline and how they are applied to solve real problems in real applications.
My regular teaching responsibilities include the introductory course on algorithms and data structures (CSci 4041), a course on parallel computing (CSci 5451), a course on data mining (CSci 5523), and a course describing various computational techniques used in bioinformatics (CSci 5481).
Over the years I had the opportunity to advise and mentor many Ph.D. and M.S. students. I find this to be a very rewarding experience and I have learned (and still learning) a lot from all of my former and current students.
I believe that effective advisor-advisee relationships must be built on mutual trust, commitment, and benefit, and be designed to advance the advisees education and provide them with a solid foundation upon which to build their future career.
Pursing an advanced graduate degree and contacting research to advance the state-of-the-art is not an easy task. Its outcome is never guaranteed, there are always unforeseen complications, and not every idea works out! It requires commitment, dedication, hard work, and the ability to know when to continue pursuing a good idea even when the initial results are not very encouraging and when to stop pursing a bad idea and start over again. I do not expect my students to be expert researchers when joining my group, but I expect them to be bright, dedicated, motivated, and willing to work as hard as I do.