252 papers · page 1 of 13
Jean Pichon-Pharabod
Many primary school age children find developing games and interactive animations very motivating, and this has been successfully leveraged by several educational programming environments. However, most of these environments, like Scratch and Microsoft MakeCode, are fundamentally…
Vladyslav Bilyk
Transformation of context-free grammars into LL(1) form enables construction of simple and efficient parsers. However, if semantics are overlooked, the transformation is likely to result in a complex grammar that needs to be manually aligned with the original semantics. This work…
Tomer Katz, Hila Peleg
Current IDE-integrated program synthesis leaves no indication of what code was auto-generated, let alone an explanation of why. This makes both identifying and understanding machine-generated code hard. We therefore add example scopes, comments enclosing synthesized code that doc…
Frederik Vandeputte
Generative AI (GenAI) has emerged as a transformative technology, demonstrating remarkable capabilities across diverse application domains. However, GenAI faces several major challenges in developing reliable and efficient GenAI-empowered systems due to its unpredictability and i…
Skyler Austen, Shriram Krishnamurthi, Kathi Fisler
Users often struggle with cloud file-sharing applications. Problems appear to arise not only from interface flaws, but also from misunderstanding the underlying semantics of operations like linking, attaching, downloading, and editing. We argue that these difficulties echo long-s…
Joshua Dahl, Frederick C. Harris
In this paper, we examine how Entity Component Systems, a data structure that has been gaining popularity in game engines, can benefit compiler and interpreter design. ECS does not consistently provide the same performance benefits that games utilize it for; however, it does make…
Maximilian Kodetzki, Tabea Bordis, Alex Potanin, Ina Schaefer
Correctness-by-Construction engineering (CbC) is a refinement-based approach to develop functionally correct programs based on a formal specification. By correctly applying refinement rules during development, CbC enables detection of bugs during program construction, unlike post…
Caleb Malchik, Joan Feigenbaum
User interfaces for accessing modern Internet services are increasingly defined by the services themselves, leaving users with little control over the interfaces they use on a daily basis. This architecture and the economic drive to monetize users’ activity has lead to a status q…
Andrew Fawcet, James Noble, Michael Homer
Dala is an "as simple as possible" concurrent object-oriented language designed to avoid data races. Dala objects come in three safe flavours: immutable, isolated, and local, plus a fourth unsafe flavour. The objects are organised into an hierarchy so that e.g. immutable objects …
Matthew Sotoudeh
As computer systems grow ever larger and more complex, a crucial task in software development is for one person (the system expert) to communicate to another (the system novice) how a certain program works. This paper reports on the author’s experiences with a paradigm for progra…
Nicholas Morris, Blair Archibald, S. Hessam M. Mehr
Synthetic peptides are becoming increasingly important in industry and academia, including applications in peptide-based therapeutics. While Solid Phase Peptide Synthesis (SPPS) is largely automated, current software options for describing this process are instrument-specific, wi…
Eagon Meng, Daniel Jackson
The opportunities offered by LLM coders (and their current limitations) demand a reevaluation of how software is structured. Software today is often “illegible”—lacking a direct correspondence between code and observed behavior—and insufficiently modular, leading to a failure of …
Kevin Graaf
Multilingual computer text handling appears at present unapproachably difficult. Despite considerable progress made over the past three decades, major open problems remain in encoding, interactively editing, programmatically transforming, and displaying text in many of the world'…
Kartik Chandra, Amanda Liu, Jonathan Ragan-Kelley, Joshua B. Tenenbaum
A "quine" is a deterministic program that prints itself. In this essay, I will show you a "gauguine": a probabilistic program that infers itself. A gauguine is repeatedly asked to guess its own source code. Initially, its chances of guessing correctly are of course minuscule. But…
Jeremy Singer, Steve Draper
Esoteric programming languages are challenging to learn, but their unusual features and constraints may serve to improve programming ability. From languages designed to be intentionally obtuse (e.g. INTERCAL) to others targeting artistic expression (e.g. Piet) or exploring the na…
Joel Jakubovic
Unix and Smalltalk are very different in the details, but bear curious similarities in their broad outlines. Prior work has made these comparisons at a high level and sketched a path for retrofitting Smalltalk's advantages onto Unix (without compromising the advantages of the lat…
Charles Averill
Formal Methods (FM) will not arrive with fanfare. It will spread quietly, not as a revolution, but as a patch: reviewed, merged, and dismissed. In the coming century, the decades-old practice of simply testing code will collapse under the weight of cyberattacks and development co…
Colin S. Gordon
Research in programming languages and software engineering are broadly concerned with the study of aspects of computer programs: their syntactic structure, the relationship between form and meaning (semantics), empirical properties of how they are constructed and deployed, and mo…
Lu Wilson, David H. Ackley
This essay, based on a series of discussions between the authors, is a loosely edited collage in which we work to flesh out our shared interests in non-traditional machines and coding mechanisms. We primarily focused on the idea that all human language can usefully be viewed in p…
Konrad Hinsen
Information is an essential aspect of how we interact with the world around us. We acquire information and then integrate it to build knowledge, understanding, and trust, which in turn serve in preparing actions. Information technology (IT) is supposed to support all these phases…