From 095f64d82e7f50c333ac437e27f7dd4aa1deaaf4 Mon Sep 17 00:00:00 2001 From: Rhoda Ajiroba Date: Sun, 19 Jul 2026 11:40:43 +0100 Subject: [PATCH 1/6] Complete Sprint 1 key exercises --- Sprint-1/1-key-exercises/1-count.js | 2 +- Sprint-1/1-key-exercises/2-initials.js | 3 +-- Sprint-1/1-key-exercises/3-paths.js | 6 +++--- Sprint-1/1-key-exercises/4-random.js | 9 +++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js index 117bcb2b6..654dcb5c2 100644 --- a/Sprint-1/1-key-exercises/1-count.js +++ b/Sprint-1/1-key-exercises/1-count.js @@ -3,4 +3,4 @@ let count = 0; count = count + 1; // Line 1 is a variable declaration, creating the count variable with an initial value of 0 -// Describe what line 3 is doing, in particular focus on what = is doing +// Line 3 calculates count + 1, then uses the = assignment operator to store the new value back into the count variable, changing its value from 0 to 1. diff --git a/Sprint-1/1-key-exercises/2-initials.js b/Sprint-1/1-key-exercises/2-initials.js index 47561f617..6c8b24e69 100644 --- a/Sprint-1/1-key-exercises/2-initials.js +++ b/Sprint-1/1-key-exercises/2-initials.js @@ -5,7 +5,6 @@ let lastName = "Johnson"; // Declare a variable called initials that stores the first character of each string. // This should produce the string "CKJ", but you must not write the characters C, K, or J in the code of your solution. -let initials = ``; +let initials = firstName[0] + middleName[0] + lastName[0]; // https://www.google.com/search?q=get+first+character+of+string+mdn - diff --git a/Sprint-1/1-key-exercises/3-paths.js b/Sprint-1/1-key-exercises/3-paths.js index ab90ebb28..cca4eeecc 100644 --- a/Sprint-1/1-key-exercises/3-paths.js +++ b/Sprint-1/1-key-exercises/3-paths.js @@ -17,7 +17,7 @@ console.log(`The base part of ${filePath} is ${base}`); // Create a variable to store the dir part of the filePath variable // Create a variable to store the ext part of the variable -const dir = ; -const ext = ; +const dir = filePath.slice(0, lastSlashIndex); +const ext = filePath.slice(filePath.lastIndexOf(".") + 1); -// https://www.google.com/search?q=slice+mdn \ No newline at end of file +// https://www.google.com/search?q=slice+mdn diff --git a/Sprint-1/1-key-exercises/4-random.js b/Sprint-1/1-key-exercises/4-random.js index 292f83aab..984b2a07a 100644 --- a/Sprint-1/1-key-exercises/4-random.js +++ b/Sprint-1/1-key-exercises/4-random.js @@ -3,7 +3,8 @@ const maximum = 100; const num = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum; -// In this exercise, you will need to work out what num represents? -// Try breaking down the expression and using documentation to explain what it means -// It will help to think about the order in which expressions are evaluated -// Try logging the value of num and running the program several times to build an idea of what the program is doing +// num stores a random whole number between 1 and 100. +// Math.random() generates a random decimal between 0 and 1. +// Math.floor() rounds the number down to the nearest whole number. +// Adding minimum ensures the final result is between 1 and 100. +console.log(num); From b8c0df3f52a277effca37c5ab1e62073ddb8dc02 Mon Sep 17 00:00:00 2001 From: Rhoda Ajiroba Date: Sun, 19 Jul 2026 13:20:23 +0100 Subject: [PATCH 2/6] Complete Sprint 1 mandatory exercises --- Sprint-1/2-mandatory-errors/0.js | 4 ++-- Sprint-1/2-mandatory-errors/1.js | 2 +- Sprint-1/2-mandatory-errors/2.js | 2 +- Sprint-1/2-mandatory-errors/3.js | 2 +- Sprint-1/2-mandatory-errors/4.js | 4 ++-- .../1-percentage-change.js | 2 +- .../3-mandatory-interpret/2-time-format.js | 11 +++++++++++ Sprint-1/3-mandatory-interpret/3-to-pounds.js | 18 ++++++++++++++++++ 8 files changed, 37 insertions(+), 8 deletions(-) diff --git a/Sprint-1/2-mandatory-errors/0.js b/Sprint-1/2-mandatory-errors/0.js index cf6c5039f..044add7ac 100644 --- a/Sprint-1/2-mandatory-errors/0.js +++ b/Sprint-1/2-mandatory-errors/0.js @@ -1,2 +1,2 @@ -This is just an instruction for the first activity - but it is just for human consumption -We don't want the computer to run these 2 lines - how can we solve this problem? \ No newline at end of file +// This is just an instruction for the first activity - but it is just for human consumption +// We don't want the computer to run these 2 lines - how can we solve this problem? diff --git a/Sprint-1/2-mandatory-errors/1.js b/Sprint-1/2-mandatory-errors/1.js index 7a43cbea7..031839b47 100644 --- a/Sprint-1/2-mandatory-errors/1.js +++ b/Sprint-1/2-mandatory-errors/1.js @@ -1,4 +1,4 @@ // trying to create an age variable and then reassign the value by 1 -const age = 33; +let age = 33; age = age + 1; diff --git a/Sprint-1/2-mandatory-errors/2.js b/Sprint-1/2-mandatory-errors/2.js index e09b89831..2865eb8a4 100644 --- a/Sprint-1/2-mandatory-errors/2.js +++ b/Sprint-1/2-mandatory-errors/2.js @@ -1,5 +1,5 @@ // Currently trying to print the string "I was born in Bolton" but it isn't working... // what's the error ? -console.log(`I was born in ${cityOfBirth}`); const cityOfBirth = "Bolton"; +console.log(`I was born in ${cityOfBirth}`); diff --git a/Sprint-1/2-mandatory-errors/3.js b/Sprint-1/2-mandatory-errors/3.js index ec101884d..c7f62a8a7 100644 --- a/Sprint-1/2-mandatory-errors/3.js +++ b/Sprint-1/2-mandatory-errors/3.js @@ -1,4 +1,4 @@ -const cardNumber = 4533787178994213; +const cardNumber = "4533787178994213"; const last4Digits = cardNumber.slice(-4); // The last4Digits variable should store the last 4 digits of cardNumber diff --git a/Sprint-1/2-mandatory-errors/4.js b/Sprint-1/2-mandatory-errors/4.js index 5f86c730b..f3637b3f3 100644 --- a/Sprint-1/2-mandatory-errors/4.js +++ b/Sprint-1/2-mandatory-errors/4.js @@ -1,2 +1,2 @@ -const 12HourClockTime = "8:53pm"; -const 24hourClockTime = "20:53"; +const twelveHourClockTime = "8:53pm"; +const twentyFourhourClockTime = "20:53"; diff --git a/Sprint-1/3-mandatory-interpret/1-percentage-change.js b/Sprint-1/3-mandatory-interpret/1-percentage-change.js index e24ecb8e1..5de10319e 100644 --- a/Sprint-1/3-mandatory-interpret/1-percentage-change.js +++ b/Sprint-1/3-mandatory-interpret/1-percentage-change.js @@ -2,7 +2,7 @@ let carPrice = "10,000"; let priceAfterOneYear = "8,543"; carPrice = Number(carPrice.replaceAll(",", "")); -priceAfterOneYear = Number(priceAfterOneYear.replaceAll("," "")); +priceAfterOneYear = Number(priceAfterOneYear.replaceAll(",", "")); const priceDifference = carPrice - priceAfterOneYear; const percentageChange = (priceDifference / carPrice) * 100; diff --git a/Sprint-1/3-mandatory-interpret/2-time-format.js b/Sprint-1/3-mandatory-interpret/2-time-format.js index 47d239558..33db17f03 100644 --- a/Sprint-1/3-mandatory-interpret/2-time-format.js +++ b/Sprint-1/3-mandatory-interpret/2-time-format.js @@ -12,14 +12,25 @@ console.log(result); // For the piece of code above, read the code and then answer the following questions // a) How many variable declarations are there in this program? +// Answer: 6 // b) How many function calls are there? +// Answer: 1 (console.log(result)) // c) Using documentation, explain what the expression movieLength % 60 represents // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators +// Answer: It returns the remainder after movieLength is divided by 60. +// This gives the number of seconds left over after converting to minutes. // d) Interpret line 4, what does the expression assigned to totalMinutes mean? +// Answer: It subtracts the remaining seconds from the total seconds, +// then divides by 60 to calculate the total whole minutes. // e) What do you think the variable result represents? Can you think of a better name for this variable? +// Answer: It represents the movie duration in hours:minutes:seconds. +// A better name could be formattedTime or movieDuration. // f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer +// Answer: It works for most values, but it does not always display +// the time in the standard format because single-digit minutes or +// seconds are not padded with a leading zero (for example, 5 instead of 05). diff --git a/Sprint-1/3-mandatory-interpret/3-to-pounds.js b/Sprint-1/3-mandatory-interpret/3-to-pounds.js index 60c9ace69..1f6e88d1f 100644 --- a/Sprint-1/3-mandatory-interpret/3-to-pounds.js +++ b/Sprint-1/3-mandatory-interpret/3-to-pounds.js @@ -25,3 +25,21 @@ console.log(`£${pounds}.${pence}`); // To begin, we can start with // 1. const penceString = "399p": initialises a string variable with the value "399p" + +// 2. const penceStringWithoutTrailingP = penceString.substring(0, penceString.length - 1): +// Removes the "p" from the end of the string, leaving only the number (e.g. "399"). + +// 3. const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"): +// Ensures the number has at least 3 digits by adding leading zeros if necessary. +// For example, "5" becomes "005". + +// 4. const pounds = paddedPenceNumberString.substring(0, paddedPenceNumberString.length - 2): +// Takes all but the last two digits to get the pounds part. + +// 5. const pence = paddedPenceNumberString +// .substring(paddedPenceNumberString.length - 2) +// .padEnd(2, "0"): +// Takes the last two digits as the pence part and makes sure it has two digits. + +// 6. console.log(`£${pounds}.${pence}`): +// Prints the final price in pounds and pence, for example "£3.99". From 3e0f905649848417ba704acc0d8a61f0a2b8bfb3 Mon Sep 17 00:00:00 2001 From: Rhoda Ajiroba Date: Sun, 19 Jul 2026 14:08:18 +0100 Subject: [PATCH 3/6] Complete Sprint 2 key errors --- Sprint-2/1-key-errors/0.js | 10 +++++++--- Sprint-2/1-key-errors/1.js | 7 +++---- Sprint-2/1-key-errors/2.js | 16 ++++++++-------- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/Sprint-2/1-key-errors/0.js b/Sprint-2/1-key-errors/0.js index 653d6f5a0..b34f3782f 100644 --- a/Sprint-2/1-key-errors/0.js +++ b/Sprint-2/1-key-errors/0.js @@ -1,13 +1,17 @@ // Predict and explain first... -// =============> write your prediction here +// Prediction: The program will throw a SyntaxError because 'str' is declared twice in the same function. // call the function capitalise with a string input // interpret the error message and figure out why an error is occurring function capitalise(str) { - let str = `${str[0].toUpperCase()}${str.slice(1)}`; + str = `${str[0].toUpperCase()}${str.slice(1)}`; return str; } -// =============> write your explanation here +console.log(capitalise("hello")); + +// Explanation: The function parameter is already called 'str'. Declaring another variable with 'let str' inside the same function is not allowed, so JavaScript throws a SyntaxError. + +// Finally, correct the code to fix the problem // =============> write your new code here diff --git a/Sprint-2/1-key-errors/1.js b/Sprint-2/1-key-errors/1.js index f2d56151f..dccf80ea1 100644 --- a/Sprint-2/1-key-errors/1.js +++ b/Sprint-2/1-key-errors/1.js @@ -1,20 +1,19 @@ // Predict and explain first... // Why will an error occur when this program runs? -// =============> write your prediction here +// Prediction: The program will throw a SyntaxError because 'decimalNumber' is declared twice. If that is fixed, it will then throw a ReferenceError because 'decimalNumber' is used outside the function where it is defined. // Try playing computer with the example to work out what is going on function convertToPercentage(decimalNumber) { - const decimalNumber = 0.5; const percentage = `${decimalNumber * 100}%`; return percentage; } -console.log(decimalNumber); +console.log(convertToPercentage(0.5)); -// =============> write your explanation here +// Explanation: The function parameter is already called 'decimalNumber', so declaring 'const decimalNumber' again is not allowed. Also, 'decimalNumber' only exists inside the function, so trying to use it outside the function causes a ReferenceError. // Finally, correct the code to fix the problem // =============> write your new code here diff --git a/Sprint-2/1-key-errors/2.js b/Sprint-2/1-key-errors/2.js index aad57f7cf..0ff1cebe2 100644 --- a/Sprint-2/1-key-errors/2.js +++ b/Sprint-2/1-key-errors/2.js @@ -1,20 +1,20 @@ - // Predict and explain first BEFORE you run any code... // this function should square any number but instead we're going to get an error -// =============> write your prediction of the error here +// Prediction: The program will throw a SyntaxError because function parameters cannot be numbers. They must be valid variable names. -function square(3) { - return num * num; +function square(num) { + return num * num; } -// =============> write the error message here +console.log(square(3)); + +// Error message: +// SyntaxError: Unexpected number -// =============> explain this error message here +// Explanation: The parameter '3' is not a valid parameter name. Function parameters must be variable names so that values can be passed into the function. // Finally, correct the code to fix the problem // =============> write your new code here - - From 522a6deba6de367ace4ab68f42334a7a5e50e5a2 Mon Sep 17 00:00:00 2001 From: Rhoda Ajiroba Date: Sun, 19 Jul 2026 14:27:21 +0100 Subject: [PATCH 4/6] Complete Sprint 2 mandatory debug --- Sprint-2/2-mandatory-debug/0.js | 8 ++++---- Sprint-2/2-mandatory-debug/1.js | 11 ++++++----- Sprint-2/2-mandatory-debug/2.js | 19 ++++++++++++------- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/Sprint-2/2-mandatory-debug/0.js b/Sprint-2/2-mandatory-debug/0.js index b27511b41..4765dcf86 100644 --- a/Sprint-2/2-mandatory-debug/0.js +++ b/Sprint-2/2-mandatory-debug/0.js @@ -1,14 +1,14 @@ // Predict and explain first... -// =============> write your prediction here +// Prediction: The function will print 320, but the final message will show "undefined". function multiply(a, b) { - console.log(a * b); + return a * b; } console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); -// =============> write your explanation here +// Explanation: The original function used console.log() instead of return. console.log() displays the result on the screen but does not return a value, so the function returned undefined. Changing console.log() to return fixes the problem. // Finally, correct the code to fix the problem -// =============> write your new code here +// =============> write your new code here diff --git a/Sprint-2/2-mandatory-debug/1.js b/Sprint-2/2-mandatory-debug/1.js index 37cedfbcf..ddc4c68d0 100644 --- a/Sprint-2/2-mandatory-debug/1.js +++ b/Sprint-2/2-mandatory-debug/1.js @@ -1,13 +1,14 @@ // Predict and explain first... -// =============> write your prediction here + +// Prediction: The function will return undefined because the return statement ends before a + b is executed. function sum(a, b) { - return; - a + b; + return a + b; } console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); -// =============> write your explanation here +// Explanation: In the original code, JavaScript automatically inserts a semicolon after `return` because it is on its own line. This means the function returns undefined immediately, and `a + b` is never executed. + // Finally, correct the code to fix the problem -// =============> write your new code here +// =============> write your new code here diff --git a/Sprint-2/2-mandatory-debug/2.js b/Sprint-2/2-mandatory-debug/2.js index 57d3f5dc3..4f1358888 100644 --- a/Sprint-2/2-mandatory-debug/2.js +++ b/Sprint-2/2-mandatory-debug/2.js @@ -1,11 +1,10 @@ // Predict and explain first... // Predict the output of the following code: -// =============> Write your prediction here +// Prediction: +// The program will print 3 for all three lines because the function always uses the constant 'num', which is 103. -const num = 103; - -function getLastDigit() { +function getLastDigit(num) { return num.toString().slice(-1); } @@ -14,11 +13,17 @@ console.log(`The last digit of 105 is ${getLastDigit(105)}`); console.log(`The last digit of 806 is ${getLastDigit(806)}`); // Now run the code and compare the output to your prediction -// =============> write the output here +// Output: +// The last digit of 42 is 2 +// The last digit of 105 is 5 +// The last digit of 806 is 6 + // Explain why the output is the way it is -// =============> write your explanation here +// Explanation: +// The original function always used the constant 'num' (103), so it always returned 3. By giving the function a parameter called 'num', it now uses the value passed into the function each time it is called. + // Finally, correct the code to fix the problem // =============> write your new code here // This program should tell the user the last digit of each number. -// Explain why getLastDigit is not working properly - correct the problem +// Explain why getLastDigit is not working properly - correct the problem. From 83516b7e7f0917b54a0345f3b15d5b0e93e8fa71 Mon Sep 17 00:00:00 2001 From: Rhoda Ajiroba Date: Sun, 19 Jul 2026 14:56:04 +0100 Subject: [PATCH 5/6] Complete Sprint 2 mandatory implement --- Sprint-2/3-mandatory-implement/1-bmi.js | 4 ++-- Sprint-2/3-mandatory-implement/2-cases.js | 4 ++++ Sprint-2/3-mandatory-implement/3-to-pounds.js | 20 +++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Sprint-2/3-mandatory-implement/1-bmi.js b/Sprint-2/3-mandatory-implement/1-bmi.js index 17b1cbde1..5c721f9cf 100644 --- a/Sprint-2/3-mandatory-implement/1-bmi.js +++ b/Sprint-2/3-mandatory-implement/1-bmi.js @@ -15,5 +15,5 @@ // It should return their Body Mass Index to 1 decimal place function calculateBMI(weight, height) { - // return the BMI of someone based off their weight and height -} \ No newline at end of file + return (weight / (height * height)).toFixed(1); +} diff --git a/Sprint-2/3-mandatory-implement/2-cases.js b/Sprint-2/3-mandatory-implement/2-cases.js index 5b0ef77ad..fef916a39 100644 --- a/Sprint-2/3-mandatory-implement/2-cases.js +++ b/Sprint-2/3-mandatory-implement/2-cases.js @@ -14,3 +14,7 @@ // You will need to come up with an appropriate name for the function // Use the MDN string documentation to help you find a solution // This might help https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase + +function toUpperSnakeCase(text) { + return text.toUpperCase().replaceAll(" ", "_"); +} diff --git a/Sprint-2/3-mandatory-implement/3-to-pounds.js b/Sprint-2/3-mandatory-implement/3-to-pounds.js index 6265a1a70..4e4847d90 100644 --- a/Sprint-2/3-mandatory-implement/3-to-pounds.js +++ b/Sprint-2/3-mandatory-implement/3-to-pounds.js @@ -4,3 +4,23 @@ // You will need to declare a function called toPounds with an appropriately named parameter. // You should call this function a number of times to check it works for different inputs + +function toPounds(penceString) { + const penceStringWithoutTrailingP = penceString.substring( + 0, + penceString.length - 1 + ); + + const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); + + const pounds = paddedPenceNumberString.substring( + 0, + paddedPenceNumberString.length - 2 + ); + + const pence = paddedPenceNumberString + .substring(paddedPenceNumberString.length - 2) + .padEnd(2, "0"); + + return `£${pounds}.${pence}`; +} From 498392dc91916b4b2fef0ed9da2b34ab86553c67 Mon Sep 17 00:00:00 2001 From: Rhoda Ajiroba Date: Sun, 19 Jul 2026 15:00:56 +0100 Subject: [PATCH 6/6] Complete Sprint 2 mandatory interpret --- Sprint-2/4-mandatory-interpret/time-format.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Sprint-2/4-mandatory-interpret/time-format.js b/Sprint-2/4-mandatory-interpret/time-format.js index 17127bc01..b05d84e08 100644 --- a/Sprint-2/4-mandatory-interpret/time-format.js +++ b/Sprint-2/4-mandatory-interpret/time-format.js @@ -21,18 +21,20 @@ function formatTimeDisplay(seconds) { // Questions // a) When formatTimeDisplay is called how many times will pad be called? -// =============> write your answer here +// Answer: 3 times // Call formatTimeDisplay with an input of 61, now answer the following: // b) What is the value assigned to num when pad is called for the first time? -// =============> write your answer here +// Answer: 0 -// c) What is the return value of pad is called for the first time? -// =============> write your answer here +// c) What is the return value of pad when it is called for the first time? +// Answer: "00" -// d) What is the value assigned to num when pad is called for the last time in this program? Explain your answer -// =============> write your answer here +// d) What is the value assigned to num when pad is called for the last time in this program? Explain your answer +// Answer: 1 +// Explanation: The last call to pad is pad(remainingSeconds). When the input is 61 seconds, the remaining seconds are 1. -// e) What is the return value of pad when it is called for the last time in this program? Explain your answer -// =============> write your answer here +// e) What is the return value of pad when it is called for the last time in this program? Explain your answer +// Answer: "01" +// Explanation: The pad function adds a leading zero to numbers with only one digit, so 1 becomes "01".