-
Notifications
You must be signed in to change notification settings - Fork 138
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
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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!
There was a problem hiding this comment.
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.
* 🧱 **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. |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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. 👍🏽
* 🎓 **Learn New Concepts and Technologies** | ||
* **Goal**: Independently learn and understand new concepts and technologies, and effectively communicate your knowledge to others. |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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:
- Higlighting one key learning at the end of each session (quick fire, in a circle?)
- "Presenting" your solution to a mentor in the session (1on1)
- Explaining your changes (including why, learnings, challenges etc.) in every PR (should add a template for this)
- A couple of trainees giving a summary of their assignment (and what they learned during review) at the start of a session
- Presentation at the end of every project (try it recorded and in person)
- 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). |
There was a problem hiding this comment.
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?
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). |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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.
There was a problem hiding this 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 good to encourage them to get on there. For those that will continue, it's fun and gamified and marketable in job search.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
## Finishing class exercises | ||
|
||
Finish the exercises from the class! |
There was a problem hiding this comment.
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.
There was a problem hiding this 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.
There was a problem hiding this 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!
#### 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. | ||
|
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 | |||
``` |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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.
There was a problem hiding this 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
Co-authored-by: Marco Richetta <[email protected]>
Co-authored-by: Marco Richetta <[email protected]>
There was a problem hiding this 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. |
There was a problem hiding this comment.
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? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* 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 |
There was a problem hiding this comment.
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.
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. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* 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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* 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> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* 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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 |
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:
What I like your opinion on:
Challenges identified from previous teachings