Your final assignment is to research, use, and report on an interesting programming language that you do not already know and that we are not studying in this class.
What constitutes "interesting"?
For our purposes, an interesting programming language is one that has intentional design features that are new or different from those you are accustomed to seeing. This is admittedly a subjective definition, and I reserve the right to make the final call on whether a language qualifies as interesting. Some examples and non-examples of interesting languages are listed below; there are many others as well. If you want to pursue a language not on this list, be sure to consult with me first to see if it qualifies.
Examples: Ada, APL, Eiffel, Forth, Haskell, Linda, PHP, Postscript, Python, Ruby
Non-examples: Basic, C/C++, Java, C#, Cobol, Fortran, JavaScript, Modula, Pascal, Lisp/Scheme
What research do I have to do?
You have to find and read at least two scholarly papers -- pre-approved by me -- that introduce or describe the language and/or some of its most interesting features. You may use additional print and web sources as needed.
You can install the language system on your own computer under Linux or Windows. You may be asked to demonstrate it in class.
What do I have to use the language for?
I will assign one or more programs for you to write in the language.
What do I have to report on, and in what format?
You will need to do both a paper and an oral presentation. In both the paper and the oral presentation the emphasis should be on what makes this language interesting and/or useful. Another way to think of this is to ask where your language resides in the programming language landscape and what contributions it makes. A dry accounting of language features is not acceptable.
The primary goal of your paper is to help the reader understand what is interesting about your language. Write for an experienced programmer who does not know this language but is interested in learning a little about it. At a minimum, your paper should address the following questions:
In addition, describe your experience in learning and using this language. Particularly address what elements of this language you were able to relate to other programming languages you already knew, and what elements were entirely new to you.
Oral presentations will be on Wednesday, April 14, and will be organized in panels. Each panel will have only 30-40 minutes, so efficient use of time will be critical. At a minimum, each panel should include the following in their presentation:
In all cases be sure to focus on important and interesting language elements. You may find it useful to use handouts or slides.
Write a program that computes exponents of positive integers using the following definition to minimize the number of multiplications performed:
ab = ab/2 * ab/2 if a is even ab = a(b-1)/2 * a(b-1)/2 * a if a is odd a1 = a
Your grade for this assignment will be divided as follows:
The project will have several intermediate deadlines as shown below: