Skip to content

Commit

Permalink
Updated website
Browse files Browse the repository at this point in the history
  • Loading branch information
borjasotomayor committed Nov 9, 2024
1 parent 198108b commit efb3c36
Show file tree
Hide file tree
Showing 3 changed files with 106 additions and 36 deletions.
35 changes: 25 additions & 10 deletions projects/project3.html
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,6 @@

<section id="project-3-chirouter">
<h1>Project 3: chirouter<a class="headerlink" href="#project-3-chirouter" title="Link to this heading"></a></h1>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>This page has not yet been updated for Autumn 2024.</p>
</div>
<p>In this project you will be implementing a simple IP router capable of routing IPv4 datagrams between multiple networks. This router will have a static routing table, so you will not have to deal with implementing a routing protocol like RIP or OSPF; instead, the project will focus on the routing of IP datagrams. While, at a high level, this just involves receiving IP datagrams and figuring out what interface they should be sent on, this requires building additional functionality before you can actually start routing IP datagrams.</p>
<p>Please refer to the following documents to complete this project:</p>
<ul class="simple">
Expand All @@ -112,7 +108,7 @@ <h1>Project 3: chirouter<a class="headerlink" href="#project-3-chirouter" title=
<p>Take into account that this project requires using a network simulator that
needs to be run with root privileges on a Linux machine. For students using
Windows or Mac, we provide a Docker container that you can use to run
the network simulator on your computer ()</p>
the network simulator on your computer.</p>
<section id="submission-timeline">
<h2>Submission Timeline<a class="headerlink" href="#submission-timeline" title="Link to this heading"></a></h2>
<p>This project has one required submission, and an optional resubmission:</p>
Expand All @@ -126,27 +122,27 @@ <h2>Submission Timeline<a class="headerlink" href="#submission-timeline" title="
<tbody>
<tr class="row-even"><td><p>Project 3</p></td>
<td><p><a class="reference external" href="http://chi.cs.uchicago.edu/chirouter/">chirouter</a> (entire project)</p></td>
<td><p><strong>Wednesday, May 15th, 8pm</strong></p></td>
<td><p><strong>Thursday, December 5th, 8pm</strong></p></td>
</tr>
<tr class="row-odd"><td><p>Resubmission (Optional)</p></td>
<td><p>You may submit a revised version to improve your Completeness score <em>only</em></p></td>
<td><p><strong>Friday, May 24th, 8pm</strong></p></td>
<td><p><strong>Friday, December 13th, 8pm</strong></p></td>
</tr>
</tbody>
</table>
<p>Please see <a class="reference external" href="project3_rubric.html">Project 3 rubric</a> for more details on how each submission will be graded.</p>
<p>Please see <a class="reference external" href="project3_rubric.html">Project 3 rubric</a> for more details on how your submission will be graded.</p>
</section>
<section id="initializing-your-project-3-repository">
<h2>Initializing your Project 3 Repository<a class="headerlink" href="#initializing-your-project-3-repository" title="Link to this heading"></a></h2>
<p>Make sure that you have read the <a class="reference internal" href="started.html#project-started"><span class="std std-ref">Getting Started</span></a> page
as well as the the <a class="reference internal" href="started.html#project-registration"><span class="std std-ref">Project Registration</span></a> instructions.</p>
before following the instructions below.</p>
<p><strong>One-time setup instructions</strong></p>
<p>Only one team member needs to run these commands. Create an empty directory and, inside that
directory run the following commands. In the commands below, <code class="docutils literal notranslate"><span class="pre">$REPO_URL</span></code> refers to the
SSH URL of your repository. To get this URL, log into GitHub and navigate to your
project repository. Then, under “Quick setup — if you’ve done this kind of thing before”,
make sure the “SSH” button is selected, and copy the URL that appears next to it.
It should look something like this: <code class="docutils literal notranslate"><span class="pre">git&#64;github.com:uchicago-cmsc23320-spr-24/chirouter-jdoe-jrandom.git</span></code></p>
It should look something like this: <code class="docutils literal notranslate"><span class="pre">git&#64;github.com:uchicago-cmsc23320-aut-24/chirc-p1-jdoe-jrandom.git</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>git init
git remote add origin $REPO_URL
git remote add upstream https://github.com/uchicago-cs/chirouter.git
Expand All @@ -161,6 +157,25 @@ <h2>Initializing your Project 3 Repository<a class="headerlink" href="#initializ
git remote add upstream https://github.com/uchicago-cs/chirouter.git
</pre></div>
</div>
</section>
<section id="submission">
<h2>Submission<a class="headerlink" href="#submission" title="Link to this heading"></a></h2>
<p>Before submitting, make sure you’ve added, committed, and pushed all
your code to GitHub. You will submit your code through <a class="reference external" href="https://gradescope.com/">Gradescope</a>,
which you can access through our Canvas site.</p>
<p>When submitting through Gradescope, you will be asked to select a repository to submit.
Make sure that you select the correct repository and branch. Please note that you can
submit as many times as you want before the deadline.</p>
<p>Please note that you must make a <strong>single submission per pair of students</strong> (do not make two submissions, one per student). When making your submission, you will be allowed to add “team members” to your submission. Make sure you add your project partner in your submission.</p>
<p>In this project, Gradescope will <em>only</em> fetch the following files from your repository:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">src/c/router.c</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">src/c/arp.c</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">src/c/utils.c</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">src/c/utils.h</span></code></p></li>
<li><p>The <code class="docutils literal notranslate"><span class="pre">DOCUMENTATION.md</span></code> file in the root of your repository</p></li>
</ul>
<p>Once you submit your files, an “autograder” will run. Unlike Projects 1 and 2, the autograder will not run any automated tests, because the chirouter tests require running a Docker container with elevated privileges, which is not possible on Gradescope’s autograding infrastructure. Instead, the tests will be run manually by the graders (the autograder will just build your code to ensure it builds).</p>
<div class="toctree-wrapper compound">
</div>
</section>
Expand Down
94 changes: 77 additions & 17 deletions projects/project3_rubric.html
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,10 @@
<li><a class="reference internal" href="#code-quality">Code Quality</a></li>
<li><a class="reference internal" href="#correctness">Correctness</a></li>
<li><a class="reference internal" href="#design">Design</a></li>
<li><a class="reference internal" href="#style">Style</a></li>
<li><a class="reference internal" href="#style">Style</a><ul>
<li><a class="reference internal" href="#documentation">Documentation</a></li>
</ul>
</li>
<li><a class="reference internal" href="#other-code-quality-issues">Other Code Quality Issues</a></li>
</ul>

Expand All @@ -112,10 +115,6 @@

<section id="project-3-rubric">
<h1>Project 3 Rubric<a class="headerlink" href="#project-3-rubric" title="Link to this heading"></a></h1>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>This page has not yet been updated for Autumn 2024.</p>
</div>
<p>The grading of this project follows a specifications grading approach. If you have not already
done so, make sure to read our <a class="reference external" href="../syllabus.html#grading">Grading</a> section of
the syllabus for more details.</p>
Expand All @@ -138,6 +137,8 @@ <h1>Project 3 Rubric<a class="headerlink" href="#project-3-rubric" title="Link t
Adam Shaw for this concise phrasing).</p></li>
<li><p><em>Style</em>: This encompasses your adherence
to our <a class="reference external" href="https://uchicago-cs.github.io/student-resource-guide/style-guide/c.html">Style Guide</a>.</p></li>
<li><p><em>Documentation</em>: You will be required to submit certain documentation on
your code (the exact documentation is described below)</p></li>
</ul>
</li>
</ul>
Expand All @@ -155,11 +156,11 @@ <h1>Submission Timeline<a class="headerlink" href="#submission-timeline" title="
<tbody>
<tr class="row-even"><td><p>Project 3</p></td>
<td><p><a class="reference external" href="http://chi.cs.uchicago.edu/chirouter/">chirouter</a> (entire project)</p></td>
<td><p><strong>Wednesday, May 15th, 8pm</strong></p></td>
<td><p><strong>Thursday, December 5th, 8pm</strong></p></td>
</tr>
<tr class="row-odd"><td><p>Resubmission (Optional)</p></td>
<td><p>You may submit a revised version to improve your Completeness score <em>only</em></p></td>
<td><p><strong>Friday, May 24th, 8pm</strong></p></td>
<td><p><strong>Friday, December 13th, 8pm</strong></p></td>
</tr>
</tbody>
</table>
Expand All @@ -168,8 +169,9 @@ <h1>Submission Timeline<a class="headerlink" href="#submission-timeline" title="
there is not enough to do a full resubmission-regrading cycle.</p>
<p><strong>NOTE</strong>: To make a resubmission, you must make a “good-faith” submission by the project
deadline. A good-faith submission is any submission where it is clear you have put in
a substantial amount of effort to complete the project. Please note that we will consider
any submission that scores an N in Completeness to meet the bar for a good-faith submission.</p>
a substantial amount of effort to complete the project. Please note that scoring an N
in Completeness is a sufficient (but not necessary) requirement for a submission to
be considered a good-faith submission.</p>
<p>This means that, if you want to make a resubmission, you cannot skip the initial
submission, or submit an effectively empty submission. The reason for this is that
such a submission could score an S in Code Quality purely because most of the rubric
Expand All @@ -185,18 +187,12 @@ <h1>Submission Timeline<a class="headerlink" href="#submission-timeline" title="
</section>
<section id="completeness">
<h1>Completeness<a class="headerlink" href="#completeness" title="Link to this heading"></a></h1>
<p>The Completeness component will be determined by running the following commands:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">tests</span>
<span class="n">make</span> <span class="n">grade</span>
</pre></div>
</div>
<p>(see <a class="reference external" href="http://chi.cs.uchicago.edu/chirouter/automated-tests.html">Automated tests</a>
in the chirouter documentation for more details)</p>
<p>The Completeness component will be determined by running the chirouter <a class="reference external" href="http://chi.cs.uchicago.edu/chirouter/automated-tests.html">automated tests</a>.</p>
<p><strong>NOTE</strong>: In Project 3, you will be relying on manual testing to a greater extent
than in Projects 1 and 2. The automated tests provide a convenient way to run all
the tests and get a test score but, in general, if your code works when testing it
manually, and fails the corresponding automated test, you should consider the test
to have passed (you should make a note in the README file so the graders are aware
to have passed (you should make a note in the <code class="docutils literal notranslate"><span class="pre">DOCUMENTATION.md</span></code> file so the graders are aware
of this)</p>
<p>Your SNU score will then be determined as follows:</p>
<table class="docutils align-default">
Expand Down Expand Up @@ -300,6 +296,70 @@ <h1>Style<a class="headerlink" href="#style" title="Link to this heading">¶</a>
<li><p>[Major Issue] <strong>Using goto statements</strong>, except in the very limited cases
described in the style guide.</p></li>
</ul>
<section id="documentation">
<h2>Documentation<a class="headerlink" href="#documentation" title="Link to this heading"></a></h2>
<p>Your submission must include a <code class="docutils literal notranslate"><span class="pre">DOCUMENTATION.md</span></code> file in the root of your repository
with some specific documentation about the code you have written. If you do not
include this file, Gradescope will reject your submission entirely. If you do
include it, but the file does not provide the information we request below, this will
be treated as a major issue in your submission.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">DOCUMENTATION.md</span></code> file <strong>must</strong> follow the template below
(the exact sections are explained further below):</p>
<div class="highlight-markdown notranslate"><div class="highlight"><pre><span></span><span class="gh">Project 2</span>
<span class="gh">=========</span>

Team members:
<span class="k">-</span><span class="w"> </span>TEAM MEMBER 1 (CNETID1)
<span class="k">-</span><span class="w"> </span>TEAM MEMBER 2 (CNETID2)

Test score: XXX / YYY

<span class="gu">Additional functions</span>
<span class="gu">--------------------</span>
<span class="k">-</span><span class="w"> </span>function1() in utils.c
<span class="k">-</span><span class="w"> </span>function2() in arp.c

<span class="gu">Other code details / requests for feedback</span>
<span class="gu">------------------------------------------</span>
&lt;COMPLETE THIS SECTION&gt;

<span class="gu">Known omissions</span>
<span class="gu">---------------</span>
&lt;COMPLETE THIS SECTION&gt;

<span class="gu">Citations</span>
<span class="gu">---------</span>
&lt;COMPLETE THIS SECTION&gt;
</pre></div>
</div>
<p>Below you can find more details on each of the sections. If you are not providing any
information in a given section, please do not remove the section. Instead, just write
<code class="docutils literal notranslate"><span class="pre">N/A</span></code> below it.</p>
<ul>
<li><p><strong>Team members</strong>: Include the names and CNetIDs of both team members.</p></li>
<li><p><strong>Test score</strong>: Please include the test score you are seeing when running the tests
on your computer. This will allow us to ensure that, when we run the tests, we are
getting the same score.</p></li>
<li><p><strong>Additional functions</strong>: If you added new functions to <code class="docutils literal notranslate"><span class="pre">arp.c</span></code> or <code class="docutils literal notranslate"><span class="pre">utils.c</span></code>,
please list them here. You <em>do not</em> need to list every function you add to <code class="docutils literal notranslate"><span class="pre">router.c</span></code></p></li>
<li><p><strong>Other code details / requests for feedback</strong>: Use this section to provide any other
information that may be relevant to the graders as they read through your code.
If you would like us to provide feedback on any specific aspect of your work,
you can also let us know in this section.</p></li>
<li><p><strong>Known omissions</strong>: If you intentionally skipped any part of the project, or intentionally
did not address any rubric items, please list them here. If we can provide any feedback that
would help you address these rubric items, please let us know here as well.</p></li>
<li><p><strong>Citations</strong>: Citations for use of Generative AI or external resources should be included,
when possible, as code comments above any code where you relied on external sources. However,
if you consulted a source that had a more broad impact on your work (and not on specific
pieces of code), you can include the citation here. Additionally, if you had any high-level
discussions about the project with other students in the class, please list their names here.</p>
<p>Note: If the Generative AI platform you’re using does not allow you to easily generate a
shareable link, please include a copy of the conversation(s) at the bottom of the
<code class="docutils literal notranslate"><span class="pre">DOCUMENTATION.md</span></code> file.</p>
</li>
</ul>
</section>
</section>
<section id="other-code-quality-issues">
<h1>Other Code Quality Issues<a class="headerlink" href="#other-code-quality-issues" title="Link to this heading"></a></h1>
Expand Down
13 changes: 4 additions & 9 deletions projects/project3_tips.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,23 +112,18 @@

<section id="project-3-tips">
<h1>Project 3 Tips<a class="headerlink" href="#project-3-tips" title="Link to this heading"></a></h1>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>This page has not yet been updated for Autumn 2024.</p>
</div>
<p>Before you get started, make sure you’ve read through the <a class="reference external" href="../projects/started.html">Projects - Getting Started</a> page.</p>
<section id="resetting-mininet">
<h2>Resetting Mininet<a class="headerlink" href="#resetting-mininet" title="Link to this heading"></a></h2>
<p>If, at any point, Mininet starts behaving in an unexpected manner, specially if you see the following error message
when running chirouter:</p>
<p>If you are running the automated tests, and start getting errors like these inside the Docker container:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="ne">Exception</span><span class="p">:</span> <span class="n">Error</span> <span class="n">creating</span> <span class="n">interface</span> <span class="n">pair</span> <span class="p">(</span><span class="n">r1</span><span class="o">-</span><span class="n">eth1</span><span class="p">,</span><span class="n">s1001</span><span class="o">-</span><span class="n">eth1</span><span class="p">):</span> <span class="n">RTNETLINK</span> <span class="n">answers</span><span class="p">:</span> <span class="n">File</span> <span class="n">exists</span>
</pre></div>
</div>
<p>Try stopping chirouter and mininet, and then running this:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">mn</span> <span class="o">-</span><span class="n">c</span>
<p>Try running this inside the Docker container:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mn</span> <span class="o">-</span><span class="n">c</span>
</pre></div>
</div>
<p>This will reset Mininet to a clean configuration. Next, try re-running the chirouter and mininet commands as usual.</p>
<p>This will reset Mininet to a clean configuration. Next, try re-running the chirouter and test commands as usual.</p>
</section>
<section id="always-create-protocol-headers-from-scratch">
<h2>Always create protocol headers from scratch<a class="headerlink" href="#always-create-protocol-headers-from-scratch" title="Link to this heading"></a></h2>
Expand Down

0 comments on commit efb3c36

Please sign in to comment.