2 research outputs found

    1995-1999

    Get PDF

    Purpose-first Programming: A Programming Learning Approach for Learners Who Care Most About What Code Achieves

    Full text link
    Introductory programming courses typically focus on building generalizable programming knowledge by focusing on a language’s syntax and semantics. Assignments often involve “code tracing” problems, where students perform close tracking of code’s execution, typically in the context of ‘toy’ problems. “Reading-first” approaches propose that code tracing should be taught early to novice programmers, even before they have the opportunity to write code. However, many learners do not perform code tracing, even in situations when it is helpful for other students. To learn more, I talked to novice programmers about their decisions to trace and not trace code. Through these studies, I identified both cognitive and affective factors related to learners’ motivation to trace. My research found that tracing activities can create a “perfect storm” for discouraging learners from completing them: they require high cognitive load, leading to a low expectation of success, while also being disconnected from meaningful code, resulting in low value for the task. These findings suggest that a new learning approach, where novices quickly and easily create or understand useful code without the need for deep knowledge of semantics, may lead to higher engagement. Many learners may not care about exactly how a programming language works, but they do care about what code can achieve for them. I drew on cognitive science and theories of motivation to describe a “purpose-first” programming pedagogy that supports novices in learning common code patterns in a particular domain. I developed a proof-of-concept ”purpose-first” programming curriculum using this method and evaluated it with non-major novice programmers who had a variety of future goals. Participants were able to complete scaffolded code writing, debugging, and explanation activities in a new domain (web scraping with BeautifulSoup) after a half hour of instruction. An analysis of the participants’ thinkalouds provided evidence the learners were thinking in terms of the patterns and goals that they learned with in the purpose-first curriculum. Overall, I found that these novices were motivated to continue learning with purpose-first programming. I found that these novices felt successful during purpose-first programming because they could understand and complete tasks. Novices perceived a lower cognitive load on purpose-first programming activities than many other typical learning activities, because, in their view, plans helped them apply knowledge and focus only on the most relevant information. Participants felt that what they were learning was applicable, and that the curriculum provided conceptual, high-level knowledge. For some participants, particularly conversational programmers who didn’t plan to program in their careers, this information was sufficient for their needs. Other participants felt that purpose-first programming was a starting point, from which they could move forward to gain a deeper understanding of how code works.PHDInformationUniversity of Michigan, Horace H. Rackham School of Graduate Studieshttp://deepblue.lib.umich.edu/bitstream/2027.42/167912/1/kicunn_1.pd
    corecore