π§πΎβπ€βπ§πΎ day-plan
βπ½ Register
π Energiser
Every session begins with an energiser. Usually there’s a rota showing who will lead the energiser. We have some favourite games you can play if you are stuck.
- Traffic Jam: re-order the cars to unblock yourself
- Telephone: draw the words and write the pictures
- Popcorn show and tell: popcorn around the room and show one nearby object or something in your pocket or bag and explain what it means to you.
π‘ Morning orientation
Learning Objectives
Planning during the week
π£ Steps
If you haven’t done so already, choose someone (volunteer or trainee) to be the facilitator for this morning orientation block. Choose another to be the timekeeper.
ποΈ The Facilitator will:
- Assemble the entire group (all volunteers & all trainees) in a circle
- Briefly welcome everyone with an announcement, like this:
π¬ “Morning everyone, Welcome to CYF {REGION}, this week we are working on {MODULE} {SPRINT} and we’re currently working on {SUMMARISE THE TOPICS OF THE WEEK}”
- Ask any newcomers to introduce themselves to the group, and welcome them.
- Now check: is it the start of a new module? Is it sprint 1? If so, read out the success criteria for the new module.
- Next go through the morning day plan only (typically on the curriculum website) - and check the following things:
Facilitator Checklist
- Check the number of volunteers you have for the morning
- Check someone is leading each session
- Describe how any new activities works for the group
- Decide how best to allocate trainees and volunteers for a given block - most blocks will make this clear
β° The Timekeeper will:
- Announce the start of an activity and how long it will take (check everyone is listening)
- Manage any whole class timers that are used in an activity
- Give people a 10-minute wrap-up warning before the end of an activity
- Announce the end of an activity and what happens next
π Objects
Instructions
This workshop aims to check your understanding.
Each task will explain whether or not you should run the code.
For each task, you can use Data Groups Sprint 2 prep to help you with the questions. You can also use documentation to look up any functions that are unfamiliar. Don’t use ChatGPT or any other AI tool to help you.
π§° Setup
- Get into pairs or groups of up to three.
- Make sure you have a clone of the CYF-Workshops repository on your local machine
This workshop can be found here π https://github.com/CodeYourFuture/CYF-Workshops/tree/main/objects In this workshop, each file contains a different problem at a particular level.
You should start this project at Level 100 and then move through the levels in ascending order, level 200, 300 etc.
β‘οΈ Go to Level 100
π« Morning Break
A quick break so we can all concentrate on the next piece of work.
π Debugging
Debugging is Asking Questions
Prep
- Re-read this article about Mental Models
- Watch this video about VSCode Debugger and follow along with the mini-workshop
- Open this CYF Workshops repo in VSCode and go to the
debugging/bank
folder to find the problem bank.
Whew, that’s loads! But we did set it all as coursework, so you have done it already, right? π
Today we’re going to use our formal language of developer questions. We began with this basic format:
- What I did
- What I expected
- What actually happened
This format helps to find the discrepancies between expectations and reality. (This is the gap in our understanding.)
It really helps us with debugging. Today we will use a debugger and our scientific method to find and fix bugs. Recall your scientific method:
Recap asking questions
Predict & Explain
- Make a prediction by explaining what the outcome will be
Test
- Run the code to see what actually happens
Compare and Update
- Compare the outcome with our prediction
- Explain the gap between our prediction and what actually happened
- Update our understanding
This process is cyclical.
Setup
Get into pairs. Each pair consists of two roles:
- Computer: Execute the code mentally, predicting the outcome.
- Debugger: Use the VSCode debugger to step through the code.
You will swap roles after each exercise.
Set a whole class timer for 10 minutes.
Stepping
πΉοΈUnderstanding Variables and Flow, 10m
Identify the value of variables at each step in a loop.
const sumArray = (numbers) => {
let total = 0;
for (let i = 0; i < numbers.length; i++) {
total += numbers[i];
}
return total;
};
console.log(sumArray([1, 2, 3]));
Computer:
- Write down predictions for
total
andi
values before each loop iteration. - Compare predictions after each Debugger’s step.
Debugger:
- Open
sumArray.js
in VSCode. - Choose ‘Run > Start Debugging’ from the menu.
- Set a breakpoint at
total += numbers[i];
. - Step into your function.
- Step Over through iteration until your loop is complete.
- Monitor
total
andi
in the Variables section.
Debugging
Okay, swap roles. Set a whole class timer for 15 minutes.
πΉοΈFinding an Error, 15m
const findLargest = (numbers) => {
let largest = numbers[0];
for (let i = 1; i < numbers.length; i++) {
if (numbers[i] > largest) {
largest = numbers[i];
}
}
return largest;
};
console.log(findLargest([3, 7, 2, 5, 6]));
Debugger:
- Open
findLargest
in VSCode. - Predict the return value of
findLargest
. Write your prediction down. - Set a breakpoint at
if (numbers[i] > largest)
. - Debug and inspect
i
,numbers[i]
, andlargest
. - Write down the return value of
findLargest([3, 7, 2, 5, 6])
.
Computer:
- Predict the value of
largest
after each loop iteration. - ‘Execute’ the code and write down the actual value of
largest
after each loop iteration. - Write down the return value of
findLargest([3, 7, 2, 5, 6])
. - Now execute the code in VSCode. Did you get the same result?
Both (briefly) write up your mental model using this format:
- What I did
- What I expected. Make sure you include your prediction here
- What actually happened
Okay, swap roles. If you have time left and you’re into this, there are many problems stored in debugging/bank
. Set a whole class timer for 15 minutes.
πΉοΈProblem Bank, 30m
Pick any problem from the bank and work through it together. Use the debugger and the scientific method to find and fix the bug.
Write up your findings in the developer question format. Swap roles and repeat until we run out of time.
π§πΎβπ»π Developer questions contain
- π Links π
- Objectives - what are you actually trying to do? π
- πΌοΈ Screenshots of UI π
- π
Code blocks
π - π·
Screenshots of codeπ
π Further reading
π½οΈ Community Lunch
Every Saturday we cook and eat together. We share our food and our stories. We learn about each other and the world. We build community.
This is everyone’s responsibility, so help with what is needed to make this happen, for example, organising the food, setting up the table, washing up, tidying up, etc. You can do something different every week. You don’t need to be constantly responsible for the same task.
π Study Group
Learning Objectives
What are we doing now?
You’re going to use this time to work through coursework. Your cohort will collectively self-organise to work through the coursework together in your own way. Sort yourselves into groups that work for you.
Use this time wisely
You will have study time in almost every class day. Don’t waste it. Use it to:
- work through the coursework
- ask questions and get unblocked
- give and receive code review
- work on your portfolio
- develop your own projects
ποΈ Code waiting for review π
Below are trainee coursework Pull Requests that need to be reviewed by volunteers.
Glasgow | May-2025 | Mansoor Munawar | Data Groups| Sprint 2 π
Learners, PR Template
Self checklist
- [ y] I have committed my files one by one, on purpose, and for a reason
- [y ] I have titled my PR with Region | Cohort | FirstName LastName | Sprint | Assignment Title
- [y ] I have tested my changes
- [y ] My changes follow the style guide
- [y ] My changes meet the requirements of this task
Changelist
Briefly explain your PR. I completed the exercises for sprint-2 which included degbugging programs, implementing function and test based on set requirement, and leaving comments detailing program execution and where the bug is located within the program.
Questions
Ask any questions you have for your reviewer.
Start a reviewLondon | 25-ITP-May | Houssam Lahlah | Sprint 3 | Slide show π
Self checklist
- I have committed my files one by one, on purpose, and for a reason
- I have titled my PR with Region | Cohort | FirstName LastName | Sprint | Assignment Title
- I have tested my changes
- My changes follow the style guide
- My changes meet the requirements of this task
## Changelist
What I did:
Built a JavaScript-powered image slideshow.
Implemented manual navigation using Next and Previous buttons.
Added automatic slideshow functionality that cycles through images at a set interval.
Ensured the slideshow loops correctly when reaching the start or end.
Used setInterval and clearInterval to manage timing and prevent conflicts.
## Questions
Do you think the code handles both manual and automatic slideshow smoothly?
Is the interval management clear and easy to maintain?
Any improvements for better accessibility or responsiveness?
London | ITP-May-25 | Houssam Lahlah | Sprint 3 | Reading List π
Self checklist
- I have committed my files one by one, on purpose, and for a reason
- I have titled my PR with Region | Cohort | FirstName LastName | Sprint | Assignment Title
- I have tested my changes
- My changes follow the style guide
- My changes meet the requirements of this task
## Changelist
What I did:
Implemented a reading list that dynamically displays a list of books using JavaScript.
Displayed book title and author, and added book cover images.
Highlighted books that are already read by changing their background color.
Structured the page using semantic HTML (ul, li, p, img).
Followed best practices for DOM manipulation and accessibility.
## Questions
Do you think the logic for marking books as read is clear and maintainable?
Is there anything I could improve in how I structure the list items or apply styles?
Is my use of JavaScript efficient and clear?
London | 25-ITP-May | Houssam Lahlah | Sprint 3 | Alarm Clock π
Self checklist
- I have committed my files one by one, on purpose, and for a reason
- I have titled my PR with Region | Cohort | FirstName LastName | Sprint | Assignment Title
- I have tested my changes
- My changes follow the style guide
- My changes meet the requirements of this task
## Changelist
What I did:
- Implemented the alarm functionality in alarmclock.js, including countdown logic and triggering audio when the timer reaches zero.
- Ensured the alarm display updates every second in the format Time Remaining: MM:SS.
- Connected the “Set Alarm” button to trigger the setAlarm() function.
- Made functions (setAlarm, playAlarm) testable by exporting them.
- Ensured compatibility with the test runner by checking typeof document.
## Questions
Do you see any potential bugs or improvements in the setAlarm() function structure?
Is there a cleaner way to format the MM:SS display?
Would you suggest improvements for accessibility or code readability?
London | 25-ITP-May | Houssam Lahlah | Sprint 3 | Quote-Generator π
Self checklist
- I have committed my files one by one, on purpose, and for a reason
- I have titled my PR with Region | Cohort | FirstName LastName | Sprint | Assignment Title
- I have tested my changes
- My changes follow the style guide
- My changes meet the requirements of this task
## Changelist
What I did:
Updated the button text from “Generate Quote” to “New quote” in the HTML to match the expected value in the test.
Updated quote.js to ensure clicking the button triggers a new quote.
Verified functionality works as expected and tests pass.
Why:
This change ensures the UI aligns with the test cases, maintaining consistency and passing all automated checks.
Questions for Reviewer
Is the button label “New quote” the best choice, or would a different label be more clear or accessible?
Should I make any further style changes to improve readability or usability?
Is the function in quote.js structured well, or would you suggest any improvements?
π« Afternoon Break
Please feel comfortable and welcome to pray at this time if this is part of your religion.
If you are breastfeeding and would like a private space, please let us know.
π Study Group
Learning Objectives
What are we doing now?
You’re going to use this time to work through coursework. Your cohort will collectively self-organise to work through the coursework together in your own way. Sort yourselves into groups that work for you.
Use this time wisely
You will have study time in almost every class day. Don’t waste it. Use it to:
- work through the coursework
- ask questions and get unblocked
- give and receive code review
- work on your portfolio
- develop your own projects
π Retro: Start / Stop / Continue
πΉοΈRetro (20 minutes)
A retro is a chance to reflect. You can do this on RetroTool (create a free anonymous retro and share the link with the class) or on sticky notes on a wall.
- Set a timer for 5 minutes. There’s one on the RetroTool too.
- Write down as many things as you can think of that you’d like to start, stop, and continue doing next sprint.
- Write one point per note and keep it short.
- When the timer goes off, one person should set a timer for 1 minute and group the notes into themes.
- Next, set a timer for 2 minutes and all vote on the most important themes by adding a dot or a +1 to the note.
- Finally, set a timer for 8 minutes and all discuss the top three themes.