• Corpus ID: 238531608

Toward a Theory of Programming Language and Reasoning Assistant Design: Minimizing Cognitive Load

@article{Coblenz2021TowardAT,
  title={Toward a Theory of Programming Language and Reasoning Assistant Design: Minimizing Cognitive Load},
  author={Michael J. Coblenz},
  journal={ArXiv},
  year={2021},
  volume={abs/2110.03806}
}
Current approaches to making programming languages and reasoning assistants more effective for people focus on leveraging feedback from users and on evaluating the success of particular techniques. These approaches, although helpful, may not result in systems that are as usable as possible, and may not lead to general design principles. This paper advocates for leveraging theories from cognitive science, focusing on cognitive load theory, to design more effective programming languages and… 
1 Citations

Squashing Bugs and Empowering Programmers with User-Centered Programming Language Design

Programming languages can provide strong safety guarantees, enabling software engineers to create reliable software. For example, Rust’s type system ensures that memory is not accessed after it is

References

SHOWING 1-10 OF 29 REFERENCES

User-Centered Programming Language Design: A Course-Based Case Study

A collection of user-centered programming language design methods was taught to a group of eight students and it was observed that natural programming and usability studies helped the students refine their language designs and identify opportunities for improvement, even in the short duration of a course project.

The Effect of Poor Source Code Lexicon and Readability on Developers' Cognitive Load

The effect of poor source code lexicon and readability on developers' cognitive load as measured by a cutting-edge and minimally invasive functional brain imaging technique called functional Near Infrared Spectroscopy (fNIRS).

Human-centered design meets cognitive load theory: designing interfaces that help people think

One theme throughout the discussion is human-centered design that minimizes users' cognitive load, which effectively frees up mental resources for performing better while also remaining more attuned to the world around them.

Live functional programming with typed holes

The semantics borrows machinery from both gradual type theory and contextual modal type theory, combining these and developing additional machinery necessary to continue evaluation past holes while maintaining type safety, and is a proof-of-concept live programming environment where rich dynamic feedback is truly available without gaps.

Partial evaluation for program comprehension

A partial evaluator that performs mainly two tasks: constant propagation and statements simplification and includes an interprocedural alias analysis for program comprehension.

JASPER: an Eclipse plug-in to facilitate software maintenance tasks

JASPER is a new system that allows users to collect relevant artifacts into a working set for easy reference that will significantly reduce time spent on redundant navigations and facilitate multitasking, interruption management, and sharing task information with other developers.

A Brief Overview of Agda - A Functional Language with Dependent Types

We give an overview of Agda, the latest in a series of dependently typed programming languages developed in Gothenburg. Agda is based on Martin-Lof's intuitionistic type theory but extends it with

Cognitive Load During Problem Solving: Effects on Learning

It is suggested that a major reason for the ineffectiveness of problem solving as a learning device, is that the cognitive processes required by the two activities overlap insufficiently, and that conventional problem solving in the form of means-ends analysis requires a relatively large amount of cognitive processing capacity which is consequently unavailable for schema acquisition.

Active code completion

Active code completion is described, an architecture that allows library developers to introduce interactive and highly-specialized code generation interfaces, called palettes, directly into the editor, and one such system is designed, named Graphite, for the Eclipse Java development environment.

The Role of Working Memory in Program Tracing

This work examines the influence of short-term working memory (WM) on a person’s ability to remember program state during tracing and suggests that programs should be analyzed to identify and refactor human-memory-intensive sections of code.