Writing Project
Computer Science 3675
Fall 2001

Select a programming language that you would like to study. Do not select any of the following languages: Astarte, Scheme, Java, Prolog. Before you write your paper tell me what language you intend to study. Here is a list of suggestions. Feel free to select a language not in this list.

Read about the language and write a report about that language. The report must be typed, and should be approximately ten to fifteen double-spaced pages long.

The report should address the following issues.

  1. What language are you studying?

  2. What is the major paradigm of the language?

  3. Is this language typed or untyped? If typed, is it weakly typed or strongly typed? To what extent does it support polymorphism?

  4. What is the intended purpose of the language? How well does it meet its purpose? You can discuss both the language and its standard library. Use examples.

  5. How well standardized is the language? Are there many dialects, or just one?

  6. What are related languages? Is this language based on an earlier one?

  7. How is the language implemented? Are typical implementations interpreters or compilers? What major difficulties might the implementors have faced?

  8. How well principled is the language? Are most of the ideas in the language driven by a desire to meet a particular semantics, or does the semantics appear to be molded around a particular implementation? Use examples.

  9. Is the language strict or nonstrict? How good are its procedural abstraction capabilities? Can you write functions that completely hide the details of how they are implemented?

  10. Describe some particular features of the language that make it useful for its intended purpose, including the language itself and the library. Does the language provide special features not found in most other languages? Use examples.

  11. Describe some characteristics of the language that you find awkward or confusing. How might they be improved? Use examples.

  12. Does the language offer a mechanism for exception handling? How are errors typically dealt with?

  13. Does this language have support for breaking a program into several small modules, or are programs typically written in a single module?

  14. How well does this language support data abstraction? Do programmers need to work with concrete types, or can abstract data types be created and used? If abstract data types are supported, how well does the language hide the characteristics of an abstract data type?

Due dates

Thursday, October 25 Turn in a paper with: your name, the language that you intend to study and at least one, preferably more than one, book that will provide information on that language.
Thursday, November 29 Turn in your finished paper