Term Project
Spring 2008
Due: 9 May.
Objectives:
- To learn how to find reference material about programming langauges.
- To investigate and master a new computer language.
References:
- Concepts of Programming Languages, 6th ed.,
Robert W. Sebesta, Addison-Wesley, 2003.
- A
site
that has links to information about many programming languages.
- Another
site that has
many links to programming languages.
Requirements
- Choose a language from the list below. All of the languages have sites
on the web where you can obtain compilers/interpreters and find programming
information.
- Ruby. Ruby is the interpreted scripting language for quick and easy
object-oriented programming. It has many features to process text files and
to do system management tasks (as in Perl). It is simple, straight-forward,
extensible, and portable.
- D. D was conceived in December 1999 as a successor to C and C++.
- Squeak. Squeak is a descendent of Smalltalk-80. The core developers of
Squeak (Squeak Central) in fact include many of the core developers of
Smalltalk-80. Squeak's language and much of the class library is identical
to that of Smalltalk-80: they both have objects, classes, single inheritance,
blocks, garbage collections, collections, streams, model-view-controller,
and many other bits. Graphical user interfaces are difficult to implement
because of the essential concurrency among multiple interaction devices,
such as mice, buttons, and keyboards. Squeak is a user interface implementation
language that exploits the essential concurrency among multiple interaction
devices, such as mice, buttons, and keyboards rather than hiding it, helping
the programmer to express interactions using multiple devices.
- Python. Python is an interpreted, interactive, object-oriented
programming language. It is often compared to Tcl, Perl, Scheme or Java.
- Ada. An imperative language with OOP extensions. Subject of the
largest language development effort in history. Used alot by the DoD.
- ML. ML is Is an "extended functional" language: has imperative features
built on a functional core. (pure functional = no assignment or other mutation
operator in language). It has some novel features: type inference, pattern
matching, parametric polymorphism, functors (higher-order modules
- J. J is a modern, high-level, general-purpose, high-performance
programming language. J is particularly strong in the mathematical, statistical,
and logical analysis of arrays of data.
- Delphi. The precursor of C++ Builder and J Builder. Founded on
the Pascal language.
- (Smart)Eiffel. Eiffel is a hybrid imperative/OO programming language.
It was created by Bertrand Meyer. It is designed for software engineering,
and has many interesting features that enable quick reliable program development.
- Modula-3.
Modula-3 is a member of the Pascal family of languages. Designed in the late 1980s at
Digital Equipment Corporation and Olivetti, Modula-3 corrects many of the deficiencies of
Pascal and Modula-2 for practical software engineering. In particular, Modula-3 keeps the
simplicity of type safety of the earlier languages, while providing new facilities for
exception handling, concurrency, object-oriented programming, and automatic garbage
collection. Modula-3 is both a practical implementation language for large software
projects and an excellent teaching language.
- C#. C# is Microsoft's new attempt to create a safe and efficient langauge
that embraces multiple paradigms and is easy to use for everything from web programming
to system programming.
- EUPHORIA End User Programming Hierarchial Objects for Robust Interpreted
Applications. A simple, powerful, flexible language that is easy to learn.
It is not a true OOL but achieves many of the benefits in a much simpler way.
Dynamic storage location. Objects of any size can be assigned to an element of a Euphoria
sequence (array).
- SATHER An OOL designed to be simple, efficient, safe, flexible, and non-proprietary.
One way of placing it in the "space of languages" is to say that it aims to be as efficient as C,
C++, FORTRAN, as elegant as and safer than EIFFEL, and support higher-order functions
and iterations abstraction as well as COMMON LISP, CLU, and SCHEME.
- A language of your choice. It must be a language that neither you nor your
partner know and it must support some form of graphics. This
site contains
a pretty comprehensive list of programming languages with links to supporting web sites.
Note that you must be able to obtain a compiler/interpreter for your language at a price that
you can afford.
- Languages that I don't recommend are:
- Tcl/TK- (Tool Command Language). Tcl, or the "Tool Command Language"
programming language. Data structure support is not great, so you'll have to work hard
to make the common program work.
ÊTcl was originally developed as a reusable command language for computer aided design
([CAD]) tools. The interpreter was implemented as a C library which could be linked into
any application. It is very easy to add new functionality to the Tcl interpreter, so it is an ideal
reusable "macro language" which can be integrated into many applications.
ÊTcl is a programming language in its own right, which can be roughly described as a
cross-breed between LISP/Scheme (with less parens) and shells (with more powerful
structuring).Tcl programs are usually called "scripts" because the programs do not need to be
compiled into a machine-readable form. The program you write is executed directly by the
Tcl interpreter. Although the original Tcl interpreters were kind of slow, they now use
byte-code compiling and other modern technology to achieve performance on par with other
Scripting languages like Python or Perl.
The Tk toolkit is almost synonymous with Tcl. Tk is a high level toolkit for developing
graphical user interfaces (GUIs). You can very easily build a GUI for a Tcl application, or for
a compiled program.
- BETA. Development on BETA has stopped, so some of the functionality
of the language is complete.
BETA is a modern object-oriented language from the Scandinavian
school of object-orientation where the first object-oriented language Simula
[DMN70] was developed. BETA supports the object-oriented perspective on
programming and contains comprehensive facilities for procedural and
functional programming
- Icon. A language with rich string processing features (like Perl).
Unfortunately, documentation is sparse.
- experiment with various kinds of programs in your language
- implement a common program in your language
- write a 3 -5 page paper about the language
- make a 15-minute presentation to the class that demos the language
and its features
You must work with exactly one other person!
Experimentation
Experiment with a compiler for the language you have selected, trying
many different kinds of programs to learn how the language operates and
what it does best, does poorly, etc. In particular, you want to learn
how to make best use of the design features of the language. For
example, if the language is known to be object-oriented, then you should
attempt to write a non-trivial application that is object-oriented.
But, if the language were designed for logic programming, then your
efforts would include a "reasoning" application, such as an artificial
intelligence program. Of the many different programs you write in the
language, select 3 that you think illustrate certain features (or lack
thereof) in the language and include those in your paper and your
presentation. (Helpful Hints: Make use of sample programs, tutorials,
and documentation that accompany the language. Look for help on the
Web. Look for books in libraries, bookstores that could be of help.)
Common Program
In order to create some commonality, and to form a basis for
understanding other language presentations, each group must implement several
common programs. This common programs must be included in your paper and
your presentation. See the common program
writeup.
You must hand in a hard copy of your solution to the common program.
You must also place a copy of the source code on Nova in the Turn-in/Term
Project folder.
Other Programs
You may choose to implement any other programs that you believe illustrate
the features of your language. You must include at least 3 of these
in your paper and one of these in your presentation. Your programs must
illustrate at least the following features:
- The major data structures of your langauge (arrays, lists, structs, etc.)
- The major abstraction mechnaisms of your language (procedures, functions,
objects, modules, etc.)
- The major types of your language (ints, floats, strings, pointers)
- Exception handling (if your language supports it).
- Concurrency (if your language supports it).
- Any unique sentax that your language supports.
- Any unique semmantics that your language supports. For example, if
your language supports short-circuit evaluation of booleans, allows overloading
in a unique manner, etc. you should demonstrate this.
You must hand in hard copies of all of your programs. You must
also place all programs in the Turn-in/Term Project folder on Nova.
Paper
In addition to the programs you select (from experimenting with the
language) and the common program, your paper must cover:
- The paradigm of the language
- Some historical account of the evolution of the language and its antecedents
- The elements of the language: reserved words, primitive data types, structured types
- A description (in some form) of the syntax of the language
- The basic control abstractions of the language (loops, conditional controls, etc.)
- How the language handles abstraction (including functions, procedures,
objects, modules, etc.)
- An evaluation of the language's writability, readability, and reliability using
the criteria discussed in chapter 1 of the Sebesta book.
- The major strengths and weaknesses of your language.
- An overview of the programs that you included and a discussion of what language
features they highlight and how the language made the programs easy/hard to implement.
Naturally, you may add other topics to the paper. Screen dumps are
highly recommended as a way of illustrating your narrative in the paper.
Presentation
Your presentation will be made using the functioning
language in class and must include the following points:
- You must demo one non-trivial program that you think
shows the features of the language as well as the common program.
- Overall, your goal is to present this language to other students in the
class.
- You may use PowerPoint slides to show some general information about the
language - but keep the number of slides small.
The PowerPoint slides should take no more than 5 minutes or so. You should tell
us the following:
- What is the language paradigm?
- How does it fit into the historical evolution of programming languages?
- What did you find different about the language from other languages in the same paradigm?
- What features did you find helpful?
- What does this language offer to the programmer that make it a language you would want to use?
- Is the language best suited for one particular type of application? If so, what?
- The remainder of your presentation will be a demonstration of programs.
- Plan to have all members of the group share in the presentation -- in
approximately equal manner.
Note: As the semester progresses and we
study other languages, your concept of what should be included in the
project paper and presentation will likely change. That's fine. Also,
we may need to clarify some details, as we go.
Feedback
You will attend all language presentations and provide feedback
to presenters and in written form to the instructor.
Each person must individually turn in 1-2 paragraphs that describe
what part of the project they did, the amount of time you personally spent on
the project, the percent of the project that you feel you did, and a description
of what you believe that your partner(s) did.
TimeLine
Date
| Requirement
|
| Feb. 4 |
Create a group composed of yourself and 1 other.
Choose 3 languages from the list and turn in the names of your group and
your choices (in decreasing order of preference).
|
| Feb. 4 - Feb.21 |
1. Once your language has been approved, find a copy
of the language (as freeware) and install the compiler and work on
simple code that includes input and output.
2. If you find the compiler/language unacceptable, meet with your instructor to
select a new language or locate a suitable compiler.
|
| Feb. 21 - Mar. 3 |
1. Schedule a formal meeting with your instructor (all
members of the group). The meeting must be held prior to March 8th.
2. Preparations for meeting:
a) Sample programs in your language: printout of code
and run of the program. You must have running versions of at least the following
programs: ex1.c, ex3.c, ex17.c
ex22.c and ex25.c from the site
Cexamples
b) Questions you want to ask about the language, paper, presentation....
3. Meeting with instructor
|
Mar. 17 - May 5 |
1. Design, implement and test the common programs. See the
common program page.
2. Experiment with other programs. Select several programs (at least 3)
to be used in your paper and one great one for your presentation
(in addition to the common program). Note that part of your grade
will depend on how well the programs you choose illustrate the features
of your program. These programs must be approximately 100 lines or longer
and must use advanced data structures and control features. There should
also include GUI features I/O, all available control structures, all available
data types, and demonstrate any advanced features that the
language offers that are unique.
3. Write paper.
4. Prepare your presentation. |
| May 9 |
1. Make your Presentation and Demonstration
2. Attend all presentations and provide feedback to presenters and written
feedback to your instructor.
|
Revision History
| Date |
Revision |
| 24 Jan |
2008 this page posted |