Skip to content

Js1 week4 update lesson plan #200

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

bhas
Copy link

@bhas bhas commented Mar 5, 2025

Summary

This PR updates the lesson material for Javascript 1 - week 4. The goal for this week is to have the trainees do a lot of exercises to hammer in the fundamentals taught in the previous weeks. 💯

It is easiest to go over the readme and the subpages here:
https://github.com/bhas/JavaScript-v2/blob/js1-week4-update/javascript1/week4/readme.md

Changes made:

  • Updated lesson plan
  • Added small section on Soft skills to the learning material and preparations
  • Added a lot of new exercises

What I like your opinion on:

  • Are the exercises of fitting difficulty level and easy to understand?
  • Do you agree on the structure and material?
  • Do you have any ideas on how the trainees can have the trainees train their soft skills using the exercises and material?
    • Problem solving
    • Communication & Collaboration
    • Continuous Learning & Adaptability

Challenges identified from previous teachings

  • Some trainees spend all their time doing ALL the warm-up exercises
  • trainees never tried to explain their learning to a mentor despite being an explicitly part of the exercise
  • Some trainees were struggling with the exercises but did not reach out for help

Copy link
Author

Choose a reason for hiding this comment

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

I think these exercises might be way too hard. What do you think?

Copy link
Contributor

Choose a reason for hiding this comment

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

I don't find them too hard at all. For a student that wants to advance, this should be an appropriate challenge!

Copy link
Author

Choose a reason for hiding this comment

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

Good, then we just have to make sure the students challenge themselves and don't just stay in the shallow end of the pool.

Comment on lines +24 to +31
* 🧱 **Implement New Code**
* **Goal**: Design, implement, and test a solution from scratch, ensuring it meets requirements and functions correctly.
* 🔎 **Troubleshoot Issues**
* **Goal**: Efficiently identify and resolve errors in code without introducing new issues.
* ✨ **Review Existing Code**
* **Goal**: Read and understand code that does not follow your own style, identify potential improvements, and refactor it without introducing unintended side effects.
* 🎓 **Learn New Concepts and Technologies**
* **Goal**: Independently learn and understand new concepts and technologies, and effectively communicate your knowledge to others.
Copy link
Author

Choose a reason for hiding this comment

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

Do you agree on these categories?

Do the icons make sense or would it be better to just remove?

Copy link
Contributor

Choose a reason for hiding this comment

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

very nice, and good to visually classify with icons. 👍🏽

Comment on lines +30 to +31
* 🎓 **Learn New Concepts and Technologies**
* **Goal**: Independently learn and understand new concepts and technologies, and effectively communicate your knowledge to others.
Copy link
Author

Choose a reason for hiding this comment

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

How can we better encourage trainees to "teach" the mentors what they learned, to train their communication skills.

Copy link
Contributor

Choose a reason for hiding this comment

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

I'm thinking how people use these skills in a real job... some starting ideas:

  • Communicating tasks, problems and questions to someone they are pairing with on their team
  • Making a presentation to talk through a new feature
  • Sharing a quick learning during stand up
  • Explaining changes in a pull request description

Maybe we can use these kinda real job situations to inspire how we can do it in our exercises.

Copy link
Author

Choose a reason for hiding this comment

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

I like these ideas. How do you see that we best integrate them in our sessions @adamblanchard ?

  • having the trainees do presentations could be great.
    • Presentations can take significant time from the session which is often times already tightly packed
    • it seems most trainees are quite shy. How do we best push them without making them overly uncomfortable?

Copy link
Contributor

Choose a reason for hiding this comment

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

It feels easiest for me to think of them as threads throughout the whole program (maybe making this discussion a little bigger/out of scope of this PR in itself).

Example, with the presentations:

  1. Higlighting one key learning at the end of each session (quick fire, in a circle?)
  2. "Presenting" your solution to a mentor in the session (1on1)
  3. Explaining your changes (including why, learnings, challenges etc.) in every PR (should add a template for this)
  4. A couple of trainees giving a summary of their assignment (and what they learned during review) at the start of a session
  5. Presentation at the end of every project (try it recorded and in person)
  6. Mock technical interviews (talking through their code 1on1, with lots of questions and "what ifs").

That way we can "quickly" integrate practicing this skill which doesn't take much time away from the session, and shy people can slowly build up to the bigger experiences (like project presentations, which we would need to prioritise time for!).

I think my answer is still a little idealistic, I'm not suggesting anything specifically for this PR. Just answering your initial question :D

* Solve 2 [warm-up exercises](./exercises/level0.md) to get started! 💪 You decide which.
* Solve 3 [regular exercises](./exercises/level1.md). 👩‍💻 You decide which.
* Solve 1 or more [hard exercises](./exercises/level2.md). 🥇 You decide which.
* **Bonus:** Solve 1 or more [very hard exercises](./exercises/level3.md).
Copy link
Author

Choose a reason for hiding this comment

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

I fear this is way too hard. What do you think?

Comment on lines +15 to +19
Goal for today:
* Solve 2 [warm-up exercises](./exercises/level0.md) to get started! 💪 You decide which.
* Solve 3 [regular exercises](./exercises/level1.md). 👩‍💻 You decide which.
* Solve 1 or more [hard exercises](./exercises/level2.md). 🥇 You decide which.
* **Bonus:** Solve 1 or more [very hard exercises](./exercises/level3.md).
Copy link
Author

Choose a reason for hiding this comment

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

I added explicit goals to encourage trainees to move on to harder levels rather than solving all the warm up exercises top-to-bottom

## Finishing class exercises

Finish the exercises from the class!

## Codewars
Copy link
Author

Choose a reason for hiding this comment

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

Do we want to have code wars as a part of the home work? If so, we should probably tell them how to hand it in. I don't think they can share their account with their solutions.

Copy link
Contributor

Choose a reason for hiding this comment

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

I think it's good to encourage them to get on there. For those that will continue, it's fun and gamified and marketable in job search.

Copy link
Contributor

Choose a reason for hiding this comment

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

As a trainee, after having done many exercises in class and also having homework to do, I don't know how much importance I would give to these katas (which are also basic compared to some of the exercises).

I agree that these platforms are engaging for learning, but I don't see much value in this lesson.

Copy link
Contributor

Choose a reason for hiding this comment

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

I think it is a personal preference.
The katas are definitely not basic, if you continue and choose the harder ones.
I used it as proof of practice in job search and got asked about it several times - because I had an impressive score at that time.

Copy link
Contributor

Choose a reason for hiding this comment

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

I learned about CodeWars from HYF, and really like them. They introduce trainees early to tests, how to read tasks and execute on. Upon completion, they can learn by seeing the community voted best solutions.

However, there are also a few downsides:

  • They already have another homework
  • No haven't had very clear communication on how should they submit those
  • Often I've seen committed code for CodeWars which is actually using other variable and function names and does not complete the requirement
  • The majority of the trainees, especially those who lag behind, skip them altogether

If it was up to me to draft a decision, I'd either make them required or would completely remove them from the home assignments.

Comment on lines -12 to -14
## Finishing class exercises

Finish the exercises from the class!
Copy link
Author

@bhas bhas Mar 5, 2025

Choose a reason for hiding this comment

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

I don't think the homework should depend on the class exercises. Different mentors might use their own lesson plan and exercises.

Copy link
Contributor

@shpomp shpomp left a comment

Choose a reason for hiding this comment

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

I think I see levels 1-4 and then level 10. Is that intentional?
Although it could be I'm finding it hard to see on phone.

Copy link
Contributor

@marcorichetta marcorichetta left a comment

Choose a reason for hiding this comment

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

This is great Bjørn, thanks for the effort!

Comment on lines +20 to +25
#### Why Denmark Values Soft Skills Highly
- **Flat Organizational Structures**: Danish companies often have a flat structure, where developers are expected to take responsibility, communicate openly, and work closely with colleagues and managers.
- **Agile Methodologies**: Many Danish tech companies follow Scrum and other agile methodologies, where teamwork and communication are key to success.
- **Ownership and Participation**: Developers in Denmark are expected to take ownership of their tasks and actively participate in decision-making processes.
- **Consensus Culture**: Denmark has a strong consensus culture, meaning that decisions are often made through discussion and mutual agreement. This requires good communication skills, collaboration, and the ability to consider different perspectives.

Copy link
Contributor

Choose a reason for hiding this comment

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

It'd be nice to add some links on this topics. I've read about it on forums but maybe there are some more "official" ones.

Copy link
Contributor

Choose a reason for hiding this comment

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

+1, a link or two to describe each of these in more detail would be nice for more context. It might be the first time people hear about e.g. consensus culture or agile/scrum.

@@ -1,65 +1,35 @@
# Lesson plan
```
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there a reason this is formatted as code? It could be normal text, taking advantage of lists, better format, etc

## Finishing class exercises

Finish the exercises from the class!

## Codewars
Copy link
Contributor

Choose a reason for hiding this comment

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

As a trainee, after having done many exercises in class and also having homework to do, I don't know how much importance I would give to these katas (which are also basic compared to some of the exercises).

I agree that these platforms are engaging for learning, but I don't see much value in this lesson.

Copy link
Contributor

@adamblanchard adamblanchard left a comment

Choose a reason for hiding this comment

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

I think it's a better idea to update lesson-plan.md with the new content instead of creating a new additional lesson.md.

Then we keep the module structure consistent, and all change history can be seen in one file. In that case, it's fine to remove the "old material" in there since we can find it again if we need to in git history.

If we have no real intention to use that old material, let's keep it tidy :D

Copy link
Contributor

@jason-vasilev jason-vasilev left a comment

Choose a reason for hiding this comment

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

Comments mostly about spelling and language improvements. In that sense, installing Code Spell Checker can catch some of them quickly.

`"John, Age: 20, Average Grade: 85"`
* Use this function to display details for all students in the students array.
6. **Add Grades Dynamically**
* Modify the `createStudent` function to also include a method `addGrade(newGrade)` inside the student object, allowing new grades to be added dynamically. Use this function to add a grade to a student after it is created.
Copy link
Contributor

Choose a reason for hiding this comment

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

Some of the trainees from team 31 were a bit confused about how to solve this step. Do you think we can improve on the description? Is the function nested and called only inside createStudent?

* Modify the `createStudent` function to also include a method `addGrade(newGrade)` inside the student object, allowing new grades to be added dynamically. Use this function to add a grade to a student after it is created.

Now help us answer these questions for the below students:
* What is the average grade of Frank?
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
* What is the average grade of Frank?
* What is the average grade of Henry?

Unless this is a trick question and you want the result to be undefined.


## ✨ 1.3 Review the behaviour of JS
Your niece found this script on the internet and is asking how it works.
1. Guess the output
Copy link
Contributor

Choose a reason for hiding this comment

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

Lets communicate better that they need to grab a hold of another team member or mentor to complete this.

Suggested change
1. Guess the output
1. Grab hold of your neighbor by seat or mentor and explain what you think the output is



## 🔎 1.4 Troubleshoot issue with grades
Below is a piece of code that is supposed to process a list of students and their grades, and return the average grade for the class. The calculation should ignore any invalid grades (negative numbers or non-numeric grades). However, the code has some bugs. Your task is to identify and fix the issues.
Copy link
Contributor

Choose a reason for hiding this comment

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

Hmm, what are the bugs? I could only see the regular const vs let thing and that the result could use .toFixed(2), but nothing breaking.

```

**Tasks**
1. Create a list with the below recipes. Each recipes which each have a name, time, and ingredients.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
1. Create a list with the below recipes. Each recipes which each have a name, time, and ingredients.
1. Create a list with the above recipes. Each recipe should have a name, time, and ingredients.

* After each guess, the game provides feedback in the form of colored text:
* Green for correct letters in the correct position.
* Yellow for correct letters in the wrong position.
* standard color for incorrect letters.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
* standard color for incorrect letters.
* Standard color for incorrect letters.

Is Standard the Default text color?


console.log(green('A'), yellow('L'), 'O', 'N', green('E'));
```
3. We want to add some interactivity to our application. Investigate how our program can ask/prompt a user for an input and explain it to a class mate and a mentor
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
3. We want to add some interactivity to our application. Investigate how our program can ask/prompt a user for an input and explain it to a class mate and a mentor
3. We want to add some interactivity to our application. Investigate how our program can ask/prompt a user for an input and explain it to a team member and a mentor

```
3. We want to add some interactivity to our application. Investigate how our program can ask/prompt a user for an input and explain it to a class mate and a mentor
* How can we get a simple input such as the name from the user?
* Is it the same way whether we run our Javascript using an html page or node?
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
* Is it the same way whether we run our Javascript using an html page or node?
* Is it the same way whether we run our JavaScript using an HTML page or Node?

3. Run the script via Node
* Check if node is installed by running `node -v`. If it doesn't understand the command you have to [install Node](https://nodejs.org/en/download)
* Open the Terminal in VS Code
* Run the javascript file using the command `node <path to your file>`. <br>
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
* Run the javascript file using the command `node <path to your file>`. <br>
* Run the JavaScript file using the command `node <path to your file>`. <br>



## ✨ 1.2 Review IMDB's code
1. Describe in your own words to a team mate or mentor what this code does
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
1. Describe in your own words to a team mate or mentor what this code does
1. Describe in your own words to a team member or mentor what this code does

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants