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.
- Summarize
- Plan
- Code
- 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 |