Summary: Create a web page giving an overview of some programming language.

Often you hear about some programming language and you'd like to get a quick overview of that language--not a whole course in how to use it, but some indication of what it does, what it looks like, where it's used, and so on. This is your opportunity to pick one language and create such an overview, on a web page that will be part of the ICS 141 materials on line.

How does this affect my course grade? This project is entirely optional. It doesn't have a direct effect on your course grade: There aren't any course points associated with it; it won't make up for weak performance on the homeworks or exams. On the other hand, if you do reasonably well in the course, doing a good job on this project might give your course grade a small boost. In addition, a good job on this project lets me say something unique and positive about you if you ask me to be a job reference or to write a letter of recommendation; this means much more than a simple recitation of how good a grade you got in my class. Finally, the main reason to do it is that it's fun to learn about something new and unusual, and it's a gentle, manageable introduction to doing some independent research.

What language should I choose? You may choose any language from the list below:

Alphard, Algol 60, Algol 68, APL, AppleScript, APT, Autocoder, Awk, B, BCPL, BLISS, CLOS, CLU, Dylan, Forth, Frontier, Haskell, Icon, ISETL, Jovial, Leda, Logo, Mathematica, Miranda, ML (SML, Standard ML), Modula (Modula 2, Modula 3), nroff/troff, Oberon, Object Pascal, PL/360, PL/I, PL/C, Prograph, PPL, Python, REXX, RPG (RPG-II), Simula, Smalltalk, Snobol, Stagecast Creator, T, Tcl (and Tk), TeX, Turing, Visual Basic (VBA), WATFOR (WATFIV)

If you'd like to choose a language that isn't on the list, check with me first. Any language for this project must be a Turing-equivalent programming language, and it can't be a language that was done last quarter or one of these popular languages: Ada, Basic, C, C++, Cobol, Fortran, Java, Pascal, Prolog, or Scheme.

Only one person in the class may choose a given language. To reserve a language, send Email with your request to kay (on EA or at ICS); if someone has already chosen your language, I'll let you know and you can pick again. Once you reserve a language, you may not change your choice, so it's a good idea to do a bit of preliminary research to make sure the language you ask for is the one you want to stay with.

Where can I find information? A good place to start is the textbook and the references in its bibliography. Most of the publications listed should be available in the Science Library. These Web-based resources should also be helpful, but note that some of these aren't academically authoritative:

What should I put on my page? Include answers to as many of the following questions as possible. Remember, though, that quality is more important than quantity. Give short answers to the questions, supplemented where possible by references (to printed publications or the Web) that give more detail.

How do you characterize the language in one sentence--what kind of language is it? (Scheme, for example, is a compact, lexically scoped dialect of Lisp.)

Who designed it? Where? When?

Why was this language designed? What were its unique strengths at the time? What is it used for (and where is it used) today?

What variations and dialects of this language exist? (Distinguish this from the various implementations of the same language.) What other languages are good (or better) alternatives to this one?

What are the technical characteristics of the language? What paradigms does it support? How would you classify it in terms of the concepts we cover in the course?

What implementations of the language are available, for what platforms? What courses, texts, and on-line resources are available?

Give some sample code or programs--not just "Hello, world" but something representative of the strengths of the language. (You can include a small sample on your page and links to something larger, if possible.)

What form or design should I use for my page?

Use whatever you think is most effective, subject to these guidelines:

What do I do when it's done? Two things: Drop a folder containing the HTML source and any additional files into the ICS 141 dropbox on the Masterhit server. Then, send an Email to to let us know you're done.

Final web pages must be submitted by 5:00 p.m. on Friday of the tenth week.

Have fun!