START Conference Manager    

Small Languages for Undergraduates

Rastislav Bodik

(Submission #30)


Summary

I propose to revive the undergraduate PL/compiler course by making it relevant to software engineers – the bulk of our audience. My premise is that developers are not mere users of programming languages; the better ones regularly design small languages, whether they are frameworks with rich APIs, code generators, configuration and data processing languages, or full scripting languages. My recent experience at Berkeley shows that we can indeed awaken budding language designers while developing a better language “taste” in the remaining students. The proposed approach is to go through the development of small languages: the choice of a programming model (abstractions), design of an intuitive concrete syntax, effective static and dynamic type checking, and efficient implementation. It’s hard to fit all this into a single course, especially if the course is to cover enough about both design and implementation of languages. The trick may be to use the language implementation itself as a case study for small language design. For example, regular expressions deserve more attention that we have been giving them in lexical analysis: you could argue that their semantics, as defined in most languages is broken and so is their implementation. Revisiting their semantics is a case study in how to embed a language and their implementation offers an exercise in how to parallelize an algorithm that has been considered inherently sequential. Finally, we can increase the relevance to software developers by focusing on web languages, where new programming models are likely to appear: a well-designed course will prepare students for new web languages, and may encourage them to design these languages themselves. After all, PHP, javascript, Ruby and perl were all designed by language amateurs: the more we teach our undergrads, the better our future languages will be.

Keywords

impact of new technology
examples highlighting programming language relevance
distributed and Internet computing
growth of domain-specific languages
new ideas for teaching programming language concepts
attracting and retaining students
essential programming language concepts

File(s)

[Paper (DOC)]  

START Conference Manager (V2.54.6)