Publications
Do Values Grow on Trees?: Expression Integrity in Functional Programming
Guillaume Marceau, Kathi Fisler, Shriram Krishnamurthi
SIGCSE International Computing Education Research Workshop
We posit that functional programmers employ a notion called expression integrity to understand programs. We attempt to study the extent to which both novices and experts use this notion as they program, discuss the difficulties that arise in measuring this, and offer some observational findings.…
Mind Your Language: On Novices' Interactions with Error Messages
Guillaume Marceau, Kathi Fisler, Shriram Krishnamurthi
SPLASH/Onward!
Error messages are one of the most important tools that a language offers its programmers. For novices, this feedback is especially critical. Error messages typically contain both a textual description of the problem and an indication of where in the code the error occurred. This paper reports on a…
Measuring the Effectiveness of Error Messages Designed for Novice Programmers
Guillaume Marceau, Kathi Fisler, Shriram Krishnamurthi
Technical Symposium on Computer Science Education (SIGCSE)
Good error messages are critical for novice programmers. Recognizing this, the DrRacket programming environment provides a series of pedagogically-inspired language subsets with error messages customized to each subset. We apply human-factors research methods to explore the effectiveness of these…
The HAL Project -- Discovering local artists through Zeroconf
Pascal Charest, Michael Lenczner, Guillaume Marceau
Linux Journal
HAL boxes are small NSLU network storage devices that we install locally at certain of our Wi-Fi hotspots and then remotely fill with music and movies by local creators. Because the box is directly on the local area network, the content can be streamed at HDTV resolution without stalls or buffering…
The Design and Implementation of a Dataflow Language for Scriptable Debugging
G. Marceau, G. H. Cooper, J. P. Spiro, S. Krishnamurthi, S. P. Reiss
Automated Software Engineering Journal (ASE) (by invitation)
Debugging is a laborious, manual activity that often involves the repetition of common operations. Ideally, users should be able to describe these repetitious operations as little programs. Debuggers should therefore be programmable, or scriptable. The operating environment of these scripts,…
The Case for Analysis Preserving Language Transformation
X. Zhang, L. Koved, M. Pistoia, S. Weber, T. Jaeger, G. Marceau
International Symposium on Software Testing and Analysis
Static analysis has gained much attention over the past few years in applications such as bug finding and program verification. As software becomes more complex and componentized, it is common for software systems and applications to be implemented in multiple languages. There is thus a strong need…
Using Wireless Ethernet for Localization
A. Ladd, K. E. Bekris, G. Marceau, A. Rudys, L. E. Kavraki, D. S. Wallach
IEEE/RJS International Conference on Intelligent Robots and Systems
IEEE 802.11b wireless Ethernet is rapidly becoming the standard for in-building and short-range wireless communication. Many mobile devices such as mobile robots, laptops and PDAs already use this protocol for wireless communication. Many wireless Ethernet cards measure the signal strength of…
Robotics-Based Location Sensing For Wireless Ethernet
A.M. Ladd, K.E. Bekris, G. Marceau, A. Rudys, D.S. Wallach, L.E. Kavraki
International Conference on Mobile Computing and Networking
A key subproblem in the construction of location-aware systems is the determination of the position of a mobile device. This paper describes the design, implementation and analysis of a system for determining position inside a building from measured RF signal strengths of packets on an IEEE 802.11b…
Efficient Inference Of Static Types For Java Bytecode
Etienne M. Gagnon, Laurie J. Hendren, Guillaume Marceau
Static Analysis Symposium
In this paper, we present an efficient and practical algorithm for inferring static types for local variables in a 3-address, stackless, representation of Java bytecode. By decoupling the type inference problem from the low level bytecode representation, and abstracting it into a constraint system,…