[MSOE Homepage]

Dr. Taylor's MSOE Homepage

Unix is a Four
Letter Word

My Photo Album

My Personal Homepage

CS-381 Main page

CS-381 -- Final Project

Fall Quarter 1999

Electrical Engineering and Computer Science Department
Dr. Christopher C. Taylor

S-331, 277-7339



The purpose of this lab assignment is to develop an integrated software package for numerically interpolating, integrating, and differentiating a given set of data.


  • You are required to work in teams of two.
  • When appropriate, your software system should reuse the code from previous lab assignments. (Note: You are only permitted to use code that written by one of the team members.)
  • Your program should have the following functionality:
    • Read data from a file (use the same file format as Lab 3)
    • Resample data using least squares curve fitting
      • The resampling rate should be specified in terms of the number of samples desired in the resulting resampled data set. For example, if the user specifies 16 samples, the algorithm should produce 16 data pairs uniformly spaced over the range of x values. Please note that the initial data set need not be uniformly sampled.
      • The user should also be able to specify the order (between 1 and 5) of the polynomial curve that is fit to the data.
    • Integrate using:
      • Monte Carlo integration with a linear congruential random number generator of your choosing
      • Monte Carlo integration with cstdlib's rand() function
      • the 1/3 Simpson's rule
      • the 3/8 Simpson's rule
    • Differentiate using the divided differences method
    • Output the data produced by any of the above calculations (You may find it useful to produce output that is readily imported to a graphing package like Excel, MATLAB, or the graphics shell many of you are developing in CS321.)

First Week (due 4:30pm Tuesday, November 3, 1999)

In the first week you should design your software system. The deliverable for this week should consist of a design report. At a minimum, you should:

  • Identify what code is already written (and whose code the team will use)
  • Identify what code needs to be written (and suggest a division of labor among the team)
  • Outline the structure of the code (include header files where appropriate)
  • Develop a plan of attack and estimate the time required to complete the project
  • Discuss strategies for testing the code
  • Determine how you will produce graphs of your program output (Note: these graphs are required to be in one of the following formats: .pdf, .eps, .png, or .jpg)

During the week 9 lab session, each team will be given another team's design report to evaluate.

Week two (due 4:00pm Friday, November 5, 1999)

Each team should generate three input data files that can be used to test their software package. Each team will be required to email the data files to specified group so that they may use the same files to test there software package. Each team is required to email these files to the other team by the deadline above (4pm, November 5) and send me a carbon copy of the email.

Week three (due 4:00pm Monday, November 8, 1999)

We will meet in lab. Each team will be given an input file which they will use to demostrate the operation of their program. Your software package should be fully functional, and you should be able to graph the output in lab using some other software package.

Lab report (due 4:00pm Friday, November 12, 1999)

The lab report should be self-contained. That is, it should be possible for someone to understand what you did and why without seeing anything other than your report and any previous reports that you have submitted. Your report should include:

  • Purpose
  • Problem Statement
  • Procedure -- what approach you used to solve the problem
  • Discussion including:
    • A summary of your activity log indicating how much time you spent on each phase of the assignment.
    • A narrative describing any specific problems you encountered and how you solved them.
    • A narrative describing your testing procedure including any relevant output.
    • Relevant graphs of the output (at least 3) produced by your program (see formatting guidelines below).
  • Conclusions (what you learned, suggestions of how the lab could be improved, things you would have done differently, etc.)
  • Documented source code (clearly identifying any changes made since your last submission). Note: you should include all the source code necessary to compile your project.

As with any report you submit, correct spelling and grammar are required. In addition, your report should be submitted electronically following the Electronic Submission Guidelines. (You may wish to consult the sample report before submitting your report.) Be sure to keep copies of all your files, in case something gets lost. It may be wise to keep a diskette backup as well.

If you have any questions, consult the instructor.

Formatting Notes

When discussing the results of your testing, you are required to include graphs. These graphs should be included as separate files and follow these guidelines:

  • Each file should begin with your initials, for example: tcFig1.pdf
  • Each graph should be in one of the following formats and should end with the appropriate suffix: .pdf, .eps, .png, or .jpg
  • Include the graphs within your report using the following command:

This page was created by Dr. Christopher C. Taylor, copyright 1999.