COURSE TITLE: B629: Languages for Programming the Web INSTRUCTOR: Benjamin C. Pierce SEMESTER: Fall Semester, 1997 DAYS: Monday and Wednesday TIMES: 9:30 - 10:45 AM CREDITS: 3 PROVISIONAL OUTLINE: With the explosive growth of the World Wide Web have come a host of new programming languages [and "proto-languages" presented as APIs] for "programming the global computer." These include new general purpose languages such as Java, very specialized languages such as HTML and VRML for encoding specific sorts of content, and -- most interestingly -- languages embodying radically new programming styles such as "migratory applications." In this course, we'll survey a broad range of new languages being used on the web. The goals are twofold: (1) to get a high-level picture of what is being done in the area, and (2) to gain deeper insight into emerging programming styles and language designs by undertaking serious programming projects in several avante-garde languages. The languages we'll cover will include (among others): * Languages for building "shared virtual spaces" such as MUDs and MOOs, where participants are invited to add their own functionality. We'll play with the Lambda MOO and TicToc systems from Xerox PARC. * Server-side languages incorporating notions of virtual sessions with client browsers, etc. Programming experiments will be bsed on Bell Labs' Targus/MAWL system. * Distributed languages supporting "mobile code." We'll investigate Java applets, distributed programming in Java using the new Remote Method Invocation library, Cardelli's Obliq language and his newly proposed "Ambits," the mobile extension of Pict being developed in Paris and Cambridge, and others. Grades will be based on a) class participation (discussion of readings, presentations of papers, etc.), and b) several medium-sized programming projects, each in a different "web language." PREREQUISITES: There are no formal prequisites: anyone may sign up for the course. However, the pace will be fairly fast and a significant amount of hacking will be involved: you should feel comfortable with the idea of picking up several new programming languages during the course of the semester and using them to design and build medium-sized programs. Parts of the course will also focus on papers from the research literature, for which some degree of mathematical maturity will be required. Familiarity with programming language foundations (e.g. lambda-calculus) will be useful. Please contact me (pierce@cs.indiana.edu) if you have any questions.