Comprehension First: Evaluating a Novel Pedagogy and Tutoring System for Program Tracing in CS1
G. Nelson, B. Xie, and A. Ko. Proceedings of the 2017 ACM Conference on International Computing Education Research, ACM, (August 2017)Understand code before write code - tracing and examples first.
DOI: 10.1145/3105726.3106178
Abstract
What knowledge does learning programming require? Prior work has focused on theorizing program writing and problem solving skills. We examine program comprehension and propose a formal theory of program tracing knowledge based on control flow paths through an interpreter program's source code. Because novices cannot understand the interpreter's programming language notation, we transform it into causal relationships from code tokens to instructions to machine state changes. To teach this knowledge, we propose a comprehension-first pedagogy based on causal inference, by showing, explaining, and assessing each path by stepping through concrete examples within many example programs. To assess this pedagogy, we built PLTutor, a tutorial system with a fixed curriculum of example programs. We evaluate learning gains among self-selected CS1 students using a block randomized lab study comparing PLTutor with Codecademy, a writing tutorial. In our small study, we find some evidence of improved learning gains on the SCS1, with average learning gains of PLTutor 60% higher than Codecademy (gain of 3.89 vs. 2.42 out of 27 questions). These gains strongly predicted midterms (R2=.64) only for PLTutor participants, whose grades showed less variation and no failures.
Description
Comprehension First | Proceedings of the 2017 ACM Conference on International Computing Education Research
%0 Conference Paper
%1 Nelson_2017
%A Nelson, Greg L.
%A Xie, Benjamin
%A Ko, Amy J.
%B Proceedings of the 2017 ACM Conference on International Computing Education Research
%D 2017
%I ACM
%K code-tracing icer2017 practice-system programming worked-out-examples
%R 10.1145/3105726.3106178
%T Comprehension First: Evaluating a Novel Pedagogy and Tutoring System for Program Tracing in CS1
%U http://dx.doi.org/10.1145/3105726.3106178
%X What knowledge does learning programming require? Prior work has focused on theorizing program writing and problem solving skills. We examine program comprehension and propose a formal theory of program tracing knowledge based on control flow paths through an interpreter program's source code. Because novices cannot understand the interpreter's programming language notation, we transform it into causal relationships from code tokens to instructions to machine state changes. To teach this knowledge, we propose a comprehension-first pedagogy based on causal inference, by showing, explaining, and assessing each path by stepping through concrete examples within many example programs. To assess this pedagogy, we built PLTutor, a tutorial system with a fixed curriculum of example programs. We evaluate learning gains among self-selected CS1 students using a block randomized lab study comparing PLTutor with Codecademy, a writing tutorial. In our small study, we find some evidence of improved learning gains on the SCS1, with average learning gains of PLTutor 60% higher than Codecademy (gain of 3.89 vs. 2.42 out of 27 questions). These gains strongly predicted midterms (R2=.64) only for PLTutor participants, whose grades showed less variation and no failures.
@inproceedings{Nelson_2017,
abstract = {What knowledge does learning programming require? Prior work has focused on theorizing program writing and problem solving skills. We examine program comprehension and propose a formal theory of program tracing knowledge based on control flow paths through an interpreter program's source code. Because novices cannot understand the interpreter's programming language notation, we transform it into causal relationships from code tokens to instructions to machine state changes. To teach this knowledge, we propose a comprehension-first pedagogy based on causal inference, by showing, explaining, and assessing each path by stepping through concrete examples within many example programs. To assess this pedagogy, we built PLTutor, a tutorial system with a fixed curriculum of example programs. We evaluate learning gains among self-selected CS1 students using a block randomized lab study comparing PLTutor with Codecademy, a writing tutorial. In our small study, we find some evidence of improved learning gains on the SCS1, with average learning gains of PLTutor 60% higher than Codecademy (gain of 3.89 vs. 2.42 out of 27 questions). These gains strongly predicted midterms (R2=.64) only for PLTutor participants, whose grades showed less variation and no failures.
},
added-at = {2023-12-06T00:09:10.000+0100},
author = {Nelson, Greg L. and Xie, Benjamin and Ko, Amy J.},
biburl = {https://www.bibsonomy.org/bibtex/20d4d7da698ca1fc704c38b55712da4e5/brusilovsky},
booktitle = {Proceedings of the 2017 ACM Conference on International Computing Education Research},
collection = {ICER ’17},
description = {Comprehension First | Proceedings of the 2017 ACM Conference on International Computing Education Research},
doi = {10.1145/3105726.3106178},
interhash = {f2fbd68c5f81b2cda50f2f2da9b80598},
intrahash = {0d4d7da698ca1fc704c38b55712da4e5},
keywords = {code-tracing icer2017 practice-system programming worked-out-examples},
month = aug,
note = {Understand code before write code - tracing and examples first},
publisher = {ACM},
series = {ICER ’17},
timestamp = {2023-12-06T00:09:10.000+0100},
title = {Comprehension First: Evaluating a Novel Pedagogy and Tutoring System for Program Tracing in CS1},
url = {http://dx.doi.org/10.1145/3105726.3106178},
year = 2017
}