Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
a5f11ec
complete 1-count exercise
khalidbih Feb 18, 2026
321c1d2
complete 2-initials exercise
khalidbih Feb 18, 2026
64ab32e
complete 3-path exercise
khalidbih Feb 18, 2026
622028f
complete 4-random exercise
khalidbih Feb 20, 2026
f76840d
complete 0.js exercise
khalidbih Feb 20, 2026
cbbe383
complete 1.js exercise
khalidbih Feb 20, 2026
e3ae3a8
Fix error caused by using const before declaration
khalidbih Feb 20, 2026
974f8af
Fix last4Digits, convert number to string before slicing
khalidbih Feb 21, 2026
e33cbfd
Fix 12-hour and 24-hour clock values
khalidbih Feb 21, 2026
da1bcac
Convert price strings to numbers for calculation
khalidbih Feb 24, 2026
885713a
complete exercise time format
khalidbih Feb 24, 2026
7d36f59
Format pence string into pounds and pence output
khalidbih Feb 24, 2026
56c1ae7
remove duplicate variable declaration in capitalise function
khalidbih Feb 26, 2026
68d57ce
correct convertToPercentage function
khalidbih Feb 26, 2026
508504c
correct square function parameter
khalidbih Feb 26, 2026
42ce6cb
fix multiply function to return result
khalidbih Feb 26, 2026
8486d54
fix sum function to return correct value
khalidbih Feb 26, 2026
ddee225
fix getLastDigit function to use parameter
khalidbih Feb 27, 2026
6050f8e
Implement BMI formula and round result to 1 decimal place
khalidbih Mar 2, 2026
0ee89c8
Add toUpperSnakeCase function using replaceAll and toUpperCase
khalidbih Mar 2, 2026
f50de6d
Add toPounds function to convert pence string to formatted pounds
khalidbih Mar 2, 2026
42fe3fc
Answer questions on formatTimeDisplay and pad function
khalidbih Mar 2, 2026
8aef116
Merge branch 'main' into sprint-2-redo-26
khalidbih Mar 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Sprint-1/1-key-exercises/1-count.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@ 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 updates the variable count, It takes the value on the right (count + 1, which is 0 + 1 = 1),
// and stores it back into `count` using the = assignment operator.

5 changes: 4 additions & 1 deletion Sprint-1/1-key-exercises/2-initials.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ 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]);
console.log (initials);



// https://www.google.com/search?q=get+first+character+of+string+mdn

4 changes: 2 additions & 2 deletions Sprint-1/1-key-exercises/3-paths.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 = base.slice(base.lastIndexOf("."));

// https://www.google.com/search?q=slice+mdn
4 changes: 4 additions & 0 deletions Sprint-1/1-key-exercises/4-random.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ 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?
// num is a randomly generated whole number in the interval [1, 100], meaning it can be any number from 1 to 100. It is created by generating a random decimal,
// rounding it down, and shifting it to start at 1.
// 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
// When I ran the program several times, num always produced a different whole number between 1 and 100,
// This shows that the program generates a new random number each time it runs.
4 changes: 2 additions & 2 deletions Sprint-1/2-mandatory-errors/0.js
Original file line number Diff line number Diff line change
@@ -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?
//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?
3 changes: 2 additions & 1 deletion Sprint-1/2-mandatory-errors/1.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// trying to create an age variable and then reassign the value by 1

const age = 33;
let age = 33;
age = age + 1;
console.log(age)
5 changes: 3 additions & 2 deletions Sprint-1/2-mandatory-errors/2.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// 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}`);
// The error happens because cityOfBirth is used before it is declared,
// Variables declared with const cannot be accessed before their declaration.
const cityOfBirth = "Bolton";
console.log(`I was born in ${cityOfBirth}`);
6 changes: 5 additions & 1 deletion Sprint-1/2-mandatory-errors/3.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
const cardNumber = 4533787178994213;
const last4Digits = cardNumber.slice(-4);
const last4Digits = cardNumber.toString().slice(-4);
console.log(last4Digits);
console.log(cardNumber.toString().slice(-4));

// The last4Digits variable should store the last 4 digits of cardNumber
// However, the code isn't working
// Before running the code, make and explain a prediction about why the code won't work
// the code won’t work because cardNumber is a number, and .slice() only works on strings or arrays.
// Then run the code and see what error it gives.
// Consider: Why does it give this error? Is this what I predicted? If not, what's different?
// Then try updating the expression last4Digits is assigned to, in order to get the correct value
// Convert cardNumber to a string first, then use .slice(-4) to get the last 4 digits
4 changes: 2 additions & 2 deletions Sprint-1/2-mandatory-errors/4.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
const 12HourClockTime = "20:53";
const 24hourClockTime = "08:53";
const time24h = "20:53";
const time12h = "08:53";
7 changes: 6 additions & 1 deletion Sprint-1/3-mandatory-interpret/1-percentage-change.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -12,11 +12,16 @@ console.log(`The percentage change is ${percentageChange}`);
// Read the code and then answer the questions below

// a) How many function calls are there in this file? Write down all the lines where a function call is made
// 5 functions, lines are 4-5-10.

// b) Run the code and identify the line where the error is coming from - why is this error occurring? How can you fix this problem?
// the error is coming from line 5, because there wasn't a comma between argument in replaceAll(",", "")).

// c) Identify all the lines that are variable reassignment statements
// the lines that variable reassignment statements are 4 and 5.

// d) Identify all the lines that are variable declarations
// The variable declaration lines are 1-2-7-8

// e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression?
// Converts the string "10,000" into the number 10000 by removing commas so math can be done.
6 changes: 6 additions & 0 deletions Sprint-1/3-mandatory-interpret/2-time-format.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,20 @@ 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?
// there are 6 declarations lines 1-3-4-6-7 and 9.

// b) How many function calls are there?
// 1 function call.

// c) Using documentation, explain what the expression movieLength % 60 represents
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators
// it gives the number of seconds left after counting all full minutes.

// d) Interpret line 4, what does the expression assigned to totalMinutes mean?
// the total number of complete minutes in the movie.

// e) What do you think the variable result represents? Can you think of a better name for this variable?
// represents the hours,minutes,seconds of the movie.better name for the variable can be (movieTime).

// f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer
// The code won’t work for all values of movieLength. If it’s negative, the result doesn’t make sense because time cannot be negative.
6 changes: 6 additions & 0 deletions Sprint-1/3-mandatory-interpret/3-to-pounds.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,9 @@ console.log(`£${pounds}.${pence}`);

// To begin, we can start with
// 1. const penceString = "399p": initialises a string variable with the value "399p"
// 2. line (3) it returns a substring from the given string, it takes penceString and returns the substring that start with index 0 ends one character before the end we have 399p it returns 399.
// 3. line (8) We now have the string "399", which has 3 characters. This ensures we can split it into pounds and pence correctly.
// 4. line (9) We have a start and an end index. We start at 0 and end two characters before the string’s end, because the last two characters represent the pence. This gives us the pounds part.
// 5. line (14) This takes the last two characters of the string, which represent the pence portion of the price.it also Extracts the pence digits safely and makes sure it’s always two digits, even if the original number was small.
// 6. line (18) This prints the final price to the console in pounds and pence, using the pounds and pence variables to show it like £3.99.

17 changes: 13 additions & 4 deletions Sprint-2/1-key-errors/0.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,22 @@
// Predict and explain first...
// =============> write your prediction here
// It will give an error because the variable `str`, is declared twice inside the same function,
// It is already a parameter, and then it is redeclared using `let`.

// 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)}`;
return str;
}
//function capitalise(str) {
// let str = `${str[0].toUpperCase()}${str.slice(1)}`;
// return str;
// }

// =============> write your explanation here
// The error happens because 'str' is written two times, first, it is the function parameter.
// Then, it is declared again using 'let', javaScript does not allow declaring the same variable twice, inside the same function.
// =============> write your new code here

function capitalise(str) {
return `${str[0].toUpperCase()}${str.slice(1)}`;
}
console.log(capitalise("Code"));
25 changes: 16 additions & 9 deletions Sprint-2/1-key-errors/1.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,27 @@
// Predict and explain first...
// The code will give an error because `decimalNumber` is declared twice,
// once as the function parameter, and again with `const` inside the function.

// Why will an error occur when this program runs?
// =============> write your prediction here

// The error occurs because `decimalNumber` has already been declared.
// 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;
}
// function convertToPercentage(decimalNumber) {
// const decimalNumber = 0.5;
// const percentage = `${decimalNumber * 100}%`;

console.log(decimalNumber);
// return percentage;
// }
// console.log(decimalNumber);

// =============> write your explanation here

// When I run the code, it gives a SyntaxError saying that, `decimalNumber` has already been declared.
// Finally, correct the code to fix the problem
// =============> write your new code here

function convertToPercentage(decimalNumber){
const percentage = `${decimalNumber * 100}%`;
return percentage
}
console.log(convertToPercentage(0.5));
17 changes: 13 additions & 4 deletions Sprint-2/1-key-errors/2.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,29 @@

// Predict and explain first BEFORE you run any code...
// Function parameters must be variables, not numbers.

// this function should square any number but instead we're going to get an error

// =============> write your prediction of the error here
// The code will give a SyntaxError because `3` is not a valid parameter name.

function square(3) {
return num * num;
}
//function square(3) {
// return num * num;
// }

// =============> write the error message here
// SyntaxError: Unexpected number

// =============> explain this error message here

// The error happens because `3` is used as a parameter name.
// Parameters must be variable names, not numbers.
// Finally, correct the code to fix the problem

// =============> write your new code here

function square(number) {
return number * number;
}
console.log(square(3));


16 changes: 12 additions & 4 deletions Sprint-2/2-mandatory-debug/0.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
// Predict and explain first...

// =============> write your prediction here
// When multiply(10, 32) runs, it prints 320, But the function does not return anything.

function multiply(a, b) {
console.log(a * b);
}

console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`);
// function multiply(a, b) {
// console.log(a * b);
// }

// console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`);

// =============> write your explanation here
// multiply prints the result but does not return anything, so using it in a template string shows undefined.

// Finally, correct the code to fix the problem
// =============> write your new code here
function multiply(a, b) {
return (a * b)
}

console.log(multiply(10, 32));
18 changes: 13 additions & 5 deletions Sprint-2/2-mandatory-debug/1.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
// Predict and explain first...
// =============> write your prediction here
// The function sum does not return anything,
// so the console will show "The sum of 10 and 32 is undefined".

function sum(a, b) {
return;
a + b;
}
// function sum(a, b) {
// return
// a + b;
// }

console.log(`The sum of 10 and 32 is ${sum(10, 32)}`);
// console.log(`The sum of 10 and 32 is ${sum(10, 32)}`);

// =============> write your explanation here
// Finally, correct the code to fix the problem
// =============> write your new code here

function sum(a, b) {
return (a+b);
}

console.log(`The sum of 10 and 32 is ${sum(10, 32)}`);
36 changes: 28 additions & 8 deletions Sprint-2/2-mandatory-debug/2.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,43 @@

// Predict the output of the following code:
// =============> Write your prediction here
// The output will always be 3.This is because the function uses the variable `num`,
// which is set to 103.
// const num = 103;

const num = 103;
// function getLastDigit() {
// return num.toString().slice(-1);
// }

function getLastDigit() {
return num.toString().slice(-1);
}

console.log(`The last digit of 42 is ${getLastDigit(42)}`);
console.log(`The last digit of 105 is ${getLastDigit(105)}`);
console.log(`The last digit of 806 is ${getLastDigit(806)}`);
// console.log(`The last digit of 42 is ${getLastDigit(42)}`);
// 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

// The last digit of 42 is 3
// The last digit of 105 is 3
// The last digit of 806 is 3

// Explain why the output is the way it is
// =============> write your explanation here

// The output is always 3 because the function uses `num` (103),and ignores the number passed into it.
// Finally, correct the code to fix the problem

// =============> write your new code here

function getLastDigit(num) {
return num.toString().slice(-1);
}

console.log(`The last digit of 42 is ${getLastDigit(42)}`);
console.log(`The last digit of 105 is ${getLastDigit(105)}`);
console.log(`The last digit of 806 is ${getLastDigit(806)}`);



// This program should tell the user the last digit of each number.
// Explain why getLastDigit is not working properly - correct the problem
// We must pass the number into the function as a parameter.
7 changes: 6 additions & 1 deletion Sprint-2/3-mandatory-implement/1-bmi.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,10 @@
// It should return their Body Mass Index to 1 decimal place

function calculateBMI(weight, height) {
const bmi = weight / (height * height);
const roundedBMI = Math.round(bmi * 10) / 10;
return roundedBMI;

}
console.log(calculateBMI(70, 1.73));
// return the BMI of someone based off their weight and height
}
9 changes: 9 additions & 0 deletions Sprint-2/3-mandatory-implement/2-cases.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,12 @@
// 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(inputString) {
return inputString.replaceAll(" ", "_").toUpperCase();


}
console.log(toUpperSnakeCase("hello there"));
console.log (toUpperSnakeCase("lord of the rings"));
Loading
Loading