πŸ§‘πŸ½β€πŸ€β€πŸ§‘πŸ½ day-plan

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.

  1. Traffic Jam: re-order the cars to unblock yourself
  2. Telephone: draw the words and write the pictures
  3. 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.

Notes

🎑 Morning orientation

Learning Objectives

Planning during the week

🧭 During the week, create a post on Slack and get some people to take on the roles of facilitator and timekeeper. Nominate new people each time.

πŸ‘£ 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:

  1. Assemble the entire group (all volunteers & all trainees) in a circle
  2. 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}”

  3. Ask any newcomers to introduce themselves to the group, and welcome them.
  4. 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.
  5. 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

Notes

Learning Objectives

Teamwork Project S3

Learning Objectives

Preparation

Post-its and a collaborative board.

Introduction

When mapping a product, we go from the high to the lowest level to plan our delivery. The reason for that is so that the team and stakeholders all have the same knowledge of the strategy of the product and the main end goal.

However, we cannot deliver everything at once. And we also cannot plan every detail. We can prioritise the must-haves and then focus on them.

Product > Features > User Stories > Tasks

This mapping process is also sometimes called User Journey mapping or Story Mapping. And you can - and should - do it whenever you are starting a new project.

What questions should we ask to identify what needs to be built?

🎯 Goal: To understand the requirements of building a library website. (5 minutes)

Let’s assume we have been asked to build a library website that allows you to borrow books.

  • Discuss briefly as a class what questions we should ask to understand better what we will build.
  • Write these questions on post-its and share them on the collaborative board.

Make sure to encourage different people to share their ideas

Focus is on the questions, not the answers!

What features should this website have?

🎯 Goal: To understand the process of breaking down a product into features. (10 minutes)

Let’s assume we got answers to all our questions about the product. (We are not going to actually answer them)

Overall, the goal is to build a website with a catalogue of books that can be borrowed online.

  • In small groups, identify the main features you would expect to see on this website. In this example, features could be a shopping cart, book search, etc.
  • One person of each group to share the group’s thoughts with the class.

Breaking features down into user stories

🎯 Goal: To understand the process of breaking down features into user stories. (15 minutes)

Now that we have all the features, we need to break them down into user stories.

In small groups, pick one of the features and break it down into at least 2 user stories. For example, for the shopping cart feature the user stories could be:

  • As a library user, I want to be able to remove items I have included in my shopping cart so that when I checkout the remaining books are the ones I want to borrow.
  • As a library user, I want to be able to pay with credit card for the books in my shopping cart so they can be delivered to me

Different group representatives volunteer to share thoughts with the class.

Tasks needed to deliver this user story

🎯 Goal: To understand the process of breaking down user stories into tasks and distributing those tasks among team members. (15 minutes)

Now that we have user stories, it is time to break them down into tasks. Tasks are used to break down user stories into smaller components that can then be assigned to individual team members.

Chose a user story and in tο»Ώhe same groups complete the following:

  • Identify the tasks that need to be completed in order to deliver value to the user, providing the outcome described in the user story.

  • Identify relationships and dependencies between tasks.

    • How does a change in Task A affect other tasks?
    • Does Task A need to be completed before we can work on Task B?
  • Size those tasks taking into account complexity and dependencies.

  • Answer these questions: when is it the right time to assign tasks to team members, what would be the criteria you would follow when assigning tasks?

Examples of tasks for a user story describing the book search functionality could be Search Box, Text Autocomplete, Database creation and setup. Discuss in small groups.

Again, a different group representative volunteer to share thoughts with the class.

Morning Break

A quick break of fifteen minutes so we can all concentrate on the next piece of work.

Notes

🌑️ Diagnose

Learning Objectives

This is a pairing activity!

Each pair will need to split into navigator and driver.
Volunteers can pair up too - they need to drive though!
Navigators you can read the instructions for this workshop as you get setup

This activity will consist of the following steps:

πŸ§‘β€πŸ’» Predict ➑️ Explain

Given a program or piece of code, you’ll have to explain what the code currently does. Not what it should do.

πŸ”πŸ› Find the bug

Given a target output/behaviour - trainees can identify a bug in the source code

πŸͺœπŸ§­ Propose a strategy

Given a problem, you’ll have to think about a strategy for solving it. This doesn’t involve coding but stepping back to think about how you could solve the problem. You might want to talk aloud, draw a flow diagram or write out the steps you’d take in your solution.

For the specific task, check with the facilitator on Saturday.

Notes

Learning Objectives

πŸ“ Check-in ➑️ Coordinate

Learning Objectives

  1. Assemble as group
  2. Briefly discuss any particular areas of concern following the diagnose block
  3. Devise strategies for addressing misconceptions

Notes

Learning Objectives

πŸ›ŽοΈ Code waiting for review πŸ”—

Below are trainee coursework Pull Requests that need to be reviewed by volunteers.

Add recommended VS Code extensions πŸ”—

What does this change?

This PR introduces a curated list of recommended Visual Studio Code extensions to the module. The aim is to standardize the development environment for all trainees, ensuring they have access to essential tools and features that enhance their learning experience, and save our mentors’ time and energy.

Common Content?

This change does not directly modify the common content shared across modules but provides an essential resource that complements the existing curriculum. It ensures that all trainees, regardless of their module, have a consistent set of tools at their disposal.

  • Block/s

Common Theme?

  • Yes

Issue number: #368

Org Content?

Module

Checklist

Who needs to know about this?

@CodeYourFuture/itp-syllabus-team

Start a review
WM5 |ELMIRA ZANGENEH| MODULE-JS3 | PROGRAMMING HUMOUR | WEEK 2 πŸ”—

Learners, PR Template

Self checklist

  • I have committed my files one by one, on purpose, and for a reason
  • I have titled my PR with COHORT_NAME | FIRST_NAME LAST_NAME | REPO_NAME | WEEK
  • I have tested my changes
  • My changes follow the style guide
  • My changes meet the requirements of this task

Changelist

Briefly explain your PR.

Questions

Ask any questions you have for your reviewer.

Start a review
WM5 | Abdihamid Ali | Modul-JS3 | Programmer Humour | week3 πŸ”—

Learners, PR Template

Self checklist

  • I have committed my files one by one, on purpose, and for a reason
  • I have titled my PR with COHORT_NAME | FIRST_NAME LAST_NAME | REPO_NAME | WEEK
  • I have tested my changes
  • My changes follow the style guide
  • My changes meet the requirements of this task

Changelist

Briefly explain your PR.

Questions

I’m getting confused about this “Quality Gate failed” from sonarcloud can anyone explain it to me ? do I have to do anything about it ?
Ask any questions you have for your reviewer.

Start a review
NW6 | Nazanin Saedi | object-destructuring | Module-JS3 | Exercise 3 | Week 3 πŸ”—

one explanation :

The console.log(“QTY\tITEM\t\t\tTOTAL”); line is used to print the header of the receipt, which includes the titles for each column: “QTY” for quantity, “ITEM” for item name, and “TOTAL” for total cost.

Here’s a breakdown of what each part of the string does:

\t: This is an escape sequence representing a tab character. It adds spacing between the columns.
“QTY”: This is the title for the quantity column.
“ITEM”: This is the title for the item name column.
“\t\t\t”: This adds extra tabs to provide additional spacing between the item name column and the total column.
“TOTAL”: This is the title for the total cost column.

Start a review
NW6 | Nazanin Saedi | object-destructuring | Module-JS3 |Exercise 2 | week3 πŸ”—
In both tasks, destructuring is used when filtering the hogwarts array and when iterating over the filtered results to extract the necessary properties (firstName and lastName) Start a review
See more pull requests

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.

Notes

Break down πŸ”—

Debugging is Asking Questions

Prep

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:

  1. What I did
  2. What I expected
  3. 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:

<details>
<summary>Recap asking questions</summary>

Predict & Explain

  1. Make a prediction by explaining what the outcome will be

Test

  1. Run the code to see what actually happens

Compare and Update

  1. Compare the outcome with our prediction
  2. Explain the gap between our prediction and what actually happened
  3. Update our understanding

This process is cyclical.

graph LR A[Predict] B[Explain] C[Test] D[Compare] E[Update] A --> B B --> C C --> D D --> E E --> A

</details>

Setup

Get into pairs. Each pair consists of two roles:

  1. Computer: Execute the code mentally, predicting the outcome.
  2. 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.

https://code.visualstudio.com/docs/editor/debugging

Stepping

{{<note type="activity" title="Understanding Variables and Flow, 10m" >}}

Identify the value of variables at each step in a loop.

const sumArray = (numbers) =&gt; {
  let total = 0;
  for (let i = 0; i &lt; numbers.length; i&#43;&#43;) {
    total &#43;= numbers[i];
  }
  return total;
};
console.log(sumArray([1, 2, 3]));

Computer:

  1. Write down predictions for total and i values before each loop iteration.
  2. Compare predictions after each Debugger's step.

Debugger:

  1. Open sumArray.js in VSCode.
  2. Choose 'Run > Start Debugging' from the menu.
  3. Set a breakpoint at total &#43;= numbers[i];.
  4. Step into your function.
  5. Step Over through iteration until your loop is complete.
  6. Monitor total and i in the Variables section.

{{</note>}}

Debugging

Okay, swap roles. Set a whole class timer for 15 minutes.

{{<note type="activity" title="Finding an Error, 15m" >}}

const findLargest = (numbers) =&gt; {
  let largest = numbers[0];
  for (let i = 1; i &lt; numbers.length; i&#43;&#43;) {
    if (numbers[i] &gt; largest) {
      largest = numbers[i];
    }
  }
  return largest;
};
console.log(findLargest([3, 7, 2, 5, 6]));

Debugger:

  1. Open findLargest in VSCode.
  2. Predict the return value of findLargest. Write your prediction down.
  3. Set a breakpoint at if (numbers[i] &gt; largest).
  4. Debug and inspect i, numbers[i], and largest.
  5. Write down the return value of findLargest([3, 7, 2, 5, 6]).

Computer:

  1. Predict the value of largest after each loop iteration.
  2. 'Execute' the code and write down the actual value of largest after each loop iteration.
  3. Write down the return value of findLargest([3, 7, 2, 5, 6]).
  4. Now execute the code in VSCode. Did you get the same result?

Both (briefly) write up your mental model using this format:

  1. What I did
  2. What I expected. Make sure you include your prediction here
  3. What actually happened

{{</note>}}

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.

{{<note type="activity" title="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.

{{</note>}}

<details>
<summary>πŸ§‘πŸΎβ€πŸ’»πŸ™‹ Developer questions contain</summary>

  1. πŸ”— Links πŸ‘
  2. Objectives - what are you actually trying to do? πŸ‘
  3. πŸ–ΌοΈ Screenshots of UI πŸ‘
  4. πŸ“ Code blocks πŸ‘
  5. πŸ“· Screenshots of code πŸ™…

πŸ“š Further reading

</details>

Study Group

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

Notes

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.

Notes

Study Group

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

Notes

πŸ›ŽοΈ Code waiting for review πŸ”—

Below are trainee coursework Pull Requests that need to be reviewed by volunteers.

Add recommended VS Code extensions πŸ”—

What does this change?

This PR introduces a curated list of recommended Visual Studio Code extensions to the module. The aim is to standardize the development environment for all trainees, ensuring they have access to essential tools and features that enhance their learning experience, and save our mentors’ time and energy.

Common Content?

This change does not directly modify the common content shared across modules but provides an essential resource that complements the existing curriculum. It ensures that all trainees, regardless of their module, have a consistent set of tools at their disposal.

  • Block/s

Common Theme?

  • Yes

Issue number: #368

Org Content?

Module

Checklist

Who needs to know about this?

@CodeYourFuture/itp-syllabus-team

Start a review
WM5 |ELMIRA ZANGENEH| MODULE-JS3 | PROGRAMMING HUMOUR | WEEK 2 πŸ”—

Learners, PR Template

Self checklist

  • I have committed my files one by one, on purpose, and for a reason
  • I have titled my PR with COHORT_NAME | FIRST_NAME LAST_NAME | REPO_NAME | WEEK
  • I have tested my changes
  • My changes follow the style guide
  • My changes meet the requirements of this task

Changelist

Briefly explain your PR.

Questions

Ask any questions you have for your reviewer.

Start a review
WM5 | Abdihamid Ali | Modul-JS3 | Programmer Humour | week3 πŸ”—

Learners, PR Template

Self checklist

  • I have committed my files one by one, on purpose, and for a reason
  • I have titled my PR with COHORT_NAME | FIRST_NAME LAST_NAME | REPO_NAME | WEEK
  • I have tested my changes
  • My changes follow the style guide
  • My changes meet the requirements of this task

Changelist

Briefly explain your PR.

Questions

I’m getting confused about this “Quality Gate failed” from sonarcloud can anyone explain it to me ? do I have to do anything about it ?
Ask any questions you have for your reviewer.

Start a review
NW6 | Nazanin Saedi | object-destructuring | Module-JS3 | Exercise 3 | Week 3 πŸ”—

one explanation :

The console.log(“QTY\tITEM\t\t\tTOTAL”); line is used to print the header of the receipt, which includes the titles for each column: “QTY” for quantity, “ITEM” for item name, and “TOTAL” for total cost.

Here’s a breakdown of what each part of the string does:

\t: This is an escape sequence representing a tab character. It adds spacing between the columns.
“QTY”: This is the title for the quantity column.
“ITEM”: This is the title for the item name column.
“\t\t\t”: This adds extra tabs to provide additional spacing between the item name column and the total column.
“TOTAL”: This is the title for the total cost column.

Start a review
NW6 | Nazanin Saedi | object-destructuring | Module-JS3 |Exercise 2 | week3 πŸ”—
In both tasks, destructuring is used when filtering the hogwarts array and when iterating over the filtered results to extract the necessary properties (firstName and lastName) Start a review
See more pull requests

Retro: Start / Stop / Continue

Retro (20 minutes)

A retro is a chance to reflect on this past sprint. You can do this on a Jamboard (make sure someone clicks “Make a copy” before you start, and you work on that together) or on sticky notes on a wall.

  1. Set a timer for 5 minutes.
  2. Write down as many things as you can think of that you’d like to start, stop, and continue doing next sprint.
  3. Write one point per note and keep it short.
  4. When the timer goes off, one person should set a timer for 1 minute and group the notes into themes.
  5. 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.
  6. Finally, set a timer for 8 minutes and all discuss the top three themes.

Notes