<?php require_once "fs_inner_context.inc"; ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
     "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">

<title><?php echo $HTML_TITLE; ?></title>

</head>

<?php echo html_bgcolor_body($BG_COLOR); ?>

<!-- Standard hierarchical header structure -->

<?php echo $CS_HEADER_HTML; ?>

<?php echo html_linked_text("<em>Courses</em>", $CS_COURSES_ROOT_URL); ?>

<?php echo $HTML_HEADER; ?>

<hr><hr>
<p>Assignments in the second half of the quarter are organized in a
coherent (at least it's <em>intended</em> to be coherent) project,
producing a simulated hand calculator performing computations with
exact real numbers.</p>

<?php echo html_header($HTML_HEADER_LEVEL + 1,
    "Open Project (Non)Rules"); ?>

<p>The class project for CMSC 16100 is an <em>open project</em>. It
is open in two senses.</p>

<ol>

  <li>There are no restrictions on how you accomplish project work. I
  encourage you to collaborate, share work, use ideas that you hear
  from others, find information in books and articles, or figure out
  for yourself, whatever works. Of course, you must acknowledge the
  source of each idea that you use. I also encourage you to share your
  own work freely with the class.<br><br></li>

  <li>You may propose changes to the definition of the project. You
  may choose to work on unassigned issues connected to the project
  that particularly interest you.<br><br></li>

</ol>

<p>I hope that the open project format will reduce the inefficiency of
learning in your own individual Skinner box, without adding the huge
social and organizational burden of working in defined groups. In
order to benefit from the project, both in learning and in the
evaluation producing your grade, you must assimilate the work of
others by understanding it thoroughly and practicing the programming
skills involved in creating it. I will find a way to confirm that you
have learned and not just acquired work, probably through a supervised
lab exercise.</p>

<p>If you deviate from the work that I lay out, you must check with me
in advance to make sure that I can evaluate the work for a good
grade.</p>

<?php echo html_header($HTML_HEADER_LEVEL + 2,
    "Directory for shared work"); ?>

<li><?php echo html_linked_text("Shared Files Directory Index",
                              "StudentDir.html"); ?></li>

<p>In order to share your work with the class, please create a
subdirectory named <code>html/CMSC16100_files</code> in your home
directory on your CS computing account. If you are already keeping Web
pages on the CS server, then you already have the <code>html</code>
subdirectory. Make sure that these subdirectories are readable and
executable by everyone. As long as you do <em>not</em> create any
files named <code>index.html</code> within the
<code>html/CMSC16100_files</code> subdirectory, others can get at the
files in it through the Web. Aren will collect an index of these
directories. Even if you don't expect to have anything to share, it's
better to create the directory now, and have it handy.</p>

<?php echo html_header($HTML_HEADER_LEVEL + 1,
    "Project steps"); ?>

<p>I will break out approximately 5 steps of varying length and
difficulty for you to accomplish as homework assignments.</p>

<ol>

<li><?php echo html_linked_text(
      "Step 1: Approximate reals as rational intervals", "Step1"); ?>.
port <code>ratpair</code> implementation of <code>ratintvl</code>
datatype from 2002 work. Due Monday 10 November 2003.<br><br></li>

<li><?php echo html_linked_text(
      "Step 2: Exact reals as functions", "Step2"); ?>.
Port and extend <code>precfunc</code> implementation of
<code>xreal</code>. Due Monday 17 November 2003.<br><br></li>

<li><?php echo html_linked_text(
      "Step 3: Exact reals as infinite numerals", "Step3");  ?>.
Port and extend <code>tristream</code> implementation of
<code>xreal</code>, creating the <code>wordstream</code>
implementation. Due Friday 21 November 2003.<br><br></li>

<li><?php echo html_linked_text(
      "Step 4: Timing experiments", "Step4"); ?>.
Compare the efficiency of <code>precfunc</code>,
<code>tristream</code>, <code>wordstream</code> on well-chosen
examples.  Due Tuesday 25 November 2003.<br><br></li>

<li><?php echo html_linked_text(
      "Step 5: Binary precision functions", "Step5"); ?>.
      Due Wednesday 3 Decmber 2003, or do Step 6 first.<br><br></li>

<li><?php echo html_linked_text(
      "Step 6: Cached precision functions", "Step6"); ?>.
      Due Wednesday 3 Decmber 2003, or do Step 5 first.<br><br></li>

<li>Hand in the remaining step 5 or 6, plus any final observations
about the impact of different types of implementation on the
performance of <code>xreal</code> functions, at the end of the
quarter. I will post the exact deadline soon. As a nice optional step,
you may combine the work of steps 5 and 6 into a
<code>cachebinfunc</code> implementation, and evaluate the result. Do
the two steps interact in any surprising way? (I don't expect that
they do, but I haven't proved that they don't.)</li>

</ol>

<?php echo html_header($HTML_HEADER_LEVEL + 1,
    html_linked_text("Project resources", "Resources")); ?>
<br>

<?php echo html_header($HTML_HEADER_LEVEL + 1,
    html_linked_text("Project performance graphs", "Graphs")); ?>
Thanks to Ben Singer, who created them.

<?php echo html_footer("index", 0, 1); ?>
<!-- hhmts start -->
Last modified: Sat Nov 29 13:07:14 CST 2003
<!-- hhmts end -->

</body>

</html>
