  Given a teacher that holds a function $f:X\to R$ from some class of functions
$C$. The teacher can receive from the learner an element~$d$ in the domain $X$
(a query) and returns the value of the function in $d$, $f(d)\in R$. The
learner goal is to find $f$ with a minimum number of queries, optimal time
complexity, and optimal resources.
  In this survey, we present some of the results known from the literature,
different techniques used, some new problems, and open problems.
