Week 2 Coding Lab: Name, Divide, and Convert a Garden Seed Planner
Part 1 — The Big Picture
This week you gave values names, sorted them into types, and learned that Python divides three different ways. In this lab you put that to work: you predict what short programs print, run them, and study any gap between the two. Then you read three broken programs, two from the last line of their error messages and one that runs but prints the wrong value, fix each with the smallest change that works, and write a tiny program of your own. Finally you ask a chatbot the same questions and check every claim it makes by running the code, because a chatbot predicts likely text and does not run your program.
Time budget: Plan for about 90 minutes.
Part 2 — The Task
Guiding question: Which of these seed-planner predictions will you get wrong, and how will each run, each type, and the last line of each error message show you why?
Workshop data: A garden seed planner: six short programs and three broken ones
Source: Six one-line Python programs and three broken programs about an illustrative community-garden seed planner, written for this lab and printed in full in Part 4; the seed and row counts are invented and describe no real garden or person.
- Rows: 9 short programs in all: 6 one-line programs to trace in the first table and 3 broken programs in the second table
- Language: Python 3, run in a free browser runner; no file to download and nothing to install
- Context: an illustrative community garden's seed and row counts
Part 3 — Materials & Procedure
Tools and materials
- A free browser-based Python runner (an online editor that runs Python 3 with no account and nothing to install), Python Tutor at pythontutor.com for step-by-step visualization, the official Python documentation at docs.python.org, and one approved chatbot used as a pair-programmer whose code the student runs before trusting
Ways of working
- write-run-and-verify
- trace-and-predict-output
- find-and-fix-the-bug
Procedure
- Open a free browser Python runner in one tab and Python Tutor at pythontutor.com in another. In the runner, delete any sample code so the editor is blank. Tool: A free browser-based Python runner (an online editor that runs Python 3 with no account and nothing to install), Python Tutor at pythontutor.com for step-by-step visualization, the official Python documentation at docs.python.org, and one approved chatbot used as a pair-programmer whose code the student runs before trusting. Check: An empty editor with a Run button and a separate output panel.
- In the first table in Part 4, write your prediction for each of the six programs before you run anything. Then type each program into the runner exactly as printed, press Run, and copy the output into the Actual output column. Tool: A free browser-based Python runner (an online editor that runs Python 3 with no account and nothing to install), Python Tutor at pythontutor.com for step-by-step visualization, the official Python documentation at docs.python.org, and one approved chatbot used as a pair-programmer whose code the student runs before trusting. Check: Six actual outputs, one per row, each copied character for character from the output panel; at least one is likely to differ from your prediction.
- Type the first broken program into the runner and press Run. Scroll to the bottom of the error message and copy the error type from its last line. Note whether anything printed first. Repeat for the second broken program, then run the third, which raises no error. Tool: A free browser-based Python runner (an online editor that runs Python 3 with no account and nothing to install), Python Tutor at pythontutor.com for step-by-step visualization, the official Python documentation at docs.python.org, and one approved chatbot used as a pair-programmer whose code the student runs before trusting. Check: The second table shows the error type named on each of the first two error messages' last lines; the third program prints a seed count without any error.
- Fix each broken program with the smallest change that makes it do what its description in Part 4 says, run the fixed version, and record the new output. Tool: A free browser-based Python runner (an online editor that runs Python 3 with no account and nothing to install), Python Tutor at pythontutor.com for step-by-step visualization, the official Python documentation at docs.python.org, and one approved chatbot used as a pair-programmer whose code the student runs before trusting. Check: Each fixed program runs without an error and prints the value its description asks for.
- Paste the third broken program into Python Tutor, click the button to visualize it, and step forward one line at a time. Watch the box for each name as each assignment runs. Tool: A free browser-based Python runner (an online editor that runs Python 3 with no account and nothing to install), Python Tutor at pythontutor.com for step-by-step visualization, the official Python documentation at docs.python.org, and one approved chatbot used as a pair-programmer whose code the student runs before trusting. Check: Python Tutor shows extra keeping its first value while total changes, which matches what the runner printed.
- Write your own two-line program for the planner: line 1 stores 75 in a variable named seeds, and line 2 uses print with two comma-separated arguments to show the label Per bed: and the number of seeds each of 4 beds gets in full, using floor division. Predict its output, run it, and fill in the third table. Tool: A free browser-based Python runner (an online editor that runs Python 3 with no account and nothing to install), Python Tutor at pythontutor.com for step-by-step visualization, the official Python documentation at docs.python.org, and one approved chatbot used as a pair-programmer whose code the student runs before trusting. Check: A two-line program that runs without an error, with your predicted and actual output side by side.
- Open your approved chatbot, paste the critique prompt from Part 6 as one message, then check each of its claims by running the code it talks about. If you are using the equivalent route, mark up the printed flawed analysis in the same way. Tool: A free browser-based Python runner (an online editor that runs Python 3 with no account and nothing to install), Python Tutor at pythontutor.com for step-by-step visualization, the official Python documentation at docs.python.org, and one approved chatbot used as a pair-programmer whose code the student runs before trusting. Check: The fourth table lists each chatbot claim, what your run showed, and a correction wherever the two disagree.
Fallback route
When to use it: Use this route if your browser Python runner will not open or will not run code.
Run every program in Python Tutor instead, which also runs Python 3 in the browser: paste each program, click the button to visualize it, and step to the end to read its output or its error. Complete every table, analysis question, and the critique step, and submit the same items for equal credit.
This route earns the same credit as the primary route.
Part 4 — The Scaffold
Predict first and run second, so the gap between the two columns is your own evidence of what Python really does.
| Program | Your prediction | Actual output from the run | Same or different? |
|---|---|---|---|
print(75 / 10) |
|||
print(75 // 10) |
|||
print(75 % 10) |
|||
print(4 + 2 ** 3) |
|||
print("7" * 3) |
|||
print(type(75 / 5)) |
Read each broken program from its run before you change a single character.
| Broken program and what it should do | What printed before any error | Error type on the last line, or none | Your one-change fix | Output after the fix |
|---|---|---|---|---|
Bug 1, should print Seeds needed: 75. Line 1: rows = "7" Line 2: print("Seeds needed:", rows * 10 + 5) |
||||
Bug 2, should print Full rows: and the number of full rows of 10. Line 1: seeds = 75 Line 2: print("Full rows:", Seeds // 10) |
||||
Bug 3, should print the new total after 20 more seeds arrive, but runs and prints something else. Line 1: total = 75 Line 2: extra = total Line 3: total = total + 20 Line 4: print("Seeds now:", extra) |
Write your own small program, then let the run confirm or correct what you expected it to print.
| Line you wrote | Output you expected | Output of the run |
|---|---|---|
| Line 1 | ||
| Line 2 |
Check every chatbot claim against a run so the run, not the chatbot, has the last word.
| Chatbot claim, quoted | What your run showed | Correct as stated, or your correction |
|---|---|---|
Part 5 — Analysis Questions
- Which of your six predictions in the first table differed from the run? For each one, write the step-by-step trace that reaches the actual output and name the rule that explains the gap.
- For Bug 1 and Bug 2, did anything print before each error, and which error type did each last line name? Explain what each type tells you about the mistake in the program.
- Bug 3 runs without any error message but prints the wrong seed count. Explain why that makes it a logic error rather than a syntax error or a runtime error, and use the idea of reassignment to explain why extra kept its old value.
- Choose one: (a) describe how you would decide whether to trust a chatbot's claim about what a line prints, using one claim from your critique as the example; or (b) describe how predicting before running changed what you noticed in this lab, using one row of your first table as the example.
- A run tells you what a program prints, not what its writer meant. Name one thing your runs in this lab could not tell you, and say how you would check it instead.
Part 6 — AI-Critique Moment
Choose one equal-credit critique route. Route A: ask an approved AI tool to critique your completed work, then check its response against your own evidence. Route B is the no-AI equivalent printed below.
Approved tools: Claude, Gemini, ChatGPT, Grok, Microsoft Copilot.
Prompt to paste:
I'm doing a beginner Python lab about a community-garden seed planner, written for a class activity. Please do six things, and keep each answer short. First, predict exactly what each of these one-line programs prints, and explain your reasoning for the first one: print(75 / 10); print(75 // 10); print(75 % 10); print(4 + 2 ** 3); print("7" * 3); print(round(2.5)). Second, how many full rows of 10 seeds do 75 seeds fill? Third, this two-line program should print Seeds needed: 75, but it stops with an error. Fix it and show your fixed version: rows = "7" followed by print("Seeds needed:", rows * 10 + 5). Fourth, this two-line program stops too. Say which error type the last line of the error message names, and explain why: seeds = 75 followed by print("Full rows:", Seeds // 10). Fifth, does Python have a built-in function called integer() that turns the text "7" into the number 7? Sixth, what does print(-7 // 2) print?
Test the response for these likely failures:
- Chatbots often predict that
print(round(2.5))shows 3, because many people learn to round every half up. - Asked how many full rows of 10 the 75 seeds fill, a chatbot may answer 8, counting the partly filled last row as full.
- A chatbot may offer
str(rows * 10 + 5)as the fix and call it working without running it. - A chatbot may fix the seed line as
int(rows * 10) + 5, which runs without an error, and present the job as done. - A chatbot may say the Seeds program has a SyntaxError, while the run shows a different error type on the last line.
- A chatbot may describe an
integer()function as if it were built into Python. - For
print(-7 // 2), a chatbot may answer -3, treating floor division as cutting toward zero and missing the negative case.
Write 2-3 sentences that name one thing the chatbot got right and at least one claim you corrected, and for each correction give the output or error type your own run showed.
Equivalent route (no AI required)
No AI account is required for this lab. Instead of the chatbot, critique this flawed analysis, printed here in full: “print(round(2.5)) prints 3, because halves always round up. 75 seeds fill 8 full rows of 10. To fix the seed line, write print("Seeds needed:", str(rows * 10 + 5)); this version is working. Another fix, print("Seeds needed:", int(rows * 10) + 5), runs and gives the right total. The Seeds program raises a SyntaxError because of the capital S. Python's built-in integer() function turns text into a whole number. print(-7 // 2) prints -3, because floor division cuts off the decimal part.” Mark it up: quote each flawed sentence, run the code it describes in your browser Python runner, and write the corrected claim beside it with the run's output or error type as evidence. This route assesses the same objectives as the chatbot critique, namely predicting what expressions print, converting between types on purpose, reading error messages by type, and checking every claim about code by running it, and it takes comparable effort, about 20 minutes of the lab. It is scored by the same rubric for the same credit, and its marked-up analysis replaces the chatbot report and share link in your submission. You do not need to say which route you chose.
Part 7 — What to Submit
- All four completed scaffold tables
- Written answers to all five analysis questions
- Your two-line seed planner program with its run output
- The chatbot critique report with its share link, or the equivalent route's marked-up flawed analysis
Deliverable:
A short Coding Lab report on an illustrative garden seed planner: four completed tables (six predictions beside their runs, three broken programs read and fixed, your own two-line program, and the checked chatbot claims), written answers to five analysis questions, and a critique of a chatbot's answers to the same questions, or, on the equivalent route, a marked-up correction of the printed flawed analysis. Submit in any accessible file type or as a link; a recorded response may be submitted as audio or video with a transcript, or as text. Choose a written, recorded, or visual form for your answers, such as screen captures of your runs with a short note for each; every form is graded by the same rubric.
Rubric
The rubric below shows how each submitted part is evaluated; bands are full, partial, or none.
| Criterion | Full | Partial | None |
|---|---|---|---|
| Predicting and running the six programs | All six predictions are recorded before the runs, and all six actual outputs match what the programs print, copied character for character. | The table is mostly complete, but an actual output is missing or miscopied, or predictions appear to have been filled in after running. | No predictions or runs are recorded, or the outputs are invented rather than run. |
| Explaining the gaps between prediction and run | Every prediction that differed from its run is traced step by step to the actual output, with the governing rule named, such as floor division moving down, the power going first, or a string repeating. | The gaps are listed, but a trace is missing or the rule behind a gap is not named. | No gap is explained, or the response blames the runner instead of the rule. |
| Finding and fixing the three bugs | Each bug is read correctly from its run: the error type or the absence of one, a one-change fix, and the fixed program's output, with Bug 1 fixed by converting before the arithmetic and Bug 3 identified as a logic error. | Two of the three bugs are read and fixed correctly, or all three are fixed but an error type or the evidence from the run is missing. | The bugs are not attempted, or errors are named without running the programs. |
| Writing, running, and verifying a program | The two-line planner program runs without an error, stores the seeds in a variable, uses floor division with two comma-separated arguments on line 2, and records its expected and actual outputs side by side. | The program runs but misses one requirement, or the expected or actual output is not recorded. | No program is submitted, or it was not run. |
| Critiquing the AI analysis or the printed flawed analysis | The chatbot's answers, or on the equivalent route the printed flawed analysis, are quoted and at least two claims are corrected with evidence from the student's own runs, including at least one claim about a type conversion or a fix. | The critique names errors but corrects only one, or corrects without run evidence, on either route. | No critique is submitted on either route, or chatbot or flawed text is pasted without any checking. |
| Reflection and limitation | The chosen reflection option is answered with a specific example from this lab, and the limitation answer names something a run cannot show and a sensible way to check it. | The reflection or the limitation is general, without an example from this lab or a way to check it. | The reflection and limitation questions are not answered. |
Quality Gate
- Every prediction in the first table was written before its program was run.
- Every actual output and error type is copied from your own run, never from memory or a chatbot.
- Each error is named by its type from the last line of the error message, not by the wording after the colon.
- Each fix changes as little as possible and its fixed program was run.
- No output, count, or claim is invented anywhere in the submission.
- The critique quotes the chatbot or the flawed analysis and corrects at least two claims with evidence from your runs.
Built with The Course Maker · samples.thecoursemaker.com