Abstraction in Programming Education

Abstraction is considered a fundamental part of computer science, and can be interpreted either as “changing the resolution” or as separating the “what” (interface) from the “how” (implementation). Experts move flexibly between levels of abstraction and can see things simultaneously “in the large” and “in the small”. It is even possible that the majority of errors students make are in fact abstraction errors, and not programming errors.

Teaching abstraction is a challenge, however. Novices especially tend to gravitate toward lower levels of abstraction: They get hung up on detail (such as syntax), focus on a particular case in itself (rather than a representative of something more general), and these tendencies are increased by unfamiliarity and discomfort. Meanwhile, teachers (and other experts) may operate on several levels of abstraction at once, often without being aware of it.

Armoni’s (2013) framework for teaching abstraction to computer science novices aims to remedy this by recommending that teachers (a) call explicit attention to which level of abstraction they operate on, (b) similarly call attention to moves between such levels, and (c) give students opportunities to reflect on their own abstraction processes. This approach has been shown to improve both students’ abstraction abilities and their general performance in computer science courses.

Importantly, widely used programming languages such as Python makes abstraction visible and explicit on a structural level: Loops, functions, and classes all allow students to abstract away details when considering the higher-level program. A simple way of looking at it is that each time the indentation is increased, students move to a lower (more detailed) level of abstraction. Whether students interpret indentation in Python in this way is an open question, however.

How students think about or work with Python’s built-in levels of abstraction is therefore an interesting avenue for further research. One can also look into how explicit attention to levels of abstraction by a programming task influences these processes in a programming context. How do students that demonstrate understanding of abstraction approach complex problems compared to those who do not, and to what extent is the context in which they learn programming important (is there a difference between IN1000, IN1900, and BIOS1100 students)?

The language of supervison may be English or Norwegian, but for the data collection, the master student must be able to understand Norwegian.

Emneord: Abstraction, Education research
Publisert 9. okt. 2023 12:55 - Sist endret 9. okt. 2023 12:55

Veileder(e)

Omfang (studiepoeng)

60