45 research outputs found
MatlabTA: A Style Critiquer For Novice Engineering Students
Novice programmers, considered to be those who have yet to understand the fundamentals of programming, exist in both engineering and computing fields. Within computing, various resources exist to help novice programmers understand fundamentals and style guidelines such as WebTA, a code critique program that gives Java students feedback about their error and style issues. There is, however, a gap in automated code critique for MATLAB, a programming language that is popular in the engineering community. When it comes to MATLAB, there are not many programs that help novices understand their errors, and even fewer that help them understand style guidelines. To help assist these engineering novices, I created a program called MatlabTA. Based on feedback from Engineering Fundamentals instructors on the most common errors they encounter in student code, MatlabTA exists to give novices more intuitive feedback for a few of the most common MATLAB errors, along with providing them different style guidelines for different MATLAB antipatterns such as inconsistent tabbing and function output variable matching. This report will provide an overview of the process in developing MatlabTA, along with examples of the different outputs the application produces
Teaching C/C ++ programming using a multimedia system with videos
The C programming language is widely used in computer and industrial engineering. Because of that, such programming language is also widely used as a language to teach programming to industrial engineering students. In Spain, many universities use this language compulsory in the first year, or even in higher courses. Our experience shows that learning computer programming in four months is an arduous task, but curricula require it. Such learning process is also tough by the fact that many students cannot attend classes regularly and, even if they attend, sometimes the class is no longer at the level they require. In this work we develop a series of files in "presentation" format (.ppsx) and videos that allow students to see several explanations about the most complicated programming C topics: functions, arrays, structures, strings, arrays with structures, etc. This multimedia material includes explanations (voice-over), and animations with examples. Students can watch and listen to the explanations whenever and wherever they want (tablet, PC, phone…). Surveys made to students reveal that it is also interesting for students who regularly attend classes, and they prefer to use this course material only at home, outside of regular classes.El lenguaje de programación C se utiliza mucho en informática e ingenierÃa industrial. Por tanto, dicho lenguaje de programación también se utiliza mucho como lenguaje para enseñar programación a estudiantes de ingenierÃa industrial. En España, muchas universidades usan este lenguaje de forma obligatoria durante el primer año, o incluso en cursos superiores. Nuestra experiencia indica que aprender programación de computadoras en cuatro meses es una tarea ardua, pero los currÃculos lo requieren. Tal proceso de aprendizaje también es difÃcil por el hecho de que muchos estudiantes no pueden asistir a clases regularmente e, incluso si asisten, a veces la clase ya no está en el nivel que requieren. En este trabajo desarrollamos una serie de archivos en formato de "presentación" (.ppsx) y videos que permiten a los estudiantes ver varias explicaciones sobre los temas de programación C más complicados: funciones, matrices, estructuras, cadenas, matrices con estructuras, etc. El material multimedia incluye explicaciones (voz en off) y animaciones con ejemplos. Los estudiantes pueden ver y escuchar las explicaciones cuando y donde quieran (tableta, PC, teléfono, etc.). Las encuestas realizadas revelan que también es interesante para los estudiantes que asisten regularmente a clases, y que prefieren usar este material del curso solo en casa, fuera de las clases regulares
Beyond Automated Assessment: Building Metacognitive Awareness in Novice Programmers in CS1
The primary task of learning to program in introductory computer science courses (CS1) cognitively overloads novices and must be better supported. Several recent studies have attempted to address this problem by understanding the role of metacognitive awareness in novices learning programming. These studies have focused on teaching metacognitive awareness to students by helping them understand the six stages of learning so students can know where they are in the problem-solving process, but these approaches are not scalable. One way to address scalability is to implement features in an automated assessment tool (AAT) that build metacognitive awareness in novice programmers. Currently, AATs that provide feedback messages to students can be said to implement the fifth and sixth learning stages integral to metacognitive awareness: implement solution (compilation) and evaluate implemented solution (test cases). The computer science education (CSed) community is actively engaged in research on the efficacy of compile error messages (CEMs) and how best to enhance them to maximize student learning and it is currently heavily disputed whether or not enhanced compile error messages (ECEMs) in AATs actually improve student learning. The discussion on the effectiveness of ECEMs in AATs remains focused on only one learning stage critical to metacognitive awareness in novices: implement solution. This research carries out an ethnomethodologically-informed study of CS1 students via think-aloud studies and interviews in order to propose a framework for designing an AAT that builds metacognitive awareness by supporting novices through all six stages of learning. The results of this study provide two important contributions. The first is the confirmation that ECEMs that are designed from a human-factors approach are more helpful for students than standard compiler error messages. The second important contribution is that the results from the observations and post-assessment interviews revealed the difficulties novice programmers often face to developing metacognitive awareness when using an AAT. Understanding these barriers revealed concrete ways to help novice programmers through all six stages of the problem-solving process. This was presented above as a framework of features, which when implemented properly, provides a scalable way to implicitly produce metacognitive awareness in novice programmers
"It's Weird That it Knows What I Want": Usability and Interactions with Copilot for Novice Programmers
Recent developments in deep learning have resulted in code-generation models
that produce source code from natural language and code-based prompts with high
accuracy. This is likely to have profound effects in the classroom, where
novices learning to code can now use free tools to automatically suggest
solutions to programming exercises and assignments. However, little is
currently known about how novices interact with these tools in practice. We
present the first study that observes students at the introductory level using
one such code auto-generating tool, Github Copilot, on a typical introductory
programming (CS1) assignment. Through observations and interviews we explore
student perceptions of the benefits and pitfalls of this technology for
learning, present new observed interaction patterns, and discuss cognitive and
metacognitive difficulties faced by students. We consider design implications
of these findings, specifically in terms of how tools like Copilot can better
support and scaffold the novice programming experience.Comment: 26 pages, 2 figures, TOCH
Evaluation of a Frame-based Programming Editor
Frame-based editing is a novel way to edit programs, which claims to combine the benefits of textual and block-based programming. It combines structured ‘frames’ of preformatted code, designed to reduce the burden of syntax, with ‘slots’ that allow for efficient textual entry of expressions.
We present an empirical evaluation of Stride, a frame-based language used in the Greenfoot IDE. We compare two groups of middle school students who worked on a short programming activity in Greenfoot, one using the original Java editor, and one using the Stride editor. We found that the two groups reported similarly low levels of frustration and high levels of satisfaction, but students using Stride progressed through the activity more quickly and completed more objectives. The Stride group also spent significantly less time making purely syntactic edits to their code and significantly less time with non-compilable code
Cheat Sheet for Teaching Programming with Comics: Through the Lens of Concept-Language-Procedure Framework
Comics is emerging as a popular medium for providing visual explanations of
programming concepts and procedures. Recent research into this medium opened
the door to new opportunities and tools to advance teaching and learning in
computing. For instance, recent research on coding strip, a form of comic strip
with its corresponding code, led to a new visual programming environment that
generates comics from code and experience report detailing various ways coding
strips can be used to benefit students' learning. However, how comics can be
designed and used to teach programming has not yet been documented in a
concise, accessible format to ease their adoption. To fill this gap, we
developed a cheat sheet that summarizes the pedagogical techniques and designs
teachers can use in their teaching. To develop this cheat sheet, we analyzed
prior work on coding strip, including 26 coding strips and 30 coding strip
design patterns. We also formulated a concept-language-procedure framework to
delineate how comics can facilitate teaching in programming. To evaluate our
cheat sheet, we presented it to 11 high school CS teachers at an annual
conference for computer studies educators and asked them to rate its
readability, usefulness, organization, and their interest in using it for their
teaching. Our analysis suggests that this cheat sheet is easy to
read/understand, useful, well-structured, and interests teachers to further
explore how they can incorporate comics into their teaching
Recommended from our members
Novel approaches to promoting end-user programming
End-user programming has become widespread. The increasing size of this population and the prevalence of barriers that they face has sparked the development of approaches that promote end-user programing by helping them overcome barriers and teaching them programming. Despite the fact that these approaches have done well in achieving those goals, there are still limitations. Specifically, these approaches place high expectations on the amount of prior knowledge that they should have and neglect to nurture their problem-solving skills. To fill in these gaps, our collaborators designed the approaches of Idea Garden and debugging-first. The Idea Garden approach attempts to provide problem-solving support by delivering problem-solving strategies and programming knowledge that help end-user programmers help themselves. In the debugging-first approach, which also makes use of the Idea Garden, users debug existing programs before creating their own. In this thesis we study both approaches, finding that they fulfilled their goals in circumventing those limitations. Additionally, our results inform the design of the Idea Garden in a Debugging-first environment, shed lights on enhancing both approaches, and approaches with similar goals