Skip to main content

“Little language” project modules


Many computer science departments are debating the role of programming languages in the curriculum. These discussions often question the relevance and appeal of programming-languages content for today's students. In our experience, domain-specific, “little languages” projects provide a compelling illustration of the importance of programming-language concepts. This paper describes projects that prototype mainstream applications such as PowerPoint, TurboTax, and animation scripting. We have used these exercises as modules in non-programming languages courses, including courses for first year students. Such modules both encourage students to study linguistic topics in more depth and provide linguistic perspective to students who might not otherwise be exposed to the area.

Hide All
Abelson H., Sussman G. J. & Sussman J. (1996) Structure and Interpretation of Computer Programs. 2nd ed. McGraw-Hill.
Allen E., Chase D., Luchangco V., Maessen J.-W. & Guy L. S. Jr. (2004) Object-oriented units of measurement. ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications. ACM, pp. 384403.
Antoniu T., Steckler P. A., Krishnamurthi S., Neuwirth E. & Felleisen M. (2004) Validating the unit correctness of spreadsheet programs. International Conference on Software Engineering. ACM, pp. 439448.
Bentley J. (1986) Little languages. Communications of the ACM, August, ACM, 711–721.
Cardelli L., Matthes F. & Abadi M. (1994) Extensible syntax with lexical scoping. Research Report 121. Digital SRC.
Clements J., Graunke P., Krishnamurthi S. & Felleisen M. (2001) Little languages and their programming environments. Proceedings of the Monterey Workshop on Engineering Automation for Software Intensive System Integration. ACM, pp. 118.
Clements J., Felleisen M., Findler R., Flatt M. & Krishnamurthi S. (2004) Fostering little languages, Dr. Dobb's Journal, March, 29 (3): 1624.
Clinger W. & Rees J. (1991) Macros that work. Pages 155–162 of: ACM SIGPLAN Conference on Principles of Programming Languages, ACM.
Deursen A. v., Klint P. & Visser J. (2000) Domain-specific languages: An annotated bibliography, ACM SIGPLAN Notices, 35 (6): 2636.
Dybvig R. K., Friedman D. P. & Haynes C. T. (1988) Expansion-passing style: A general macro mechanism, LISP and Symbolic Comput., 1 (1): 5375.
Felleisen M., Findler R. B., Flatt M. & Krishnamurthi S. (2001) How to Design Programs. MIT Press.
Felleisen M., Findler R. B., Flatt M. & Krishnamurthi S. (2009) A functional I/O System or, fun for freshman kids. ACM SIGPLAN International Conference on Functional Programming. ACM, pp. 4758.
Findler R. B. & PLT. (2009 July) DrScheme: PLT programming environment. Reference Manual PLT-TR2009-drscheme-v4.2.1. PLT Scheme Inc. Available at: Accessed 4 January 2010.
Fisher D., & Shivers O. (2008) Building language towers with Ziggurat, J. Funct. Program., 18 (5–6): 707780.
Fisher K. & Krintz C. (2008) 2008 SIGPLAN programming language curriculum workshop report, ACM SIGPLAN notices, 43 (11), 2930.
Flatt M. & PLT. (2009 July) Reference: PLT scheme. Reference Manual PLT-TR2009-reference-v4.2.1. PLT Scheme Inc. Accessed 4 January 2010.
Friedman D. P., Wand M. & Haynes C. T. (2001) Essentials of Programming Languages. 2nd ed. MIT Press.
Graham P. (1994) On Lisp: Advanced Techniques for Common Lisp. Englewood Cliffs, NJ: Prentice-Hall.
Herman D. & Wand M. (2008) A theory of hygienic macros. Lect. Notes Comput. Sci., 4960: 4862.
Hewitt C., Bishop P. & Steiger R. (1973) A universal modular actor formalism for artificial intelligence. International Joint Conference on Artificial Intelligence. pp. 235–245.
Hudak P. (1996). Building domain-specific embedded languages, ACM Comput. Surv., 28 (4es): 196.
Kamin S. N. (1989) Programming Languages: An Interepreter-Based Approach. Addison-Wesley.
Kennedy A. J. (1997) Relational parametricity and units of measure. ACM SIGPLAN Conference on Principles of Programming Languages. ACM, pp. 442455.
Kohlbecker E. E., Friedman D. P., Felleisen M. & Duba B. F. (1986) Hygienic macro expansion. ACM Symposium on Lisp and Functional Programming. pp. 151–161.
Krishnamurthi S. (2006) Automata via macros, J. Funct. Program., 16 (3): 253267.
Krishnamurthi S. (2007) Programming Languages: Application and Interpretation. Self-published.
Mauny M. & de Rauglaudre D. (1992) Parsers in ML. ACM Symposium on Lisp and Functional Programming. ACM, pp. 7685.
Rhiger M. (2009) Type-safe pattern combinators, J. Funct. Program., 19 (2): 145156.
Sabry A. (1999) Declarative programming across the undergraduate curriculum. Workshop on functional and declarative programming in education. Rice University TR99-346, online at Accessed 4 January 2010.
Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *


Full text views

Total number of HTML views: 0
Total number of PDF views: 6 *
Loading metrics...

Abstract views

Total abstract views: 70 *
Loading metrics...

* Views captured on Cambridge Core between September 2016 - 21st January 2018. This data will be updated every 24 hours.