Given a teacher that holds a function f : X → 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) ∈ 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.