B629: Languages for Programming the Web
Lecture Notes

Contents

1 September
Introduction, administrivia, overview
3 September
Introduction to Java programming
Project 1 starts (due 10 September)
8 September
The Java Virtual Machine
10 September
Applets; the Abstract Windowing Toolkit
Project 2 starts (due 21 September)
15 September
More on the AWT; security in Java
17 September
"Jave is not Typesafe"
22 September
Java RMI
24 September
Obliq
Project 3 starts (due 3 Oct)
29 September
Obliq (continued); distributed GC
1 October
Review
6 October
Specification of file synchronization; service combinators
Project 4 starts (due 27 October)
8 October
Service combinators
13 October
Pi-calculus
15 October
Join calculus
20 October
Join calculus
22 October
Ambient calculus
27 October
Ambient Calculus
29 October
Telescript
3 November
Review; migratory applications
5 November
Migratory applications; Aglets
Project 5 starts (due 17 Nov); project 6 starts (due 15 Dec)
10 November
Aglet security; proof-carrying code
13 November
PLAN
17 November
Spi calculus
19 November
Spi calculus; secrecy by typing
24 November
Trust management
26 November
Trust management
1 December
No class
3 December
No class
8 December
No class
10 December
Low-level calculi for distribution and migration; review
Project 6 due 15 December

1 September

Introduction, administrivia, overview

  1. Introduction
  2. Goals of the course:
    1. To survey the "landscape" of issues and current technologies in web programming
    2. To get some reasonably serious hands-on programming experience with distributed and mobile applications
    3. To identify and discuss emerging research issues
  3. Logistics
  4. The course title... languages for programming the web vs. architectures for web programming vs. web APIs.
    An API (or "software architecture") is a programming-language feature being born.
    A full-scale language distills several such features as simple linguistic mechanisms and combines them in a coherent way.
  5. Many of the technologies that we'll discuss involve some sort of mobile code. The following categories give a very rough idea of the varieties of code mobility:
  6. Outline of topics for lectures
  7. Reading for Wednesday:

3 September

Introduction to Java programming

  1. Administrivia: course enrollment limits...
  2. Overview of Java
  3. The rest of the class will be spent discussing Project 1.
  4. N.B. The amount of documentation that I've included in the files in the handout directory should not be taken as a guide! A little more would make the code easier to read...
  5. Reading:

8 September

The Java Virtual Machine

Room change: from now on, we'll be meeting in LH101, not LH019.

  1. Administrivia:
    1. Decide when first assignment is due (probably Wednesday)
    2. Reminder: on Wednesday we'll be choosing project groups for the remainder of the semester; now is the time to get an idea of who you'd like to work with. (If you don't know, don't worry -- we'll make sure everyone gets assigned to a group.)
  2. This lecture continues last week's introduction to Java with discussion of some more advanced aspects of the language.
  3. Further reading (for those interested -- not required)

10 September

Applets; the Abstract Windowing Toolkit

[Lecture given by Sundar]

  1. Applet programming
  2. The Abstract Windowing Toolkit (AWT). (Note that we'll describe the new event handling model included in Jave 1.1, since this is the one that you'll find documented in the on-line API guide; if you look in other books, you'll find mostly descriptions of how things worked in the old Java 1.0.)
  3. The Serializable interface.
  4. Form project groups.
  5. Project 2 starts today.

15 September

More on the AWT; security in Java

  1. Administrivia: Class roster
  2. Continuation of last Wednesday's material on the AWT
  3. Basic Java security mechanisms
  4. Start discussion of Vijay Saraswat's paper Java is not Typesafe (The sample java code that I showed in class is available here.)
  5. Reading for Wednesday:

17 September

"Jave is not Typesafe"


22 September

Java RMI

[Lecture given by Sundar]

  1. Java's Remote Method Invocation facilities.
  2. Reading list:

24 September

Obliq

. [Lecture given by Sundar]

  1. Discussion of Luca Cardelli's language Obliq.
  2. Readings:
  3. Project 3 starts today.
    To get started, look at our sample "Hello" example, a variant of the one in the online Tutorial.


29 September

Obliq (continued); distributed GC

[Lecture given by Sundar]


1 October

Review


6 October

Specification of file synchronization; service combinators


8 October

Service combinators


13 October

Pi-calculus


15 October

Join calculus


20 October

Join calculus


22 October

Ambient calculus


27 October

Ambient Calculus


29 October

Telescript


3 November

Review; migratory applications


5 November

Migratory applications; Aglets


10 November

Aglet security; proof-carrying code

  1. Briefly discussion of Karjoth, Lange, and Oshima's security model for Aglets. (This paper is fairly high level, so there is not that much to say in detail.)
  2. Longer impromptu discussion of Proof-Carrying Code and its potential applications in mobile agents.
  3. Reading:

13 November

PLAN

  1. Two main topics for the rest of the semester:
  2. Protect whom from whom?
  3. Standard threats:
  4. aspects of security
  5. Plans for the next little while:
  6. Today's class will be devoted to discussion of the PLAN overview paper.
  7. Reading:

17 November

Spi calculus

  1. Continuing with the general topic of security, we will begin discussion of Abadi and Gordon's "Calculus of secret agents."
  2. Reading:

19 November

Spi calculus; secrecy by typing

  • Reading:

    24 November

    Trust management

  • Reading:

    26 November

    Trust management

  • Reading:

    1 December

    No class


    3 December

    No class


    8 December

    No class


    10 December

    Low-level calculi for distribution and migration; review

  • Reading:


    B629: Languages for Programming the Web
    Benjamin Pierce (pierce@cs.indiana.edu)