CS 501: Software Engineering
Fall 1999

Assignment 2. Investigation of a large program code

Due: September 28, 1:25

Purpose of assignment

The purpose of this assignment is to give you practical experience in exploring a very large computer program. The assignment uses the source of the interpreter for the Perl language, which is publicly available. The version you will work with is Perl 5.005_03.

This is an individual assignment. Everybody must submit an individual solution.

Your task

It is proposed that an option -t be added to the Perl command line. This option will simply print the time taken to execute the Perl program.

Do not spend more than 12 hours on this assignment.

  1. Track the time that you take to carry out this assignment and submit a time report that lists every subtask that takes more than 15 minutes.
  2. Study the source code of the Perl interpreter to identify which parts of the program must be modified to implement this change.
  3. Write a short report listing the changes that are required.
  4. Implement the changes, build the system.
  5. Test with a short Perl program.

Setup

Download the Perl source from the web. The NT version is at ftp://ftp.activestate.com/activeperl/AP519_source.zip. The Unix version is at http://www.perl.com/CPAN/src/stable.tar.gz. You are free to use either.

It is part of your task to configure and build the sources. Documentation is provided in the Perl distribution. Once built, the Perl interpreter can be run directly from the build directory so there is no need to install it. Remember to include the path to the Perl executable explicitly so you do not invoke the central copy on the machine.

Familiarity with the Perl language is not necessary to do the assignment. Test cases will be posted to the newsgroup at a later date. Feel free to post your own test cases. If you are unfamiliar with the language and wish to construct your own test cases, documentation is in the directory pod in the build tree. You can read a pod file with the command perldoc in the utils directory.

Submission instructions

Create a directory containing the files you wish us to grade. One of these files should be the text of your report; this file can also provide information about the other files that you submit. In addition, submit the source only of those files that have been changed and an executable of the complete program.

Call this directory xxxxx0, where xxxxx is your Cornell network id. Copy this directory to the following folder:

\\goose.csuglab.cornell.edu\course\cs501-fall99\assignment2

Do not be disturbed by warnings informing you that the file cannot be accessed after it has been copied. Should you wish to revise your submission after you have copied it to our folder, then simply correct the files and re-copy the entire directory---but this time use the name xxxxx1. Further revisions should be named xxxxx2, and so on. We will grade the largest-numbered file of a series.

[ CS 501 Home Page ]

William Y. Arms
Last revised: September 21, 1999