Extreme programming explained: embrace change
Extreme programming explained: embrace change
Active design reviews: principles and practices
ICSE '85 Proceedings of the 8th international conference on Software engineering
The structure of the “THE”-multiprogramming system
Communications of the ACM
A portable compiler: theory and practice
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Mythical Man-Month: Essays on Softw
The Mythical Man-Month: Essays on Softw
Constructive Methods of Program Design
Proceedings of the Proceedings of the 1st European Cooperation in Informatics on ECI Conference 1976
Principles of Program Design
Building an XQuery interpreter in a compiler construction course
Proceedings of the 36th SIGCSE technical symposium on Computer science education
Toward an engineering discipline for grammarware
ACM Transactions on Software Engineering and Methodology (TOSEM)
A compiler tutorial scaled for the programming languages course
Proceedings of the 37th SIGCSE technical symposium on Computer science education
Students working for students on programming courses
Computers & Education
Integrating software engineering in computer programming education
Proceedings of the 10th ACM conference on SIG-information technology education
A hybrid learning compiler course
ICHL'10 Proceedings of the Third international conference on Hybrid learning
A proposal for automatic evaluation in a compiler construction course
Proceedings of the 16th annual joint conference on Innovation and technology in computer science education
A pedagogical view on software modeling and graph-structured diagrams
ICSE'05 Proceedings of the 2005 international conference on Software Engineering Education in the Modern Age
Comparison of context-free grammars based on parsing generated test data
SLE'11 Proceedings of the 4th international conference on Software Language Engineering
Hi-index | 0.00 |
A compiler course with a long-term project is a staple of many undergraduate computer science curricula, and often a cornerstone of a program's applied-engineering component. Software engineering expertise can help a student complete such a course, yet that expertise is often lacking. This problem can be addressed without detracting from the core class materials by integrating a few simple software engineering practices into the course. A domain-specific, risk-driven approach minimizes overhead and reinforces the compiler's material, while treating the project as a "real world" enterprise reinforces key engineering lessons. The method might be called "syntax-directed software engineering," being driven by specification centered around a BNF-style grammar. Engineering lessons are reinforced with general engineering principles and contextualization of the subject matter. The approach can be taught without substantial software engineering background. The domain-specific risk-driven software engineering approach can be applied in other courses such as operating systems by redesigning the practices around its domain.