Teaching and Learning Programming
153 papers on this topic
Automatic Differentiation via Effects and Handlers: An Implementation in Frank
Automatic differentiation (AD) is an important family of algorithms which enables derivative based optimization. We show that AD can be simply implemented with effects and handlers by doing so in...
Specifying Concurrent Programs in Separation Logic: Morphisms and Simulations
In addition to pre- and postconditions, program specifications in recent separation logics for concurrency have employed an algebraic structure of resources---a form of state transition...
A Visual Language for Composable Inductive Programming
We present Zoea Visual which is a visual programming language based on the Zoea composable inductive programming language. Zoea Visual allows users to create software directly from a specification...
Obsidian: Typestate and Assets for Safer Blockchain Programming
Blockchain platforms are coming into broad use for processing critical transactions among participants who have not established mutual trust. Many blockchains are programmable, supporting smart...
An Empirical Assessment on Affective Reactions of Novice Developers when Applying Test-Driven Development
We study whether and in which phase Test-Driven Development (TDD) influences affective states of novice developers in terms of pleasure, arousal, dominance, and liking. We performed a controlled...
TreeCaps: Tree-Structured Capsule Networks for Program Source Code Processing
Program comprehension is a fundamental task in software development and maintenance processes. Software developers often need to understand a large amount of existing code before they can develop...
Neural Programmer-Interpreters
We propose the neural programmer-interpreter (NPI): a recurrent and compositional neural network that learns to represent and execute programs. NPI has three learnable components: a task-agnostic...
Stepping Stones to Inductive Synthesis of Low-Level Looping Programs
Inductive program synthesis, from input/output examples, can provide an opportunity to automatically create programs from scratch without presupposing the algorithmic form of the solution. For...
Predicting Algorithm Classes for Programming Word Problems
We introduce the task of algorithm class prediction for programming word problems. A programming word problem is a problem written in natural language, which can be solved using an algorithm or a...
Generating Concurrent Programs From Sequential Data Structure Knowledge Using Answer Set Programming
We tackle the problem of automatically designing concurrent data structure operations given a sequential data structure specification and knowledge about concurrent behavior. Designing concurrent...
A Grammar-Based Structural CNN Decoder for Code Generation
Code generation maps a program description to executable source code in a programming language. Existing approaches mainly rely on a recurrent neural network (RNN) as the decoder. However, we find...
Program Classification Using Gated Graph Attention Neural Network for Online Programming Service
The online programing services, such as Github,TopCoder, and EduCoder, have promoted a lot of social interactions among the service users. However, the existing social interactions is rather...
A Guide to Teaching Data Science
Demand for data science education is surging and traditional courses offered by statistics departments are not meeting the needs of those seeking training. This has led to a number of opinion...
Neural Guided Constraint Logic Programming for Program Synthesis
Synthesizing programs using example input/outputs is a classic problem in artificial intelligence. We present a method for solving Programming By Example (PBE) problems by using a neural model to...
The CodRep Machine Learning on Source Code Competition
CodRep is a machine learning competition on source code data. It is carefully designed so that anybody can enter the competition, whether professional researchers, students or independent...
Declarative Programming for Microcontrollers -- Datalog on Arduino
In this paper we describe an approach to programming microcontrollers based on the Arduino platform using Datalog as a clear and concise description language for system behaviors. The application...
"Computer Science for all": Concepts to engage teenagers and non-CS students in technology
Knowledge in Computer Science (CS) is essential, and companies have increased their demands for CS professionals. Despite this, many jobs remain unfilled. Furthermore, employees with computational...
Embedded EthiCS: Integrating Ethics Broadly Across Computer Science Education
Computing technologies have become pervasive in daily life, sometimes bringing unintended but harmful consequences. For students to learn to think not only about what technology they could create,...