Publications
Interactive evaluation with a REPL (Read-Eval-Print Loop) is a feature of many programming environments, especially in environments for teaching programming. However, REPLs do have confusions and stumbles for beginners. We identify several weaknesses of REPLs with a worked example from an existing programming environment in active use, distilled from our experience with novices. We then present an updated programming environment that mitigates these weaknesses and discuss its overall design.Interactive evaluation with a REPL (Read-Eval-Print Loop) is a feature of many programming environments, especially in environments for teaching programming. However, REPLs do have confusions and stumbles for beginners related to navigating between programs and interactive evaluation. We identify several specific weaknesses of REPLs with a worked example from an existing programming environment in active use, distilled from our experience with novices. We then present an updated programming environment that mitigates these weaknesses by combining the program editor and REPL, so the user can benefit from the best of both.
We propose that K-12 data science curricula should be based on four key ingredients: two are technical (programming and statistics, with visualization sitting at their intersection), while two are human-facing (meaningful domains, and civic responsibility). We describe their relationship and argue for their importance. Based on this, we then present a curriculum (currently in use; name anonymized). The curriculum is designed for integration into multiple disciplines and settings. It achieves this by letting different contexts choose datasets that are most meaningful, and creating artifacts that are authentic to the context. It recommends that the freedom to choose a dataset be further devolved to individual students, letting them choose personally meaningful data to spark engagement. Finally, we initiate the process of evaluating this curriculum. We create two assessment instruments, one to assess personalization and engagement and the other to evaluate learning. We believe these assessments can be adapted to other curricula too. We provide very preliminary data gathered from students and teachers, respectively, on the two instruments.
Integrating computing into other subjects promises to address many challenges to offering standalone CS courses in K-12 contexts. Integrated curricula must be designed carefully, however, to both meet learning objectives of the host discipline and to gain traction with teachers. We describe the multi-year evolution of Bootstrap, a curriculum for integrating computing into middle- and high-school mathematics. We discuss the initial design and the various modifications we have made over the years to better support math instruction, leading to our goal of using integrated curricula to cover standards in both math and CS. We provide advice for others aiming for integration and raise questions for CS educators about how we might better support learning in other disciplines.
Modern systems consist of large numbers of languages, frameworks, libraries, APIs, and more. Each has characteristic behavior and data. Capturing these in semantics is valuable not only for understanding them but also essential for formal treatment (such as proofs). Unfortunately, most of these systems are defined primarily through implementations, which means the semantics needs to be \emph{learned}. We describe the problem of learning a semantics, provide a structuring process that is of potential value, and also outline our failed attempts at achieving this so far.
We revisit the World model of functional event-based programming and extract a new primitive, a Reactor, to enable programmatic control over these reactive programs.
We expand the space of programs that can be synthesized from templates, and attempt to apply it to derive desugaring transformations for constructs in a lambda calculus.
We explore an extensible product line of type systems for JavaScript, and explain the engineering and ergonomic choices choices we made in designing this system.
- Paper (ACM DL):
- Presentation:
- pptx
- Project page:
- available here
- Citation:
- BibTeX
We develop a sound static type system for JavaScript to detect violations of Private Browsing Mode in third-party Firefox extensions.
- Paper:
- Presentation:
- pptx
- Project page:
- available here
- Technical report:
- Citation:
- BibTeX
We develop a static type system for analyzing jQuery client code for query errors, where jQuery results may contain too many, too few, or simply the wrong page elements, leading to unintended runtime behavior.
- Paper:
- Presentation:
- pptx
- Project page:
- available here
- Citation:
- BibTeX
We define a model of overlays that dynamically compose declarative UI fragments onto a base document, and define conflict detection algorithms over this model.
- Paper (ACM DL):
- Presentation:
- pptx
- Project page:
- available here
- Citation:
- BibTeX
We present S5, a semantics for the strict mode of the ECMAScript 5.1 (JavaScript) programming language.
- Paper (ACM DL):
- Project page:
- available here
- Citation:
- BibTeX
We define a concise, executable formal model of event behavior in the DOM, with high fidelity to the DOM specification.
- Paper:
- Project page:
- available here
- Citation:
- BibTeX
I examine the challenges in supporting powerful, pervasive extensibility in web-browsers, and propose mechanisms for enabling better analytical tools.
- Paper:
- Presentation:
- html
- Project page:
- available here
- Citation:
- BibTeX
We present C3, an implementation of the HTML/CSS/JS platform designed for web-client research and experimentation, particularly the role of extensibility throughout the platform.
- Paper:
- Project page:
- available here
- Citation:
- BibTeX
We argue that browser extensions are themselves an important facet of web applications, and are in need of serious programing-language attention.
- Paper (ACM DL):
- Presentation:
- ppt
- Project page:
- available here
- Citation:
- BibTeX
We propose a language extension to JavaScript, based on dynamic aspect weaving, that would enable principled, semantically sound third-party modification of existing code.
- Paper (ACM DL):
- Presentation:
- pptx
- Project page:
- available here
- Citation:
- BibTeX
We present a novel approach to searching for error messages in programs with type errors (currently, Caml and C++), that provides better error messages while simplifying compiler construction.
- Paper (ACM DL):
- Slides:
- ppt
- Citation:
- BibTeX
- Project page:
- available here
We present a new way to generate type-error messages in a polymorphic, implicitly, and strongly typed language. This approach separates error-message generation from typechecking, and improves feedback to programmers.
- Paper (ACM DL):
- Slides:
- ppt
- Citation:
- BibTeX
- Project page:
- available here
Contact
- Email (essential):
- (first initial + last name) {at} ccs.neu.edu
- Location (likely):
- West Village H, Office 326
- Post (possible):
-
Northeastern University
Khoury College of Computer Sciences
360 Huntington Ave, 2nd floor
Boston, MA 02115