Homework format

Homework assignments will be distributed through GitHub Classroom in the form of Jupyter Notebooks. In general, there will be 3 to 4 problems to solve in each assignment. The problems are intended to take 15 to 30 minutes of your time. Taking into consideration the coding skills and concepts presented throughout the course, you should expect the complexity of the problems to increase throughout the quarter.

Anatomy of a problem

Each problem contains four sub-problems, which are based on the four phases of problem solving proposed by G. Polya.

  1. Summarize
  2. Plan
  3. Code
  4. Reflect

Three of the sections (1, 2, and 4) ask for text responses and one (3) asks for Python code.

Summarize

In general, the summarize sub-problem will prompt you to:

Summarize the goal(s) of the problem in your own words.

Answers to this sub-problem should be written in complete sentences and accurately reflect the goal(s) from the problem description. This is where students can demonstrate their understanding of the problem.

Plan

In general, the plan sub-problem will prompt you to:

Describe your plan to solve the problem.

Answers to this sub-problem may be in complete sentences, but a bullet list of steps or some combination of sentences and bullets will work well, too. Whatever the form, the plan should give enough detail to outline the code you’ll write to solve the problem.

Code

This sub-problem is where you’re asked to write the Python code that will solve the problem. You can write all the code in the assignment notebook (recommended towards the beginning of the course) or in separate Python scripts that you import into your assignment notebook (we’ll do this towards the end of the course).

If your plan is well-written, simply copying it into your script (commented out, of course) will take you a long way toward a successful code solution. Feel free to ask GitHub Copilot “help me implement this plan”. This will often result in a good first pass at your coding solution.

Reflect

The specific text of this sub-problem will vary, so please read it carefully. In general, the plan sub-problem will ask:

Looking back at your code and the resulting output, reflect on whether your code achieved the problem goal(s). To the extent the problem models a physical system, how realistic does the behavior seem? Are there any changes you would make to your approach if you were to solve this problem again (e.g., to make your code more re-usable or to avoid dead ends)?

Grading rubric

As described in the Grading policies page, you’ll be responsible for grading your own homework assignments. Use the rubric below to grade your homework. I’ll use the same rubric for check problems I grade.

Category 2 Points 1 Point 0 Points Score
Summarize The problem goals are summarized accurately. The summary is written in complete sentences. Problem goals are inaccurately summarized or the summary is not in complete sentences. Missing or unclear summary __ / 2
Plan A reasonable plan to solve the problem is described. The description provides enough detail for a coding outline. The proposed plan contains logical errors or insufficient detail to start a coding outline. Missing or unclear plan __ / 2
Code The code solves the problem. The code runs without raising errors. The code provides a partial solution to the problem or raises errors when executed Missing or irrelevant code __ / 2
Reflect The reflection is thoughtful, relevant, and written in complete sentences. Problem-specific content is addressed. The reflection is marginally relevant or not in complete sentences. Missing or unclear reflection __ / 2
Total __ / 8