Both the legality and the meaning of a specific construct are usually stated in terms of the components of that construct, so a tree is a common abstraction because it makes the ``component'' relation explicit.
In designing an abstraction of a program, we need to understand what information is present explicitly in the text and what information is implicit in the structure. Explicit information must be captured by the original abstraction, while implicit information must be made explicit through computation over the abstraction.
The precise information, both explicit and implicit, to be carried by the abstraction is determined by the problem to be solved. Tree Abstractions for Programs analyzes a specific example: an interpreter for a simple straight-line programming language. In that example, the explicit information carried by the abstraction includes the relationship among the components of the program, the names of the variables, and the values of the constants. The implicit information is the set of expression values computed during interpretation.
How much effort will you need to put forth to understand a document like Tree Abstractions for Programs? Reading and understanding such documents is something that you must do throughout your career, and is an integral part of every project you undertake. You need to develop a process that will generate information to answer that question. After applying such a process you need to reflect on the factors that brought your estimate close to the actual figures, the factors that worked against a close estimate, and how you might use that knowledge to your benefit in the future.
The hand-coded solution was tested using gcc version 2.7.2. Since it uses the standard template library it may or may not work with other versions of C++. You may make changes to accommodate your C++ compiler, but you must retain the basic structure. You may also produce a Java version of the implementation if you wish. If you do so, you must follow the consistent implementation procedure for tree abstractions.
The specifications were tested using Eli version 4.2. Eli is available on the ITS machine supporting this course and on almost all CS machines. The command is eli. You may also implement Eli on another machine of your choice; click here for information. Answer the following questions about your experiences.
Complete your personal postmortem for this assignment and your personal project plan for the next assignment, and submit them via the web before class on the due date of this assignment. Your group must hand in one set of answers to the questions at the beginning of class on the due date.
|Instructor||Revision 1.6 (1998/08/31 20:07:52)|