Lab Policy

There will be a total of eight labs in CS 307. Labs will be administered through a combination of the course website (template retrevial), PrairieLearn (summary statistics and model submission) and Canvas (notebook submission).

Submission Process and Point Breakdown

Each lab will require three separate submissions, which together total ten points:

  • Summary Statistics (2 points)
    • These will be submitted to PrairieLearn, and linked from within the lab notebook.
    • The points for this portion of the lab will follow the homework buffer points strategy.
  • Final Models (5 points)
    • These will be submitted to PrairieLearn, and linked from within the lab notebook.
    • The points for this portion of the lab will follow the homework buffer points strategy.
  • Completed Notebook (3 points)
    • This will be submitted to Canvas.
    • A 10% penalty is applied for each day the lab notebook is submitted late. You cannot score lower than 0 by submitting late.

After you complete the lab notebook, do the following:

  1. Clear all output.
  2. Restart the kernel.
  3. Run all cells.
  4. Preview (render) the notebook.

Note that step 4 is preview not export. To do so we will use Quarto CLI and the Quarto VSCode Extension. Installing these will allow you to render your Jupyter Notebook to a .html file using Quarto. This has a number of advantages over the use Jupyter export.

Following these steps will ensure that once you have submit, we will very, very likely be able to reproduce your work.

Then, to submit, head to the relevant lab on Canvas. You are required to submit two files:

  1. lab-xx.ipynb
  2. lab-xx.html

Here xx should be the two-digit lab number. For example with Lab 01 you will submit:

  1. lab-01.ipynb
  2. lab-01.html

Grading Rubric

First, recall the point breakdown of the lab:

  • Summary Statistics (2 points)
  • Final Models (5 points)
  • Completed Notebook (3 points)

Summary Statistics and Final Models are autograded and will give you immediate feedback. (And you have unlimited attempts!)

For the lab notebook, the three points break down as follows:

  • Code, Document, and Visualization Style [1 points]
    • Max points: 1
    • Possible points: 0, 0.5, 1
    • Criteria 1: Is your code well formatted and easy to read? Does it follow PEP 8? While we do not expect students to be code style experts, there are some very basics we would like you to follow:
      • No blank lines and the start or end of cells.
      • Spaces around binary operators, except for passing values to function parameters.
    • Criteria 2: Is your document well-formatted? Is markdown used correctly? Does the markdown render as expected?
    • Criteria 3: Are you visualizations reasonably close to “publication” quality? At minimum every graphic should include:
      • A title that uses Title Case.
      • A manually labeled x-axis using Title Case and including units if necessary.
      • A manually labeled y-axis using Title Case and including units if necessary.
      • A legend if plot multiple categories of things.
  • Concept Usage [1 points]
    • Max points: 1
    • Possible points: 0, 0.5, 1
    • Criteria: Are course concepts used appropriately?
  • Conclusion [1 points]
    • Max points: 1
    • Possible points: 0, 0.5, 1
    • Criteria: Is a reasonable and practical conclusion stated?

For question with possible values of 0, 0.5, and 1, these correspond to:

  1. No issues
  2. Minor issues
  3. Major issues

If you fail to submit both your .ipynb and a rendered .html file, you will receive zero points for the notebook. Failure to include your name also risks severe point loss.

Python Setup

To ensure that the autograder works correctly, you will need to be using recent versions of both Python and its packages. In particular, you should be on a Python version of at least 3.10.X. Run the code below to check your version.

import sys
sys.version_info

Additionally, you will need to be on recent version of both pandas and scikit-learn. To obtain a list of your current packages, use:

%pip list

If you have previously installed islp please uninstall it, as it has dependency issues.

%pip uninstall islp -y

With islp uninstalled, simply either install pandas and scikit-learn if you have not previously.

%pip install pandas
%pip install scikit-learn

If you have installed pandas and scikit-learn, upgrade them to ensure they are recent enough.

%pip install --upgrade pandas
%pip install --upgrade scikit-learn

Importantly, we need scikit-learn==1.3.1 and pandas==2.1.1, or more recent.