Publications

(2019). Auto-Generating Visual Exercises for Learning Program Semantics. Proceedings of the Conference on Innovation and Technology in Computer Science Education (ITiCSE).

Project Digital Library

(2019). The Error Landscape: Characterizing the Mistakes of Novice Programmers. Proceedings of the ACM Technical Symposium on Computer Science Education (SIGCSE).

Project Digital Library

(2017). An Automated System for Interactively Learning Software Testing. Proceedings of the Conference on Innovation and Technology in Computer Science Education (ITiCSE).

Project Digital Library

(2016). Data-Driven Test Case Generation for Automated Programming Assessment. Proceedings of the Conference on Innovation and Technology in Computer Science Education (ITiCSE).

Project Digital Library

(2016). TPC: Target-Driven Parallelism Combining Prediction and Correction to Reduce Tail Latency in Interactive Services. Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS).

Digital Library

(2016). Leveraging Managed Runtime Systems to Build, Analyze, and Optimize Memory Graphs. Proceedings of the International Conference on Virtual Execution Environments (VEE).

Digital Library

(2015). Surviving Peripheral Failures in Embedded Systems. Proceedings of the USENIX Annual Technical Conference.

(2014). Medusa: Managing Concurrency and Communication in Embedded Systems. Proceedings of the USENIX Annual Technical Conference.

(2014). Facilitating Human Interaction in an Online Programming Course. Proceedings of the ACM Technical Symposium on Computer Science Education (SIGCSE).

Project Digital Library

(2014). An Environment for Learning Interactive Programming. Proceedings of the ACM Technical Symposium on Computer Science Education (SIGCSE).

Project Digital Library

(2013). Reducing DRAM Row Activations with Eager Read/Write Clustering. ACM Transactions on Architecture and Code Optimization.

(2013). Plinko: Building Provably Resilient Forwarding Tables. Proceedings of the ACM Workshop on Hot Topics in Networks (HotNets).

(2013). Adaptive Parallelism for Web Search. Proceedings of the EuroSys Conference.

(2012). Design and Implementation of an Embedded Python Run-Time System. Proceedings of the USENIX Annual Technical Conference.

(2011). A Scalability Study of Network Enterprise Architectures. Proceedings of the Symposium on Architectures for Networking and Communications Systems (ANCS).

(2011). SpecTLB: A Mechanism for Speculative Address Translation. Proceedings of the International Symposium on Computer Architecture (ISCA).

Project Digital Library

(2010). sNICh: Efficient Last Hop Networking in the Data Center. Proceedings of the Symposium on Architectures for Networking and Communications Systems (ANCS).

Project Digital Library

(2010). Axon: A Flexible Substrate for Source-routed Ethernet. Proceedings of the Symposium on Architectures for Networking and Communications Systems (ANCS).

(2010). Translation Caching: Skip, Don't Walk (the Page Table). Proceedings of the International Symposium on Computer Architecture (ISCA).

Project Digital Library

(2010). The Hadoop Distributed Filesystem: Balancing Portability and Performance. Proceedings of the International Symposium on Performance Analysis of Systems and Software (ISPASS).

(2009). The Axon Network Device: Prototyping with NetFPGA. Proceedings of the Workshop on Architectural Research Prototyping.

(2009). Achieving 10Gbps Using Safe and Transparent Network Interface Virtualization. Proceedings of the International Conference on Virtual Execution Environments (VEE).

(2008). Protection Strategies for Direct Access to Virtualized I/O Devices. Proceedings of the USENIX Annual Technical Conference.

(2008). Explaining the Impact of Network Transport Protocols on SIP Proxy Performance. Proceedings of the International Symposium on Performance Analysis of Systems and Software (ISPASS).

(2008). Scheduling I/O in Virtual Machine Monitors. Proceedings of the International Conference on Virtual Execution Environments (VEE).

(2007). RiceNIC: Prototyping Network Interfaces. Proceedings of the Workshop on Architectural Research Prototyping.

(2007). RiceNIC: A Reconfigurable Network Interface for Experimental Research and Education. Proceedings of the Workshop on Experimental Computer Science.

(2007). Single-ended Coding Techniques for Off-chip Interconnects to Commodity Memory. Proceedings of the Design Automation and Test in Europe Conference (DATE).

(2007). Concurrent Direct Network Access for Virtual Machine Monitors. Proceedings of the International Symposium on High-Performance Computer Architecture (HPCA).

(2006). Connection Handoff Policies for TCP Offload Network Interfaces. Proceedings of the Symposium on Operating Systems Design and Implementation (OSDI).

(2006). Dependable $neq$ Unaffordable. Proceedings of the Workshop on Architectural and System Support for Improving Software Dependability.

(2006). TCP Offload through Connection Handoff. Proceedings of the EuroSys Conference.

(2006). Parallelization Strategies for Network Interface Firmware. Proceedings of the Workshop on Optimizations for DSP and Embedded Systems.

(2006). Optimizing Kernel Block Memory Operations. Proceedings of the Workshop on Memory Performance Issues.

(2006). Network Stack Parallelization Strategies for Modern Multiprocessors. submission to IEEE Transactions on Parallel and Distributed Systems.

(2005). Context-independent codes for off-chip interconnects. Workshop on Power-aware Computer Systems.

(2005). Context-Independent Codes for Off-Chip Interconnects. Lecture Notes in Computer Science.

(2005). Network Interface Data Caching. IEEE Transactions on Computers.

(2005). An Efficient Programmable 10 Gigabit Ethernet Network Interface Card. Proceedings of the International Symposium on High-Performance Computer Architecture (HPCA).

(2004). Memory Controller Optimizations for Web Servers. Proceedings of the International Symposium on Microarchitecture (MICRO).

(2004). Context-independent Codes for Off-chip Interconnects. Proceedings of the Workshop on Power-Aware Computer Systems.

(2004). Comparing Ethernet and Myrinet for MPI Communication. Proceedings of the Workshop on Languages, Compilers, and Run-Time Support for Scalable Systems.

(2004). An Event-driven Architecture for MPI Libraries. The Los Alamos Computer Science Institute Symposium.

(2004). Isolating the Performance Impacts of Network Interface Cards Through Microbenchmarks. Proceedings of the Joint International Conference on Measurement and Modeling of Computer Systems (SIGMETRICS).

(2003). Exploiting Task-level Concurrency in a Programmable Network Interface. Proceedings of the Symposium on Principles and Practice of Parallel Programming (PPoPP).

(2003). Exploring the VLSI Scalability of Stream Processors. Proceedings of the International Symposium on High-Performance Computer Architecture (HPCA).

(2002). Increasing Web Server Throughput with Network Interface Data Caching. Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS).

(2002). The Imagine Stream Processor. Proceedings of the International Conference on Computer Design (ICCD).

(2002). A Programmable Baseband Processor Design for Software Defined Radios. Proceedings of the Midwest Symposium on Circuits and Systems.

(2000). Communication Scheduling. Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS).

(2000). Polygon Rendering on a Stream Architecture. Proceedings of the SIGGRAPH/Eurographics Workshop on Graphics Hardware.

(2000). Memory Access Scheduling. Proceedings of the International Symposium on Computer Architecture (ISCA).

(2000). Register Organization for Media Processing. Proceedings of the International Symposium on High-Performance Computer Architecture (HPCA).