Skip to content
Open
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
458e155
1-count.js updated template
Fithi-Teklom Oct 15, 2025
4302f25
updated 2-initials.js template
Fithi-Teklom Oct 15, 2025
4ee2dff
updated 4.js template
Fithi-Teklom Oct 15, 2025
4b28f8f
updated 0.js
Fithi-Teklom Oct 15, 2025
c389da7
1.js updated template
Fithi-Teklom Oct 15, 2025
f6f3ec3
0.js updated template
Fithi-Teklom Oct 15, 2025
1bcca0f
2.js updated
Fithi-Teklom Oct 15, 2025
f4ea485
3.js updated
Fithi-Teklom Oct 15, 2025
c77af58
4.js updated
Fithi-Teklom Oct 15, 2025
de39b05
updated PR
Fithi-Teklom Oct 15, 2025
246a80c
updated js template
Fithi-Teklom Oct 15, 2025
1bbe9ed
updated PR template
Fithi-Teklom Oct 20, 2025
5dfb91e
updated 0.js template
Fithi-Teklom Oct 30, 2025
b3ada23
updated 1.js PR template
Fithi-Teklom Oct 30, 2025
6a28411
updated 2.js template
Fithi-Teklom Oct 30, 2025
ca2b713
0.js updated template
Fithi-Teklom Oct 30, 2025
468a49f
1.js updated pr template
Fithi-Teklom Oct 30, 2025
97592ac
2.js updated
Fithi-Teklom Oct 30, 2025
61b4f71
1-bms.js updated
Fithi-Teklom Oct 30, 2025
302855c
2-cases.js updated
Fithi-Teklom Oct 30, 2025
78694da
3-to-pounds.js updated
Fithi-Teklom Oct 30, 2025
95da651
time-format.js updated
Fithi-Teklom Oct 30, 2025
b00b826
5.format-time.js updated
Fithi-Teklom Oct 30, 2025
c6a1e91
Delete Sprint-1/1-key-exercises/2-initials.js
Fithi-Teklom Nov 6, 2025
fac10ba
Delete Sprint-1/1-key-exercises/1-count.js
Fithi-Teklom Nov 6, 2025
2302edc
0.js updated
Fithi-Teklom Nov 10, 2025
addadec
Merge branch 'acoursework/sprint-2' of https://github.com/Fithi-Teklo…
Fithi-Teklom Nov 10, 2025
5dc0b96
1.js updated
Fithi-Teklom Nov 10, 2025
86131fe
removed padEnd(2, 0) because it is doing nothing
Fithi-Teklom Nov 16, 2025
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
6 changes: 0 additions & 6 deletions Sprint-1/1-key-exercises/1-count.js

This file was deleted.

11 changes: 0 additions & 11 deletions Sprint-1/1-key-exercises/2-initials.js

This file was deleted.

9 changes: 7 additions & 2 deletions Sprint-1/1-key-exercises/3-paths.js

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great for fulfilling the requirement, but if the file path doesn't end with .txt but instead is /Users/mitch/cyf/Module-JS1/week-1/interpret/file, will const ext return a blank value?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No const ext won't return a blank value. It will incorrectly return the entire filename.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, so it can be changed to return a blank value. This is because no filename extension was provided.

Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,12 @@ 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 lastDotIndex = base.lastIndexOf(".");
const ext = base.slice(lastDotIndex + 1);

console.log("Directory path:", dir);
console.log("File path:", base);
console.log("File extension:", ext);

// https://www.google.com/search?q=slice+mdn
13 changes: 9 additions & 4 deletions Sprint-1/1-key-exercises/4-random.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,12 @@ 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
console.log(num);

// num is a random integer between minimum and maximum, including both endpoints.
// Math.random generates random decimal numbers between 0 and 1.
// Math.floor() rounds a number down to the nearest integer.Example 12.8 is rounded to 12.
//(maximum - minimum + 1)= (100 - 1 + 1)= 100.... So the expression becomes (Math.random()*100)
//In the output I can see random numbers between 1 and 100.


5 changes: 3 additions & 2 deletions Sprint-1/2-mandatory-errors/0.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
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?
//we can simply comment it out by adding two slashes(//) at the begining of line 1 and line 2.
4 changes: 3 additions & 1 deletion Sprint-1/2-mandatory-errors/1.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
// trying to create an age variable and then reassign the value by 1

const age = 33;
let age = 33;
age = age + 1;
//let allows the variable to be reassigned later.
//const is only for values that should never change.
4 changes: 3 additions & 1 deletion Sprint-1/2-mandatory-errors/2.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
// 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}`);

//declaration and initialization comes first always.
13 changes: 6 additions & 7 deletions Sprint-1/2-mandatory-errors/3.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
const cardNumber = 4533787178994213;
const last4Digits = cardNumber.slice(-4);
const last4Digits = 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
// 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
console.log(last4Digits);

//I predicted the error which is type error. cardNumber is a number not a string.
//.slice() only works on strings (or arrays).
//Numbers in JavaScript do not have a slice method.
4 changes: 2 additions & 2 deletions Sprint-1/2-mandatory-errors/4.js

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are the two times reversed?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ow my bad yes they are.

Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
const 12HourClockTime = "20:53";
const 24hourClockTime = "08:53";
const Hour12ClockTime = "20:53";
const hour24ClockTime = "08:53";
11 changes: 10 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,20 @@ 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
// There are 5 function calls. Number(), carPrice.replaceAll(),priceAfterOneYear.replaceAll(), console.log(),Number().

// 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 at line 5. It is a Syntax error. A comma is expected in between the two strings.By adding , in between the stings.

// c) Identify all the lines that are variable reassignment statements
//carPrice = Number(carPrice.replaceAll(",", ""));
//priceAfterOneYear = Number(priceAfterOneYear.replaceAll("," ,""));

// d) Identify all the lines that are variable declarations
//let carPrice = "10,000";
//let priceAfterOneYear = "8,543";
//const priceDifference = carPrice - priceAfterOneYear;
//const percentageChange = (priceDifference / carPrice) * 100;

// e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression?
// It replaces the number to a clean string.
7 changes: 7 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,21 @@ 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.

// 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
//Remainder assignment. Which means when 8784 seconds is divided by 60 it gives 146 with a remainder of 24.

// d) Interpret line 4, what does the expression assigned to totalMinutes mean?
//movieLength - remainingSeconds removes the leftover seconds that don’t make up a full minute.
//Dividing that by 60 converts the remaining seconds into whole minutes.

// e) What do you think the variable result represents? Can you think of a better name for this variable?
//It represents movie duration. A better name can be formattedMovie.

// f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer
// Mostly yes, but not good for fractional values, negative numbers and numbers less than 0, the leading 0 may not be displayed.
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"
//3-6.substring(start, end) extracts characters from index start up to (but not including) end. Here we use penceString.length - 1 so we take every character except the final one — removing the trailing "p".
//8. padStart(targetLength, padString) ensures the string has at least targetLength characters by adding padString at the start if needed. We padStart(3, "0") to guarantee the numeric string is at least 3 characters long so the later slicing (split into pounds and pence) works consistently for very small amounts (e.g. "5p" → "005").
//9.This extracts everything before the last two characters of paddedPenceNumberString. Those final two characters represent pence, so everything before them is the pounds portion. Using .substring(0, length - 2) is a simple way to split the numeric string into pounds and pence.
//14. .substring(paddedPenceNumberString.length - 2) with a single argument returns the substring from that start index to the end — i.e., the last two characters — which are the pence.
//.padEnd(2, "0") ensures the pence string has exactly 2 characters, padding on the right if somehow it’s shorter (defensive programming). In normal flows the substring already returns 2 characters because we earlier padStart(3, "0").
//18. console.log(`£${pounds}.${pence}`) prints the formatted price: the pound sign, the pounds portion, a dot, then the two-digit pence string.
6 changes: 4 additions & 2 deletions Sprint-1/4-stretch-explore/chrome.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ In the Chrome console,
invoke the function `alert` with an input string of `"Hello world!"`;

What effect does calling the `alert` function have?

Now try invoking the function `prompt` with a string input of `"What is your name?"` - store the return value of your call to `prompt` in an variable called `myName`.
//A message that says Hello World pops up on the top of the page.

What effect does calling the `prompt` function have?
//A message saying what is your name with a box to write your name in pops up.

What is the return value of `prompt`?
//A message saying my name is with a box to write your name in pops up on the top of the page.
6 changes: 6 additions & 0 deletions Sprint-1/4-stretch-explore/objects.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,18 @@ In this activity, we'll explore some additional concepts that you'll encounter i
Open the Chrome devtools Console, type in `console.log` and then hit enter

What output do you get?
// The 'console.log' as it is appears but with a single qoute.


Now enter just `console` in the Console, what output do you get back?
// 'console' is the output.

Try also entering `typeof console`
//'typeof console' is the output backticks are changed to single quotes.

Answer the following questions:

What does `console` store?
// console stores a collection of functions to output.
What does the syntax `console.log` or `console.assert` mean? In particular, what does the `.` mean?
// `.` means that read what is inside as a string not as a function. So instead of expecting an output from `console.log` we expect it to be executed as it is as a string.
8 changes: 6 additions & 2 deletions Sprint-2/1-key-errors/0.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Predict and explain first...
// =============> write your prediction here
// I think str is already declared even though it is a parameter.

// call the function capitalise with a string input
// interpret the error message and figure out why an error is occurring
Expand All @@ -9,5 +9,9 @@ function capitalise(str) {
return str;
}

// =============> write your explanation here
// The error is a syntax error at line 8 in which as I have predicted. 'str' was already declared.
// =============> write your new code here
function capitalize(str) {
let capitalized = `${str[0].toUpperCase()}${str.slice(1)}`;
return capitalized;
}
11 changes: 9 additions & 2 deletions Sprint-2/1-key-errors/1.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

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

// I guess decimalNumber is declared already so an error will be thrown.
// Try playing computer with the example to work out what is going on

function convertToPercentage(decimalNumber) {
Expand All @@ -15,6 +15,13 @@ function convertToPercentage(decimalNumber) {
console.log(decimalNumber);

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

// It is the same as i have predicted decimalNumber has already declared. And also there will be a reference error decimalNumber is logged outside the function.
// 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));

9 changes: 8 additions & 1 deletion Sprint-2/1-key-errors/2.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,24 @@
// this function should square any number but instead we're going to get an error

// =============> write your prediction of the error here
// I guess an error will be thrown because a number can not be a parameter.

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

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

// =============> explain this error message here
// It does not know where the 3 came from. So instead of 3 it was supposed to be num.return num * num; does not work because num is not in the parameter.

// Finally, correct the code to fix the problem

// =============> write your new code here
function square(num) {
return num * num;
}

console.log(square(3));


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

// =============> write your prediction here
// I predict there will be error because instead of console.log we should have used return.

function multiply(a, b) {
console.log(a * b);
Expand All @@ -9,6 +10,12 @@ function multiply(a, b) {
console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`);

// =============> write your explanation here
// The same as I predicted.

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

console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`);
9 changes: 8 additions & 1 deletion Sprint-2/2-mandatory-debug/1.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Predict and explain first...
// =============> write your prediction here
// there will be an error because return should not have semicolon which is the end of the declaration and a+b should be with it together.

function sum(a, b) {
return;
Expand All @@ -9,5 +10,11 @@ function sum(a, b) {
console.log(`The sum of 10 and 32 is ${sum(10, 32)}`);

// =============> write your explanation here
// it is undefined because it stopped reading at return;
// Finally, correct the code to fix the problem
// =============> write your new code here
// =============> write your new code here.
function sum(a, b) {
return a + b;
}

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

// Predict the output of the following code:
// =============> Write your prediction here
// I guess line 7 should have written after line 11. and the num should have been a parameter.

const num = 103;

Expand All @@ -15,10 +16,21 @@ 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
//every call returned "3" (the last digit of 103) instead of the number I pass because the const num was unnecessary if we wanted the function to work for any call.
// =============> write your explanation here
// 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
6 changes: 4 additions & 2 deletions Sprint-2/3-mandatory-implement/1-bmi.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,7 @@
// 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
}
const bmi = weight / (height * height); // Step 1: calculate BMI
return bmi.toFixed(1);
}
console.log(calculateBMI(70, 1.73));
10 changes: 10 additions & 0 deletions Sprint-2/3-mandatory-implement/2-cases.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@
// it returns the string in UPPER_SNAKE_CASE, so "HELLO_THERE"

// Another example: "lord of the rings" should be "LORD_OF_THE_RINGS"
function toUpperSnakeCase(str) {

const withUnderscores = str.replace(/ /g, "_");

const upperSnake = withUnderscores.toUpperCase();

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

// You will need to come up with an appropriate name for the function
// Use the MDN string documentation to help you find a solution
Expand Down
22 changes: 22 additions & 0 deletions Sprint-2/3-mandatory-implement/3-to-pounds.js

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove .padEnd(2, "0")
Will it affect the code?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing .padEnd(2, "0") won't break the logic may change the output formatting in certain cases.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • but may change the output formatting in certain cases.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And the important thing is that variables don't start with number.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • but may change the output formatting in certain cases.

Could you give an example that might have an impact?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahh, removing .padEnd(2, "0") will not change the output for valid inputs, because paddedPenceNumberString is already guaranteed to be at least 3 characters long from .padStart(3, "0").

Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,25 @@
// 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}`;
}
console.log(toPounds("399p"));
console.log(toPounds("5p"));
Loading