Jack Wrenn

TL;DR:

Ph.D. student in Computer Science at Brown University who sometimes writes.

Open Source

Author

typic
Transmute memory fearlessly.
tfw
Shell utility for conditional redirection.
bam
Use the PC motherboard speaker as a monophonic MIDI synthesizer.
midiplex
Volume-aware splitting of a polyphonic MIDI stream into multiple, monophonic streams.
midinet
Fire MIDI events across the network.
Fireplace
A no-nonsense command-line graphing utility written in Rust.
Liber Brunoniana
Using NLP to breath new life into old encyclopedias.
Flake
An infinite whiteboard for stylus+touch devices written in Rust.

Maintainer

Itertools
Iterator adaptors, iterator methods, free functions, and macros for Rust iterators.

Core Contributor

Pyret
A programming language designed by computer science educators, for computer science education. I prototyped Pyret's initial support for tabular data operations.
Code.Pyret.Org
The best way to write Pyret programs. I overhauled Pyret's error messages.
nalgebra
Linear algebra library for the Rust programming language. Contributed numerous improvements to ergonomics and memory safety.

Minor Contributor

google/zerocopy
Utilities for zero-copy parsing and serialization. Fixed unecessarily restrictive soudness limitations.
slightlyoutofphase/staticvec
A Vec alternative backed by an array, using const generics. Improved panic recovery.
rust-lang/rust
Compile-time dimensional analysis for Rust. Added implementation of arbitrary_enum_discriminants RFC.
paholg/dimensioned
Compile-time dimensional analysis for Rust. Fixed typo in type name.
novacrazy/numeric-array
Efficient numeric trait implementations on arrays. Fixed breaking change fallout.
wmedrano/wmidi
MIDI parsing library for Rust. Added various trait implementations.
lloydmeta/frunk
Generic type-level programming for Rust. Improved package metadata.
sdleffler/vosealias-rs
Rust implementation of the Walker-Vose alias method. Added iterator interface.
cgag/loc
Count lines of code quickly. Added Pyret support.
brandur/sorg
A Go-based static site generator that compiles brandur.org. Fixed spacing issue.
etcet/HNES
A Hacker News extension. Fixed comment count.
leachim6/hello-world
Hello world in every computer language. Added Pyret.

Publications

Error Messages Are Classifiers
Co-Authors
Shriram Krishnamurthi
Downloads
Paper Talk
Abstract
We take the perspective that error reports are really classifiers of program information. They should therefore be subjected to the same measures as other classifiers (e.g., precision and recall). We formalize this perspective as a process for assessing error reports, describe our application of this process to Pyret, and present a preliminary study on the utility of the resulting error reports.
DOI
10.1145/3133850.3133862
Who Tests the Testers?
Co-Authors
Shriram Krishnamurthi, Kathi Fisler
Downloads
Paper
Abstract
Instructors routinely use automated assessment methods to evaluate the semantic qualities of student implementations and, sometimes, test suites. In this work, we distill a variety of automated assessment methods in the literature down to a pair of assessment models. We identify pathological assessment outcomes in each model that point to underlying methodological flaws. These theoretical flaws broadly threaten the validity of the techniques, and we actually observe them in multiple assignments of an introductory programming course. We propose adjustments that remedy these flaws and then demonstrate, on these same assignments, that our interventions improve the accuracy of assessment. We believe that with these adjustments, instructors can greatly improve the accuracy of automated assessment.
DOI
10.1145/3230977.3230999
Executable Examples for Programming Problem Comprehension
Co-Authors
Shriram Krishnamurthi
Downloads
Paper
Abstract

Flawed problem comprehension leads students to produce flawed implementations. However, testing alone is inadequate for checking comprehension: if a student develops both their tests and implementation with the same misunderstanding, running their tests against their implementation will not reveal the issue. As a solution, some pedagogies encourage the creation of input–output examples independent of testing—but seldom provide students with any mechanism to check that their examples are correct and thorough.

We propose a mechanism that provides students with instant feedback on their examples, independent of their implementation progress. We assess the impact of such an interface on an introductory programming course and find several positive impacts, some more neutral outcomes, and no identified negative effects.

DOI
10.1145/3291279.3339416

Me, Elsewhere