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 117bcb2b6e..654dcb5c23 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 47561f6175..6c8b24e69a 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 ab90ebb28e..cca4eeeccc 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 292f83aabb..984b2a07a9 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 cf6c5039f7..044add7ac1 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 7a43cbea76..031839b47d 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 e09b89831d..2865eb8a42 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 ec101884db..c7f62a8a7a 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 5f86c730bc..f3637b3f31 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 e24ecb8e18..5de10319e5 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 47d2395587..33db17f032 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 60c9ace69a..1f6e88d1f4 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 653d6f5a07..b34f3782fa 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 f2d56151f4..dccf80ea1a 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 aad57f7cfe..0ff1cebe2b 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 b27511b417..4765dcf86b 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 37cedfbcfd..ddc4c68d0b 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 57d3f5dc35..4f13588887 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 17b1cbde1b..5c721f9cf0 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 5b0ef77ad9..fef916a392 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 6265a1a703..4e4847d90b 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 17127bc01e..b05d84e08b 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".