Keeping a project journal

Tip: Choose Save as PDF in the print dialog to download. Use A4 paper size.

Keeping a project journal

Name:
Date:
Class:

Quick Questions

Shade in the A or B circle for each question.

1. Which journal entry is better practice?
A Worked on the project. It went fine.
B 12 May: Login form done. Fixed a crash by adding a check for empty input.
2. When should you write a project journal entry?
A As development happens, so the details are fresh
B All at once the night before the project is due
3. Why does each journal entry include a date?
A It shows when things happened, so progress can be compared with the plan
B It makes the entry look longer and more professional
4. Which entry records a problem and its solution?
A Bug: scores were not saving. Cause: file was never closed. Fix: used a with block.
B Scores were not saving, but I will think about it later.
5. A task took 5 days instead of 2 because the API changed. What should the journal show?
A Nothing, because delays are not worth recording
B The delay, the reason for it and any change made to the plan

Match the Pairs

Draw a line connecting each item on the left to its match on the right.

Left columnRight column
12025-03-14: Finished login screen. Decided to use tkinter Entry for passwords. AThe journal was not written as development happened, so details, problems and reasons for changes may be forgotten or wrong.
2Problem: crash on empty input. Solution: added an existence check before converting. BA dated entry that records progress made and a decision taken, as it happens
3A journal entry should be written when the work happens, with a date so the order of events can be shown CA problem and solution entry that shows how an issue was found and fixed
4A journal records the reason for a change to the plan, not just that the change happened DThe entry has no exact date and is vague. It does not say what was done, any decisions made or any problems found.
5Week 3: Did some coding. Things went okay. E2025-04-02: Tested search feature with 5 testers. 2 found it slow.
6Wrote the whole journal on the last day from memory. FChange: moved testing back 2 days because the file reading code failed.

Definitions

project journal

Fill in the Blanks

Complete each line of code by filling in the missing parts.

1.
journal = [] entry = {"date": "2025-03-04"} _______.append(entry)
2.
entry = {"____": "2025-03-04"} print(entry["date"])
3.
problem = "Crash on empty input" fix = "Added an existence check" entry = {"problem": problem, "fix": ___}
4.
with open("journal.txt", "_") as f: f.write("2025-03-04: Fixed bug")
5.
journal = ["day 1", "day 2", "day 3"] print("Entries:", ___(journal))

Spot the Error

Shade in the letter of the line that contains an error.

Question 1
A import datetime
B today = datetime.date.today
C entry = f"{today}: Login"
D print(entry)
Question 2
A journal = []
B entry = "2025-03-04: Bug fix
C journal.append(entry)
D print(journal)
Question 3
A problem = "Slow search"
B solution = "Use a dictionary"
C date = "2025-05-02"
D print(date, problem, soluton)
Question 4
A with open("j.txt", "a") as f:
B f.write("2025-06-01\n")
C f.write("Bug: crash\n")
D f.write("Fix: add try\n"
Question 5
A entry = {}
B entry["date"] = "2025-07-10"
C entry["problem"] == "Slow load"
D entry["fix"] = "Added index"
E print(entry)

Answer Key

Keeping a project journal
Section A: Quick Questions
Q1
B — 12 May: Login form done. Fixed a crash by adding a check for empty input.
Q2
A — As development happens, so the details are fresh
Q3
A — It shows when things happened, so progress can be compared with the plan
Q4
A — Bug: scores were not saving. Cause: file was never closed. Fix: used a with block.
Q5
B — The delay, the reason for it and any change made to the plan
Section B: Match the Pairs
Q1
2025-03-14: Finished login screen. Decided to use tkinter Entry for passwords. → A dated entry that records progress made and a decision taken, as it happens
Q2
Problem: crash on empty input. Solution: added an existence check before converting. → A problem and solution entry that shows how an issue was found and fixed
Q3
A journal entry should be written when the work happens, with a date so the order of events can be shown → 2025-04-02: Tested search feature with 5 testers. 2 found it slow.
Q4
A journal records the reason for a change to the plan, not just that the change happened → Change: moved testing back 2 days because the file reading code failed.
Q5
Week 3: Did some coding. Things went okay. → The entry has no exact date and is vague. It does not say what was done, any decisions made or any problems found.
Q6
Wrote the whole journal on the last day from memory. → The journal was not written as development happened, so details, problems and reasons for changes may be forgotten or wrong.
Section C: Definitions
Q1
project journal — A dated record of progress, decisions, problems, solutions and reasons for changes, written as development happens and kept as evidence for evaluation.
Section D: Fill in the Blanks
Q1
journal = [] entry = {"date": "2025-03-04"} journal.append(entry)
Q2
entry = {"date": "2025-03-04"} print(entry["date"])
Q3
problem = "Crash on empty input" fix = "Added an existence check" entry = {"problem": problem, "fix": fix}
Q4
with open("journal.txt", "a") as f: f.write("2025-03-04: Fixed bug")
Q5
journal = ["day 1", "day 2", "day 3"] print("Entries:", len(journal))
Section E: Spot the Error
Q1
B — today is a function, so it needs brackets to run. Without them the variable holds the function itself, not the date. It should be datetime.date.today() so the journal entry has a real date.
Q2
B — The string is missing its closing quote, which causes a syntax error. The dated entry must end with " so it can be added to the journal.
Q3
D — The variable name is misspelled as soluton, so Python raises a NameError. It should be solution, the variable that holds the fix recorded in the journal.
Q4
D — The closing bracket of f.write() is missing, which causes a syntax error. The line should end with ) so the fix is saved in the journal file.
Q5
C — == compares values instead of storing one. The key "problem" does not exist yet, so this causes a KeyError. Use a single = to record the problem in the entry.