MieruCompiler: integrated visualization tool with "horizontal slicing" for educational compilers

This paper proposes a novel visualization tool for educational compilers, called MieruCompiler. Educational compilers that generate native assembly code like i386 have many practical and pedagogical advantages, but they also have a disadvantage that the undergraduate students need to acquire a wide range of knowledge on native machine instructions, assembly directives, application binary interface (ABI), so on. To reduce this learning cost, MieruCompiler provides various visualizations as a rich internet application (RIA) including: (1) highlighting all related slices (called "horizontal slicing" after [13], but not implemented in [13]) among the source code, abstract syntax tree, assembly code, symbol table, stack layout and compiler code, when the user hovers the mouse pointer over a piece of them, (2) displaying tooltips for machine instructions, assembly directives, etc., and (3) visualizing stack layouts which are very likely to be implicit. As a preliminary evaluation, MieruCompiler was used in two universities, which produced promising results.

[1]  Martin Ruckert,et al.  Teaching compiler construction and language design: making the case for unusual compiler projects with postscript as the target language , 2007, SIGCSE.

[2]  Saumya K. Debray Making compiler design relevant for students who will (most likely) never design a compiler , 2002, SIGCSE '02.

[3]  Karen Donathan,et al.  The development and use of scoring rubrics: (or how to grade thousands of exams without losing your mind) , 2010, SIGCSE.

[4]  Andrew W. Appel,et al.  Modern Compiler Implementation in Java , 1997 .

[5]  John S. Mallozzi Thoughts on and tools for teaching compiler design , 2005 .

[6]  Evgeny A. Eremin Educational Pascal compiler into MMIX code , 2006, Baltic Sea '06.

[7]  Christopher D. Hundhausen,et al.  Does studio-based instruction work in CS 1?: an empirical comparison with a traditional approach , 2010, SIGCSE.

[8]  Alan Kaplan,et al.  CUPV—a visualization tool for generated parsers , 2000, SIGCSE '00.

[9]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[10]  Alexander Aiken,et al.  Cool: a portable project for teaching compiler construction , 1996, SIGP.

[11]  R. Daniel Resler,et al.  VisiCLANG—a visible compiler for CLANG , 1990, SIGP.

[12]  Steven R. Vegdahl,et al.  Using visualization tools to teach compiler design , 2000 .

[13]  Marc L. Corliss,et al.  Bantam: a customizable, java-based, classroom compiler , 2008, SIGCSE '08.

[14]  Niklaus Wirth,et al.  Algorithms + Data Structures = Programs , 1976 .

[15]  Elizabeth L. White,et al.  Hide and show: using real compiler code for teaching , 2005 .

[16]  Christopher Healy,et al.  A flexible tool for visualizing assembly code , 2005 .

[17]  David Ginat,et al.  The baffling CS notions of "as-if" and "don't-care" , 2010, SIGCSE.

[18]  Kristy Andrews,et al.  Design and implementation of the UW Illustrated compiler , 1988, PLDI '88.

[19]  Jaime Urquiza-Fuentes,et al.  Visualizing the symbol table , 2006, ITICSE '06.

[20]  David B. Whalley,et al.  Graphical visualization of compiler optimizations , 1995, J. Program. Lang..

[21]  Lori Russell-Dag,et al.  In their words: student feedback on an international project collaboration , 2010, SIGCSE.

[22]  Kristy Elizabeth Boyer,et al.  Principles of asking effective questions during student problem solving , 2010, SIGCSE.

[23]  Niklaus Wirth,et al.  Algorithms & data structures , 1985 .

[24]  M. Eduard Tudoreanu,et al.  Designing effective program visualization tools for reducing user's cognitive effort , 2003, SoftVis '03.