Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Design and implementation of the UW Illustrated compiler
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Making compiler design relevant for students who will (most likely) never design a compiler
SIGCSE '02 Proceedings of the 33rd SIGCSE technical symposium on Computer science education
MetaCricket: a designer's kit for making computational devices
IBM Systems Journal
Teaching compiler construction using a domain specific language
Proceedings of the 36th SIGCSE technical symposium on Computer science education
Proceedings of the 36th SIGCSE technical symposium on Computer science education
Proceedings of the 38th SIGCSE technical symposium on Computer science education
RobotStudio: a modern IDE-based approach to reality computing
Proceedings of the 38th SIGCSE technical symposium on Computer science education
RobotStudio: a universal IDE for teaching undergraduate computer system courses
Journal of Computing Sciences in Colleges - Papers of the twelfth annual CCSC Northeastern Conference
Project the wiki way: using wiki for computer science course project management
Journal of Computing Sciences in Colleges - Papers of the twelfth annual CCSC Northeastern Conference
Language engineering in the context of a popular, inexpensive robot platform
Proceedings of the 39th SIGCSE technical symposium on Computer science education
A modular approach to language engineering using XML and inexpensive robots
Journal of Computing Sciences in Colleges
Teaching compiler code generation: simpler is better
ACM SIGCSE Bulletin
Gears of our childhood: constructionist toolkits, robotics, and physical computing, past and future
Proceedings of the 12th International Conference on Interaction Design and Children
Hi-index | 0.00 |
Traditionally, the topics of compiler construction and language processing have been taught as an elective course in Computer Science curricula. As such, students may graduate with little understanding or experience with the useful techniques embodied in modern compiler construction.In this paper, we present the design of Chirp, a language specification and compiler implementation. As a language, Chirp is based on Java/C syntax conventions and is matched with the stack-based virtual machine that is built into the simple yet versatile Handy Cricket educational robot controller. As a compiler, the Chirp design is a series of Java components. These modules demonstrate key compiler construction techniques including lexing, parsing, intermediate representation, semantic analysis, error handling and code generation.We have designed a 6-week teaching module to be integrated into an intermediate-level undergraduate programming class. In the module, students will incrementally build the Chirp compiler, culminating with code generation for the Cricket controller. They will test their work on both physical Cricket-based robots and a web-based Cricket simulator. The Chirp system and our pedagogical design provides a realistic and engaging environment to teach compilers in undergraduate core programming courses.