Propostas submetidas

DEI - FCTUC
Gerado a 2024-05-04 00:15:51 (Europe/Lisbon).
Voltar

Titulo Estágio

Exploring the process of program construction from learnt patterns in novice programmers

Áreas de especialidade

Sistemas Inteligentes

Local do Estágio

DEI-FCTUC

Enquadramento

Introductory programming is regarded by worldwide students as a challenging course. There has been a large body of works on identifying common struggles of novice programmers. [1] [2] Some of these difficulties are that students have to acquire the basic vocabularies and language syntax, overcome misconceptions and master higher-level problem solving skills.
In introductory programming courses, students usually acquire the basic notions of a programming language through example codes and illustration of runtime behavior of codes. Afterwards, when students are prompted to solve a programming problem, they retrieve these basic notions and combine them to implement a correct program. Constructivism theories are often employed in the literature to explain how novice programmers acquire programming skills and apply them in constructing solutions for a programming problem. Many of these theories are based on Soloway's notion of plan [3] or similar concept such as patterns in [4].
According to these studies, novice programmers memorize stereotypical solutions (known as patterns) when studying sample programs. When they attempt to solve a new programming problem, they first identify major goals to solve in the problem, and then retrieve relevant patterns and use them to compose a solution. As an example, consider the problem of finding the largest number in a nonempty array of integers. A student may break it down into two goals: 1) comparing two integers, 2) going through each element in the array to find a larger one. These two goals may invoke sample code snippets to implement the patterns, e.g. 1) compare two integers and return the bigger one using 'if', 2) iterating an array using 'for' and 3) using an accumulating variable to keep the answer (in this case, largest number) in the scanned portion of the array. Afterwards, the student needs to compose the patterns into a working solution.

[1] A. Altadmri and N. C. Brown, “37 million compilations: Investigating novice programming mistakes in large-scale student data," in Proceedings of the 46th ACM Technical Symposium on Computer Science Education, 2015, pp. 522-527.

[2] D. Teague, M. Corney, A. Ahadi, and R. Lister, “A qualitative think aloud study of the early neopiagetian stages of reasoning in novice programmers," in Proceedings of the Fifteenth Australasian Computing Education Conference - Volume 136, ser. ACE '13. AUS: Australian Computer Society, Inc., 2013, p. 87-95.

[3] E. Soloway, “Learning to program = learning to construct mechanisms and explanations," Commun. ACM, vol. 29, no. 9, p. 850-858, Sep. 1986.

[4] O. Muller, “Pattern oriented instruction and the enhancement of analogical reasoning," in Proceedings of the First International Workshop on Computing Education Research, ser. ICER '05. New York, NY, USA: Association for Computing Machinery, 2005, p. 57-67.

Objetivo

Recently, with the advent of computer education research data collection initiative [5], it becomes feasible to study the process of learning and problem solving in novice programmers using a data-driven approach [6]. This line of works often takes a low-level tree representation of program code, and model novices’ problem solving process as a sequence of tree edits.
We want to build a system to analyze and visualize the problem solving approach taken by novice programmers. Major objectives include the following.
1.Develop a plugin to a common IDE (e.g. Eclipse IDE) that can capture the keystrokes while a student is attempting to build a solution for a programming problem.
2.Design a pattern language for teachers to describe patterns.
3.Design an efficient, high-level data structure to represent the keystroke stream as a sequence of problem solving steps. These steps include adding, fine-tuning and combining patterns.
4.Design an algorithm to match the patterns entered by teachers against the students’ problem solving steps.
5.Compare the problem solving steps taken by various students. Identify popular strategies and common struggles of students who succeed or fail in solving the programming problem.
6.Device a visualization of the problem solving approaches of a group of students.

[5] N. C. C. Brown, A. Altadmri, S. Sentance, and M. Kolling, “Blackbox, five years on: An evaluation of a large-scale programming data collection project," in Proceedings of the 2018 ACM Conference on International Computing Education Research, ser. ICER '18. New York, NY, USA: Association for Computing Machinery, 2018, p. 196-204.

[6] C. Jemmali, E. Kleinman, S. Bunian, M. V. Almeda, E. Rowe, and M. Seif El-Nasr, “Maads: Mixed-methods approach for the analysis of debugging sequences of beginner programmers," in Proceedings of the 51st ACM Technical Symposium on Computer Science Education, ser. SIGCSE '20. New York, NY, USA: Association for Computing Machinery, 2020, p. 86-92.

Plano de Trabalhos - Semestre 1

-Study major patterns uncovered in previous works on constructivism view of problem solving in programming novices
-Design a pattern language for entering these patterns. (Or) Select several patterns, and hard-code them in the pattern matching algorithm.
-Develop a plugin for a programming IDE to capture keystrokes and some actions (e.g. file save, compile)
-Write the intermediate report

Plano de Trabalhos - Semestre 2

-Device an efficient data structure to represent the problem solving steps. The representation supports pattern matching.
-Design an algorithm for the pattern matching, and (optionally) visualize the result as a graph that shows the dependency between steps in the problem solving approach.
-Collect field data, and compare the problem solving steps taken by various students.
-Analyze the above results, and find out common strategies and struggles of students.
-Visualize the strategies and struggles of students in solving a programming problem.
-Write a scientific paper
-Write the final dissertation

Condições

This project work may be supported financially through a research scholarship to master students

Orientador

António José Mendes
toze@dei.uc.pt 📩