3 research outputs found
Let's Ask Students About Their Programs, Automatically
Students sometimes produce code that works but that its author does not
comprehend. For example, a student may apply a poorly-understood code template,
stumble upon a working solution through trial and error, or plagiarize.
Similarly, passing an automated functional assessment does not guarantee that
the student understands their code. One way to tackle these issues is to probe
students' comprehension by asking them questions about their own programs. We
propose an approach to automatically generate questions about student-written
program code. We moreover propose a use case for such questions in the context
of automatic assessment systems: after a student's program passes unit tests,
the system poses questions to the student about the code. We suggest that these
questions can enhance assessment systems, deepen student learning by acting as
self-explanation prompts, and provide a window into students' program
comprehension. This discussion paper sets an agenda for future technical
development and empirical research on the topic
Purpose-first Programming: A Programming Learning Approach for Learners Who Care Most About What Code Achieves
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
Syntactic Generation of Research Thesis Sketches Across Disciplines Using Formal Grammars
A part of the prerequisites for granting a degree in higher education institutions, students at postgraduate levels normally carry out research, which they do report in the form of theses or dissertations. Study has shown that students tend to go through difficulties in writing research thesis across all disciplines because they do not fully comprehend what constitutes a research thesis. This project proposes the syntactic generation of research thesis sketches across disciplines using formal grammars. Sketching is a synthesis technique which enables users to deliver high-level intuitions into a synthesis snag while leaving low-level details to synthesis tools. This work extends sketching to document generation for research thesis documents. Context-free grammar rules were designed and implemented for this task. A link to 10,000 generated thesis sketches was presented