Assignment Details

DSAN 5500: Data Structures, Objects, and Algorithms in Python

Assignments will be manually graded, and these grades will be entered on both Canvas and Google Classroom. To submit each assignment, all you need to do is save your Colab notebook: when the late-submission period for each assignment ends, we will take your most-recently-updated notebook files and grade these as your submission. See the next section for Frequently Asked Questions (FAQs) about the hint reports you can automatically request for each assignment (besides the Midterm), or see the Points Per Question section below for a summary of the number of total points each question on each assignment is worth.

Autohinter Frequently Asked Questions (FAQs)

No!

The autohinter report is there for the sake of learning: the goal is to enable you to try different approaches to solving a problem, then receive instant feedback on whether your approach has brought you closer-to or further-from the solution.

Your ultimate recorded grade for an assignment is based on human, manual grading of the assignment, so that we can take into account things like:

  • Alternative ways to arrive at the solution that we (as instructors) did not foresee when making the autohinting code for that question
  • Contextual details that you can write into your responses (using Colab's "Add Comment" feature on the response cell), to clarify why you chose one response over another and/or why you are confused about something in the autohinter report

This error could have many causes, since it just means that "something has occurred within the server code that led to a crash".

However, one of the most common reasons for this, and the simplest to fix, is that the autohinter code "detects" your response cells for a given question like (say) Q3.2 by finding a code cell with # @title Q3.2-response as its first line. Although these are the default first lines in each code cell when the Colab notebooks are distributed, you may have inadvertently changed the first line in a given response cell while working on the assignment.

An easy way to detect and fix where this might be happening in your code is to open the Table of Contents view on the left side of the Colab interface: any code cells that start with # @title will be "registered" in Colab's Table of Contents, so that in this Table of Contents listing you should see e.g. Question 1.1 followed by an indented "Q1.1-response", Question 1.2 followed by an indented "Q1.2-response" listing, and so on. If one of these "QX.X-response" entries is missing (for example, if the Table of Contents skips directly from "Question 1.1" to "Question 1.2"), find the relevant code cell and then re-add # @title Q1.1-response as its first line.

Here, the first thing to check is the **URL** of the server that the submission cell is using: Previous versions of the class used a National Science Foundation "Jetstream" server, but this semester we are using a (...personally funded) Google Cloud Run setup.

So, this just means:

  • If you see the older URL, http://jag.soc240036.projects.jetstream-cloud.org:5000/submit,
  • Replace it with the new Google Cloud Run URL, https://jah-submit-83645199100.us-east4.run.app/

If you replace the URL and now get a 500 error, see the above entry. If you replace the URL and still get a 404 error, this means that the server is fully down, meaning that this error is happening before your notebook is even able to reach the server. In this case, the problem is most likely something like a server crash rather than any issue within your notebook, so please contact Jeff at jj1088@georgetown.edu if you encounter this 404 error.

Points Per Question

Use the tabs below to view the point distributions for different assignments.

The distributions are imported from Google Sheets mainly for transparency: so that you can see exactly how totals are computed as a sum of the individual points allocated for each test!

part qid points part_total
1 Q1.1 3
Q1.2 3
Q1.3 3
Q1.4 3 12
2 Q2.1 5
Q2.2 5 10
3 Q3.1 20
Q3.2 5 25
4 Q4.1 20
Q4.2 5 25
5 Q5.1 3
Q5.2 3
Q5.3 2
Q5.4 2 10
6 Q6.1 4
Q6.2 4
Q6.3 3
Q6.4 3
Q6.5 4 18
Total 100 100
part qid points part_total
Q1.1 15
Q1.2 8 23
Q2.1 15
Q2.2 8 23
Q3.1 15
Q3.2 8 23
Q4.1 15
Q4.2 8 23
Q5.1 6
Q5.2 2 8
Total 100
part qid points part_total
Q1.1 6
Q1.2.1 2
Q1.2.2 2
Q1.2.3 2
Q1.3.1 2
Q1.3.2 2
Q1.3.3 1
Q1.3.4 1
Q1.3.5 2 20
Q2.1 10
Q2.2.1 2
Q2.2.2 2 14
Q3.1 10
Q3.2.1 9
Q3.2.2 2 21
Q4.1 8
Q4.2.1 2
Q4.2.2 2 12
Q5.1 8
Q5.2.1 2
Q5.2.2 2 12
Total 79