Recent Posts

More Posts

“All your proof belong to us” The first way we learn to do proofs is by induction. Proofs by induction are done in three steps. First, we establish a base case. Next we assume a hypothesis, and finally, we prove the inductive step. As an example let us consider the fact that the sum $0+1+2+ \ldots+n$ is $n(n+1)/2$. The three steps are: Base case: consider the series $0+1$, the sum is $1$, and the formula is $1(2)/2$.


We look at metaprogramming in Julia. We illustrate parse and eval using the problem of determining a minimal model for a given propositional formula. The computation of minimal models is of interest in answer set programming, as they are used to define stable models 1. The problem of finding a minimal model is NP-complete, whereas the problem of finding a stable model for a given set of propositional statements is $\Sigma_{2}^{P}$ complete.


Let us implement in julia 0.6.0 a binary search tree to store integers. Each node is either of type Nil or of type bst, as declared below. Type Nil is used a null pointer. We use type union MayBe to hold either a Nil() or a bst. At the start the tree is empty so it is initialized to Nil(). Removing the type declaration from the data element should be sufficient to store datatypes for which a comparator is implemented.


Numbers are all In this post, we examine two examples set out in the classic paper by Turing. The first problem is to report the $n^{th}$ binary digit of 1⁄3. The second problem is to report the $n^{th}$ binary digit of $\sqrt{2}$. The 1936 paper On computable numbers, with an application to the Entscheidungsproble describes two machines to perform the tasks. In this post, we give in Haskell two programs for the same.


In this post, we implement in Haskell, the augmenting path method to find a maximum matching in a bipartite graph. We use function composition and recursion mostly. We obtain a simple implementation of an algorithm to compute maximum matching in a bipartite graph. As a side affect of this exercise, you should know about algorithms to compute terminal objects, and fix points in a category. Only a basic familiarity with Haskell is assumed here.



I have taught a variety of courses at the undergraduate and the graduate level. I have taught courses at Simon Fraser University, University of Lethbridge, TIFR Mumbai, IIT Delhi, IIT Ropar, IIT Mandi and at IIT BHU. Some of the courses that I have taught in the recent past are listed below.

  • Artificial Intelligence, CPSC 3750, Spring 2015
  • Approximation Algorithms, CPSC 5110, Fall 2016
  • Computer Networks CPSC 3780, Fall 2014, Fall 2016
  • Data Structures and Algorithms CPSC 3620, Spring 2017, Fall 2017, Spring 2018, Fall 2018.
  • Discrete Structures for Computer Science, CPSC 1820, Spring 2015, Spring 2016, Fall 2017, Fall 2018.
  • Programming Languages CPSC 3740, Spring 2016, Spring 2017
  • Theory of Computation, CPSC 3630, Fall 2014
  • Advanced Algorithms, CPSC 4625, Spring 2018

A select list of recent independent studies is below.

  • Behaviour Trees: Intro to Mult. Agent Systems, CPSC 3990, Summer 2018
  • Approximation Algorithms, CPSC 5990, Spring 2015, Spring 2017, Fall 2018.
  • Approximation Algorithms, CPSC 7990, Fall 2018.
  • Mining of Massive Data Sets, CPSC 4990, Spring 2015
  • Practical Bioninformatics, CPSC 3990, Summer 2016
  • Quantum Computation, CPSC 5990, Summer 2016

Please visit for resources related to the current course offerings.


  • 403 329 2496
  • 4401 University Drive, Lethbridge, AB, Canada T1K5K4
  • Tu, Th 12:00 to 13:00 or email for an appointment. All email in the inbox is processed, eventually.

Graduate Students & Research Interns

It has been a pleasure working with several excellent students.

Name Degree Year
Leila Karimi Ph. D. cont.
Bipasha Chowdhury M. Sc. cont.
Ajay Raj Tedlapu M. Sc. cont. linkedin profile
Husain Syed M. Sc. cont. co-supervised with Dr. Zovoilis
Peash Ranjan Saha M. Sc. Dec 2018 linkedin profile
Arshdeep Singh B. Sc. Summer 2018 NSERC USRA
Lazima Ansari M. Sc. Aug 2017 linkedin profile
Sharmin Akter M. Sc. Aug 2017
Parijat Purohit M. Sc. Aug 2017 co-supervised with Dr. Benkoczi
Dr. Ram Dahal Ph. D. 2017 co-supervised with Dr. Benkoczi linkedin profile
Anamay Sarkar B. Tech 2016 MITACS Globalink Intern github page
Umair Arif M. Sc. 2017 co-supervised with Dr. Benkoczi. Research Associate at University of Lethbridge. linkedin profile
Kawsar Jahan M. Sc. 2015 co-supervised with Dr. Benkoczi. linkedin profile
Anik Saha M. Sc. 2015 co-supervised with Dr. Hossain, with Aphelion.
Dr. Rishi Singh Ph. D. 2011-2012 IIT Ropar Now Assisant Professor at IIT Bhilai. Google Scholar
Sangita Bhattacharjee M. Sc. 2010 Presently with the University of Lethbridge.
Tarikul Sabbir M. Sc. 2010 co-supervised with Dr. Benkoczi
Dr. Tauhid Islam M. Sc. 2009 Ph. D. Queen’s University.
Dr. Salimur Choudhury M. Sc. 2008 Ph. D. Queen’s University. DBLP
Dallas Thomas M. Sc. 2006 presently at Lethbridge Research Centre - Agriculture and Agri-Food Canada.
Elspeth Nickel M. Sc. 2005 co-supervised with Dr. Wismath.


I work on approximation algorithms. My research program has been supported by NSERC Discovery Grant since 2003. I am a member of the Optimization Research Group at the University of Lethbridge.

A list of publications as indexed by DBLP.