Learning from reading code

Learning from reading code

This project investigates programming education from a natural language perspective. It strives to understand how people learn programming by focusing on reading code rather than producing code. It aims to produce an accessible way of teaching and learning programming, for if (or when) the skill becomes part of a wider national educational curriculum.

About the project

In programming education, the most important skill to master is often considered to be writing a program. A lot of programming lessons are therefore focused on learning to write programs quickly and students are assessed on the quality of the code they produce. Although the importance of reading code is usually confirmed by both researchers and professionals, the skill is seldom explicitly taught or assessed during programming courses, even though an increasing amount of research shows that the ability to write a correct program does not necessarily equal the writer’s understanding of the written code. However, as knowledge of programming becomes more urgent in our current society, it becomes essential to understand the learner’s process and develop accessible ways of teaching and learning programming by and for a wide range of people. 

Approach

The specific angle of approach for this project is to look at programming education from the perspective of reading code and natural language learning. Part of this project focuses on reading and explaining code; part of the project focuses on variable names and variable roles including their presence in teaching; and part of the project includes (foreign) language learning strategies and investigates if and how these can be applied to programming education. Specifically, the project aims to build a stronger connection between learning & teaching programming languages to serve teachers and learners at different levels or backgrounds. 

Expected outcomes 

The objective of this project is to investigate learners’ comprehension of programs through reading code they have not written themselves, along with finding accessible ways to teach and assess the learners progress. The focus of investigation will be diverse, including but not limited to, reading strategies used or taught, explaining code after reading it (i.e. summarizing skills, explain-in-plain-English questions), and re-using or improving existing code. 

Partners

The Leiden Institute of Advanced Computer Science - Leiden University
Programming Education Research Lab - Leiden University
Faculty Electrical Engineering, Mathematics and Computer Science - TU Delft