Teaching and Learning Programming
153 papers on this topic
Giving Feedback on Interactive Student Programs with Meta-Exploration
Developing interactive software, such as websites or games, is a particularly engaging way to learn computer science. However, teaching and giving feedback on such software is time-consuming --...
Improving Socratic Question Generation using Data Augmentation and Preference Optimization
The Socratic method is a way of guiding students toward solving a problem independently without directly revealing the solution to the problem. Although this method has been shown to significantly...
Guiding Genetic Programming with Graph Neural Networks
In evolutionary computation, it is commonly assumed that a search algorithm acquires knowledge about a problem instance by sampling solutions from the search space and evaluating them with a...
Learning Program Synthesis for Integer Sequences from Scratch
We present a self-learning approach for synthesizing programs from integer sequences. Our method relies on a tree search guided by a learned policy. Our system is tested on the On-Line...
Measuring The Impact Of Programming Language Distribution
Current benchmarks for evaluating neural code models focus on only a small subset of programming languages, excluding many popular languages such as Go or Rust. To ameliorate this issue, we...
PortfolioMentor: Multimodal Generative AI Companion for Learning and Crafting Interactive Digital Art Portfolios
Digital art portfolios serve as impactful mediums for artists to convey their visions, weaving together visuals, audio, interactions, and narratives. However, without technical backgrounds, design...
Multi-Representation Genetic Programming: A Case Study on Tree-based and Linear Representations
Existing genetic programming (GP) methods are typically designed based on a certain representation, such as tree-based or linear representations. These representations show various pros and cons...
When elephants nodded and dolls spoke: Bringing together robotics and storytelling for environmental literacy
Inculcating principles of environmental stewardship among the children and youth is needed urgently today for creating a sustainable future. This paper presents a model for promoting environment...
Efficient Feedback and Partial Credit Grading for Proof Blocks Problems
Proof Blocks is a software tool that allows students to practice writing mathematical proofs by dragging and dropping lines instead of writing proofs from scratch. Proof Blocks offers the...
Using Scratch to Teach Undergraduate Students' Skills on Artificial Intelligence
This paper presents a educational workshop in Scratch that is proposed for the active participation of undergraduate students in contexts of Artificial Intelligence. The main objective of the...
Embedding API Dependency Graph for Neural Code Generation
The problem of code generation from textual program descriptions has long been viewed as a grand challenge in software engineering. In recent years, many deep learning based approaches have been...
Introducing Systems Thinking as a Framework for Teaching and Assessing Threat Modeling Competency
Computing systems face diverse and substantial cybersecurity threats. To mitigate these cybersecurity threats, software engineers need to be competent in the skill of threat modeling. In industry...
Automatic Assessment of the Design Quality of Python Programs with Personalized Feedback
The assessment of program functionality can generally be accomplished with straight-forward unit tests. However, assessing the design quality of a program is a much more difficult and nuanced...
Latent Programmer: Discrete Latent Codes for Program Synthesis
In many sequence learning tasks, such as program synthesis and document summarization, a key problem is searching over a large space of possible output sequences. We propose to learn...
Representing Partial Programs with Blended Abstract Semantics
Synthesizing programs from examples requires searching over a vast, combinatorial space of possible programs. In this search process, a key challenge is representing the behavior of a partially...
Multi Expression Programming -- an in-depth description
Multi Expression Programming (MEP) is a Genetic Programming variant that uses a linear representation of chromosomes. MEP individuals are strings of genes encoding complex computer programs. When...
SPoC: Search-based Pseudocode to Code
We consider the task of mapping pseudocode to long programs that are functionally correct. Given test cases as a mechanism to validate programs, we search over the space of possible translations...
ImageLab: Simplifying Image Processing Exploration for Novices and Experts Alike
Image processing holds immense potential for societal benefit, yet its full potential is often accessible only to tech-savvy experts. Bridging this knowledge gap and providing accessible tools for...