I experience that my students are fixed to compute with concrete values and are not keen to think in terms of general solution like creating a mathematical function $f(n)$ , needed to write programming functions f(n).

What is a good method of teaching them this lesson, becoming able to think in abstractions like functions on natural numbers?

  • $\begingroup$ Are these college level students? $\endgroup$
    – gardenhead
    May 18 '17 at 1:38
  • 2
    $\begingroup$ You may be interested in cseducators.stackexchange.com $\endgroup$
    – Ben I.
    Jun 1 '17 at 19:12
  • 1
    $\begingroup$ After programming $f(1)$, $f(2)$, ..., $f(77)$, don't they complain about the repetitive work? $\endgroup$
    – Raphael
    Jun 17 '17 at 11:37
  • $\begingroup$ I really like your comment @Raphael and I would accept it if I were who asks. Motivate them to look for abstraction for themselves is much better than "teach" it directly. $\endgroup$
    – Fusho
    Jun 17 '17 at 12:01

To the extent that this question is on topic here (that is, without reference to literature on mathematical education), I would propose that experimenting with concrete instances is not antithetical to the development of abstract concepts.

In an educational setting in computer science, it should be clearly stated and agreed upon that formal reasoning is the goal, and aquiring an intuitive grasp on things is not enough. After this is established (not trivial, literally counterintuitive), abstractions and concrete examples can help each other, not get in the way of each other.

The thing is, formal reasoning is not something that we do, it is what we are as a field - which is why studying the history of computing is so important. It can be tedious though, unnerving sometimes. It must be gradually developed as a habit. Intuitions are naturally captivating, and that is why we tend to rely on them to motivate our students, but there is something captivating about formalization too. Our challenge is to bring it to the center of the stage.


It is very common that people start with a concrete problem, solve their concrete problem, and then examine how the solution to the concrete problem can be generalized to more general problems. That's a natural way to arrive at a general solution.

You don't want to interfere with that kind of thinking, except that you may strongly insist that the concrete solution to a concrete problem must be made more abstract. Otherwise, you risk that abstract solutions will never be found by many people. People's minds work in different ways. Trying to force everyone to think the same way is only going to end up in frustration for you and the student.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.