End-user ProgrammingFDA170, 2004HT
No of lectures
8 (16 hours)
Graduate and master-level students in computer science.
The course was last given
To understand and apply key aspects of designing/implementing end-user programming languages.
The course is organized as a series of design sessions, discussions, and small, weekly “deliverables.” The course will meet once a week for 8 weeks – and once at the end of the quarter for final presentations of student projects.
This is a project-oriented course for computer scientists interested in
end-user programming language design. The category of end-user programming
languages is fairly broad and includes various kinds of special-purpose
languages for non-programmers. This includes spreadsheets, CAD systems, and
languages for creating “interactive fiction”, graphics, computer-games, and the
like. These languages support specialists in some particular domain –
specialists who are not programming experts -- who want to develop
computer-based applications, services, or products. There have been a number of
approaches to the development of end-user programming languages: from
simplifying/specializing the syntax; to “visualizing computational processes”;
to developing appropriate control-metaphors; to including “intelligence” in the
The development of good programming-languages for end-users requires a particular set of skills and techniques: developers need to consider issues of technical implementation, programming-language design, characteristics of the target domain, and particular traditions and conventions of people who work in the target domain. In this course we will study example systems, engage in design sessions (designing a mini-language for particular class of users/domains), and students will work in teams to implement their own small end-user programming language for some specific class of users/domains.
Readings will be short and distributed as needed, and may include writings on SketchPad, Logo, Squeak/Smalltalk, Boxer, SchemePaint, AgentSheets, StageCast Director, ComiCurrents, StarLogo, ToonTalk, VisiCalc, Inform, and various game-development (Klik & Play, etc.) and “programming by demonstration” systems (Tinker, Garnet, Pavlov, etc.). Note that “readings” for this course will also include “using a number of the example systems.”
Active participation, weekly deliverables, and a public presentation of a completed final project.
Course language is English. (For implementations, students are free to choose any programming language -- Java, Scheme, Lisp, etc. -- but a final project must work "for real" in some significant sense. It cannot be a "mock up" or "Director presentation.")
Page responsible: Director of Graduate Studies
Last updated: 2012-05-03