The paper describes the process of program comprehension from the point of view of constructivist theory of learning. According to this view, program comprehension starts with the pre-existing knowledge and continues through processes of assimilation and adaptation. The assimilation means that the facts encountered in the program are either added to the knowledge or rejected. Adaptation means that the existing knowledge is reorganized in order to absorb new facts. These processes are illustrated by a case study where the knowledge of the program is represented by UML class diagrams.