TL;DR:
Ph.D. student in Computer Science at Brown University.
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