diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 000000000..d06ffd2ea
Binary files /dev/null and b/.DS_Store differ
diff --git a/README.md b/README.md
index 6859e13d7..f3a77cb57 100644
--- a/README.md
+++ b/README.md
@@ -1,22 +1,78 @@
+> If you are following the HackYourFuture curriculum we recommend you to start with module 1: [HTML/CSS/GIT](https://github.com/HackYourFuture/HTML-CSS). To get a complete overview of the HackYourFuture curriculum first, click [here](https://github.com/HackYourFuture/curriculum).
+
> Please help us improve and share your feedback! If you find better tutorials
-or links, please share them by [opening a pull request](https://github.com/HackYourFuture/JavaScript1/pulls).
+> or links, please share them by [opening a pull request](https://github.com/HackYourFuture/JavaScript1/pulls).
+
+# Module #2 - JavaScript 1: Programming Basics (Frontend)
+
+
+
+In this module you'll make a start into wonderful world of programming. We will be using the programming language `JavaScript` to do so. You'll learn about the basic building blocks of programming: `loops`, `functions`, `control flow` and more. Consider these as the ABC's of programming, without them it's impossible to write working software!
+
+You'll be learning two main things:
+
+1. Fundamental concepts in programming
+ While we're using JavaScript to illustrate these concepts, it's important to keep in mind that what you will learn is applicable to **any** programming language. They might differ in syntax (a fancy term for the arrangement of words in a language in order for it to make sense), but the functionality will be the same: a loop will always be a loop.
+
+ This should be your mindset when you're learning concepts: **I'm learning how to become a software developer that can adjust to any language used, because I know what the underlying principles and concepts are**.
+
+2. How to think like a programmer
+ In one sentence this means: **knowing how to solve problems computationally**. Let's split that up in two parts: `how to solve problems` refers to the ability to identify issues and find effective solutions. `computationally` refers to the ability to think in logical steps that the computer can understand and execute.
+
+ This should be your mindset when you're learning how to think : **I'm learning how to think in logical steps, identifying cause and effect, and always looking for solutions**.
+
+## Before you start!
+
+In order to test your JavaScript code, you'll be using software that will execute your files from the command line. This software is called [Node.js](https://nodejs.org/en/download/). Download the Long-Term Support (LTS) version for your specific operating system.
+
+- For Windows, click [here](https://nodejs.org/dist/v10.16.0/node-v10.16.0-x64.msi)
+- For Mac, click [here](https://nodejs.org/dist/v10.16.0/node-v10.16.0.pkg)
+- For Linux, click [here](https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz)
+
+After you've installed it, go to your command line interface. Type in the following command:
+
+```
+node --version
+```
+
+It should show you version `v10.14.2` or higher.
+
+## Learning goals
+
+In order to successfully complete this module you will need to master the following:
+
+- Have an idea of what computer programming is
+- Know the basic buildingblocks of JavaScript
+- Correctly write and use variables, functions and loops
+- Understand the control flow
+- Think like a programmer
+
+## How to use this repository
+
+This repository consists of 3 parts:
+
+1. `Reading materials`: this document contains all the required theory you need to know _**while**_ you're coding. It's meant as both study material and as a reference to understand what you're doing.
+2. `Homework`: this document contains the instructions for each week's homework.
+3. `Lesson Plans`: this part is meant for teachers as a reference. However, as a student don't be shy to take a look at it as well!
+
+After your first class you should start with checking the `reading materials` for that week. So, for the first time that is the [Week 1 Reading](/Week1/README.md). Study all the concepts and try to get the gist of everything. After, you can get started with the `homework` for that week.
-# HackYourFuture - JavaScript 1
+If you have any questions or if something is not entirely clear ¯\\\_(ツ)\_/¯, please ask/comment on Slack!
-Here you can find course content and homework for the JavaScript 1 module
+## Planning
-|Week|Topic|Read|Homework|
-|----|-----|----|--------|
-|1.|Git Session|[Reading Week 1](/Week1/README.md) | [Homework Week 1](/Week1/MAKEME.md)|
-|2.|• Intro JavaScript (What is it, where can you use it for) • [Variables (var, let, const)](../../../fundamentals/blob/master/fundamentals/variables.md) • [Basic Data types (Strings, Numbers, Arrays, Booleans)](../../../fundamentals/blob/master/fundamentals/values.md) • [Operators](../../../fundamentals/blob/master/fundamentals/operators.md) • [Special characters and their names](../../../fundamentals/blob/master/fundamentals/names_of_special_characters.md) • [Naming conventions](../../../fundamentals/blob/master/fundamentals/naming_conventions.md)|[Reading Week 2](/Week2/README.md)|[Homework Week 2](/Week2/MAKEME.md)|
-|3.|• Git work flow :smiling_imp: • [Advanced data types (objects)](../../../fundamentals/blob/master/fundamentals/objects.md) • [Conditional execution](../../../fundamentals/blob/master/fundamentals/conditional_execution.md) • [Statements vs Expressions](../../../fundamentals/blob/master/fundamentals/statements_expressions.md) • [Loops (for/while)](../../../fundamentals/blob/master/fundamentals/loops.md) • [Functions](../../../fundamentals/blob/master/fundamentals/functions.md) • [Scope](../../../fundamentals/blob/master/fundamentals/scope.md)|[Reading Week 3](/Week3/README.md)|[Homework Week 3](/Week3/MAKEME.md)|
+| Week | Topic | Reading Materials | Homework | Lesson Plan |
+| ---- | --------------------------------------------------------------------------------- | ------------------------------ | ------------------------------- | ---------------------------------- |
+| 1. | What is JavaScript?, Variables, Data Structures & Naming Conventions | [Reading W1](/Week1/README.md) | [Homework W1](/Week1/MAKEME.md) | [Lesson Plan W1](/Week1/MAKEME.md) |
+| 2. | Statements vs. Expressions, Control flow, Loops, Operators, Conditional statement | [Reading W2](/Week2/README.md) | [Homework W2](/Week2/MAKEME.md) | [Lesson Plan W2](/Week1/MAKEME.md) |
+| 3. | Functions, Thinking like a programmer I, How JavaScript relates to HTML/CSS | [Reading W3](/Week3/README.md) | [Homework W3](/Week3/MAKEME.md) | [Lesson Plan W3](/Week1/MAKEME.md) |
-__Kind note:__
+## Finished?
-We expect you to __always__ come prepared to the class on Sunday.
+Did you finish the module? Good job! You're doing great!
-### Overall
-A good understanding of all the above mentioned topics. Want to check your Knowledge? Go through the [JavaScript Fundamentals README](../../../fundamentals/blob/master/README.md) and research/ ask for help (Slack!) with the concepts that are not entirely clear.
+If you feel ready for the next challenge, click [here](https://www.github.com/HackYourFuture/JavaScript2) to go to JavaScript2!
+_The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)_
-*The HackYourFuture curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it :)*
+ This work is licensed under a Creative Commons Attribution 4.0 International License.
diff --git a/Week1/.DS_Store b/Week1/.DS_Store
new file mode 100644
index 000000000..0e98056ea
Binary files /dev/null and b/Week1/.DS_Store differ
diff --git a/Week1/LESSONPLAN.md b/Week1/LESSONPLAN.md
new file mode 100644
index 000000000..e5b932ed0
--- /dev/null
+++ b/Week1/LESSONPLAN.md
@@ -0,0 +1,26 @@
+# Lesson Plan Week 1
+
+## Agenda
+
+The purpose of this class is to introduce to the student:
+
+(1) what variables are and why they're used
+(2) what a data type is, and which ones there are in JavaScript
+
+FIRST HALF:
+
+SECOND HALF:
+
+### Core concepts
+
+FIRST HALF (12.00 - 13.30)
+
+1.
+
+SECOND HALF (14.00 - 16.00)
+
+2.
+
+3)
+
+4.
diff --git a/Week1/MAKEME.md b/Week1/MAKEME.md
index 41d0289ad..91ce36648 100644
--- a/Week1/MAKEME.md
+++ b/Week1/MAKEME.md
@@ -1,32 +1,184 @@
-## Homework week 1:
+# Homework JavaScript1 Week 1
+## **Todo list**
+
+1. Practice the concepts
+2. JavaScript exercises
+3. Code along
+
+## **1. Practice the concepts**
+
+Before we learn how to build actual applications, we first need to gain experience using JavaScript in a computational way. This teaches us how to think like a programmer, and gives us more experience with the language itself.
+
+In the following exercises you'll learn how to use different JavaScript concepts to solve common computational problems:
+
+- [Learn-js](https://www.learn-js.org/). Do all the `Learn the basics` exercises.
+- [Codecademy: Introduction to JavaScript](https://www.codecademy.com/learn/introduction-to-javascript/modules/learn-javascript-introduction). Do all the exercises (#1 to #10).
+- [FreeCodeCamp: Introduction to JavaScript](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript). Do at least 20 exercises, you can choose whichever ones you feel are challenging enough.
+
+## **2. JavaScript exercises**
+
+Inside of your `JavaScript1` fork, create a folder called `week1`. Inside of that folder, create a folder called `js-exercises`. For all the following exercises create a new `.js` file in that folder (10 files in total). Make sure the name of each file reflects its content: for example, the filename for exercise one could be `logHello.js`.
+
+> In each file, start off with the string `'use strict'`. This will make sure the code interpreter will enforce stronger rules when looking at your code.
+
+> Before starting, make sure you have [Node.js](https://nodejs.org/en/download/) installed on your computer. You'll use this to execute your code to check if it works.
+
+**Exercise 1: Hello world!**
+
+Write a statement, using the `console.log()` function. Give it a string as an argument. The string should contain the message "Hello world!".
+
+Write 10 statements like these, but in different languages.
+
+For example:
+
+```
+Halo, dunia! // Indonesian
+Ciao, mondo! // Italian
+Hola, mundo! // Spanish
+```
+
+Using the command line, navigate to your `week1` folder and type in the following to test your code:
+
+```
+node FILENAME.js
+```
+
+It should show the message `Hello world!` in 10 different languages.
+
+**Exercise 2: Error debugging**
+
+Consider the following code:
+
+```js
+console.log('I'm awesome');
+```
+
+Copy the code in your `.js` file and run it in the command line using `node`. You will see that you will get a SyntaxError. **Correct the mistake**.
+
+Hint: the SyntaxError message will give you some indication of what the error _might_ be, but figure out yourself how to correct it!
+
+When done right, it should show the message `I'm awesome`.
+
+**Exercise 3: Log the number**
+
+Follow the steps. Make sure that each step is written on the line after.
+
+1. First, declare your variable `numberX`. Do not _initialize_ it (which means, don't give it a value) yet.
+2. Add a `console.log` statement that explains in words _what you think_ the value of `x` is, like in this example.
+3. Add a `console.log` statement that logs the value of `numberX`.
+4. Now _initialize_ your variable `numberX` with a number (also called an `integer` in computer science terms).
+5. Next, add a `console.log` statement that explains _what you think_ the value of `numberX` is.
+6. Add a `console.log` statement that logs the value of `numberX`.
+
+**Exercise 4: Log the string**
+
+Follow the steps. Make sure that each step is written on the line after.
+
+1. Declare a variable `myString` and assign a string to it. Use your full name, including spaces, as the content for the string.
+2. Write a `console.log` statement in which you explain in words _what you think_ the value of the string is.
+3. Now `console.log` the variable `myString`.
+4. Now reassign to the variable `myString` a new string.
+5. Just like what you did before write a `console.log` statement that explains in words _what you think_ will be logged to the console.
+6. Now console.log `myString` again.
+
+**Exercise 5: Round a number and log it**
+
+Follow the steps. Make sure that each step is written on the line after.
+
+1. Declare a variable `z` and assign the number 7.25 to it.
+2. Write a `console.log` statement in which you log the value of `z`.
+3. Declare another variable `a` that has the value of `z` but rounded to the nearest integer.
+4. Write a `console.log` statement in which you log the value of `a`.
+5. So now we have `z` and `a` find a way to compare the two values and store the highest of the two in a new variable.
+6. Write a `console.log` statement in which you log the value of the highest value.
+
+**Exercise 6: Log an array of animals**
+
+Follow the steps. Make sure that each step is written on the line after.
+
+1. Declare variable and assign to it an empty array. Make sure that the name of the variable indicates it contains more than 1 item. For example `items` instead of `item`.
+2. Write a `console.log` statement that explains in words _what you think_ the value of the array is.
+3. Write a `console.log` statement that logs the array.
+4. Create a new variable with an array that has 3 of your favorite animals, each in a different string. Make sure the name of the variables says something about what the variable contains.
+5. Write a `console.log` statement that logs the second array.
+6. Add a statement that adds another string ("Piglet)" to the array of animals.
+7. Write a `console.log` statement that logs the second array!
+
+**Exercise 7: Log the length of a string**
+
+Follow the steps. Make sure that each step is written on the line after.
+
+1. Declare a variable called `mySentence` and initialize it with the following string: "Programming is so interesting!".
+2. Figure out (using Google) how to get the length of `mySentence`.
+3. Write a `console.log` statement to log the length of `mySentence`.
+
+**Exercise 8: Type checker**
+
+Write a program that checks the data types of two variables and logs to the console `SAME TYPE` if they are the same type. If they are different types log `Not the same...`.
+
+1. Declare 4 variables: 2 must be `strings` and 2 must be `objects`
+2. Create 8 conditional statements, where for each you check if the data type of one variable is the same as the other
+3. Find out how to check the type of a variable
+4. Write 2 `console.log` statements to log the type of 2 variables, each with a different data type
+5. Now compare the types of your different variables with one another
+6. Log `Not the same...` when the types are different
+
+Here's an incomplete example of how it could look:
+
+```js
+// Declare all variables
+let x = 9;
+let y = 67;
+
+// Check data type
+console.log(...);
+
+// Check if data type is the same
+if (...) {
+ console.log('SAME TYPE');
+}
```
-Topics discussed in class this week:
-• Git
+
+**Exercise 9: Log the remainder**
+
+For each of these, write in comments what the answer is followed by how you came to that conclusion
+
+1. If `x` equals 7, and the only other statement is `x = x % 3`, what would be the value of `x` after the calculation?
+2. If `y` equals 21, and the only other statement is `x = x % 4`, what would be the value of `y` after the calculation?
+3. If `z` equals 13, and the only other statement is `x = x % 2`, what would be the value of `z` after the calculation?
+
+**Exercise 10: Compare arrays**
+
+1. Declare 2 variables, that each hold an array. The first array should have 4 items, the second 7 items
+2. Find out how to get the length of each array. Write a `console.log` statement that shows the length of each array
+
+```js
+const array = ["hello", 123, true, { name: "Noer" }];
+
+console.log('The length of the array is...' + ...);
```
-> [Here](/Week2/README.md) you find the readings you have to complete before the second lecture.
+3. Write a conditional statement that checks if both are of equal length. If they are, log to the console `They are the same!`, if not log `Two different sizes`
+
+## **3. Code along**
+
+We don't want to lose the connection with HTML/CSS, so in the following tutorial you'll learn how to build a simple web application use HTML/CSS and JavaScript.
+
+You'll first write the HTML and CSS, to provide structure and style to the page. When doing so, keep notice of how the developer chooses to do this. Why do they use this tag instead of something else? Why do they give an element a certain class name?
-## Step 1: Share a useful resource
+After, the developer will write JavaScript code. You'll notice it's different from how you've used JavaScript. It is something we call **DOM Manipulation**. Don't worry, you don't need to master this just yet. Just follow along and do some research yourself if you already want to learn more about it!
-_Deadline Monday_
+- [Calculator](https://www.youtube.com/watch?v=6v4vBXL-qkY)
-All share a video or a resource (this can be a drawing, an article or a podcast) that was helpful for you the last few weeks with learning HTML/CSS. Please share this in the channel of your class in Slack. Also write as small note about what the resource is about and why you think it's so helpful (you can share more than one if you like).
+## **SUBMIT YOUR HOMEWORK!**
-## Step 2: Git homework
+After you've finished your todo list it's time to show us what you got! Starting from this week you'll be submitting all your homework through GitHub. What you'll be doing is upload all your files to a forked repository (a copy from the original, which in this case is the [JavaScript1](https://www.github.com/HackYourFuture/JavaScript1) repository) using GIT.
-_Deadline Wednesday_
+Take a look at the following [guide](../hand-in-homework-guide.md) to see how it's done.
-Git homework for this week:
+The homework that needs to be submitted is the following:
-Pair up with another student in your class. The homework requires two people to work together. Let's call them admin and user.
+1. JavaScript exercises
-1. admin creates a new repository on github called **animals**.
-2. admin adds a file called “zoo.txt” with some animals generally found in a zoo.
-3. admin commits and pushes the changes (in master branch).
-4. user forks the repository created by admin and bring it to their machine (covered during classwork).
-5. user makes a new branch called user-dev.
-6. user adds another file called “pets.txt” with some animals generally found in a home.
-7. user commits and pushes his branch to remote.
-8. user creates a pull request(PR) to merge changes from user's _user-dev_ branch to admin's _master_ branch.
-9. admin reviews the pull request and approves and merges changes.
\ No newline at end of file
+_Deadline Saturday 23.59 CET_
diff --git a/Week1/README.md b/Week1/README.md
index f56828ace..3728b5285 100644
--- a/Week1/README.md
+++ b/Week1/README.md
@@ -1,11 +1,161 @@
-# Reading material for your first JavaScript lesson:
+# Reading Material JavaScript1 Week 1
+## Agenda
+
+These are the topics for week 1:
+
+1. What is programming?
+ - Introduction
+ - Software
+ - What is a programming language?
+2. What is web development?
+ - Web development vs. software development
+ - Web development vs. web design
+ - Website vs. web application
+3. What is JavaScript?
+4. What are variables?
+ - The keywords: let, const, var
+ - values
+5. What are data types?
+ - 6 basic types
+
+## 1. What is programming?
+
+### Introduction
+
+Programming is giving a computer instructions written in a language it can understand, in order to solve a problem. We don't necessarily need computers to solve problems, but we use them because they provide several benefits:
+
+1. They are fast
+2. Cheap to use
+3. Can work 24/7 (as long as it has power)
+
+This is important to note: a computer is a `tool` we use to make our lives easier. In order to use this tool, we need to talk to it in a way it understands (programming language) and give it commands on what to do (programming). However, despite the power a computer has it is not very smart. It can't do anything without being told **exactly** what it needs to do solve a problem. This is why we learn how to program.
+
+Go through the following resources to learn more about what programming is:
+
+- [What is programming?](https://www.youtube.com/watch?v=3tWMQ3ZMjbg)
+- [Introduction into programming Playlist](https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZYJC7L-r6rX6utt6wwJCyi)
+
+### Software
+
+As a software developer (synonym to 'programmer'), you will write these instructions in order to create 'software'. Look at the following video to get a better idea of what software is:
+
+- [What is software?](https://www.youtube.com/watch?v=MSA3WsGeTNI)
+
+### What is a programming language?
+
+Programming is done using a programming language. Why do we need a language to communicate with the computer? At its most basic level, a computer operates based on 0's and 1's: 0 meaning off, and 1 meaning on. Smart people decided to make this more comprehensible, so that people can more simply communicate with a computer. This is how the development of programming languages started: by defining a vocabulary, grammar and syntax to put more organization to the 0's and 1's, we can more simply communicate exactly what we want to computer to do.
+
+- [What are programming languages](https://hackr.io/blog/what-is-programming-language)
+
+There are various languages, each made to fulfill a certain need. For example, Microsoft developed a language called [C#](https://www.youtube.com/watch?v=paJUbVeKEOU) in order to make applications for Windows computers. Read the following article to learn more about different languages and their uses:
+
+- [14 Programming Languages Explained](https://mikkegoes.com/14-programming-languages-explained/)
+
+## 1. What is web development?
+
+In HackYourFuture we focus on `web` programmming (also known as `web development`): writing code that creates websites and web applications. Look at the following video to learn about what you'll be doing:
+
+- [What does a web developer do?](https://www.youtube.com/watch?v=GEfuOMzRgXo)
+
+## Web development vs. software development
+
+The field of programming is broad. As a software developer (a general term for anyone that writes code to create software) there are several career paths you might take. The following are some of the biggest:
+
+1. Web. Developing websites and web applications to be accessed and used in the browser
+2. Mobile. This refers mostly to Android and iOS application development
+3. Desktop. Every application on your computer has been made by desktop developers
+4. Data science. Writing custom programs to extract patterns from big piles of data is what this developer does.
+5. Gaming. Game developers work with a variety of designers, artists and testers to realize a video game
+6. Quality Assurance. Applications need to be tested, and these developers write tests that check for the correct working of any piece of code
+
+Read the following article to read more about different career paths:
+
+- [Software Development Career Paths](https://simpleprogrammer.com/software-development-career-paths/#title-career-developer-options)
+
+Note: once you've chosen a certain track it doesn't mean you can't try out any other! If anything, you are encouraged to explore and see what fits your taste :)
+
+### Web development vs. web design
+
+You might have heard these terms used interchangeably. They are, however, two different things. A web developer writes code and handles the logical, technical side. A web designer decides how things are going to look and handle the creative side. The following video will explain this more clearly:
+
+[Web Developer vs. Web Designer](https://www.youtube.com/watch?v=M-M7jBV_Gf4)
+
+### Websites vs. web applications
+
+Before we get started with the meat of the module, which is JavaScript) we need to make a small, but important distinction: are we going to make websites or web applications? For non-developers, there is no difference but for you as a developer you must know what you're making.
+
+Simply put, it's the difference between [Facebook](https://wwww.facebook.com) and [Wikipedia](https://www.wikipedia.org). In Facebook, the data shown changes depending on the user. If you are logged in, you'll see different things than that I will. However, on Wikipedia the information will always be the same, for both you and me. T
+
+This is the difference bteween `static` and `dynamic` sites: a static site always has the same information (written in the HTML), while a dynamic site changes it's data shown to the user depending on who it is and what their interactivity on the page is.
+
+Read the following articles to learn more about this:
+
+- [Website vs. Web Application](https://www.seguetech.com/website-vs-web-application-whats-the-difference/)
+- [Static vs. dynamic websites](https://www.youtube.com/watch?v=4sP7fp3cp24)
+
+## 3. What is JavaScript?
+
+JavaScript is a programming language. We use it to communicate with the browser, software that allows us to access the Internet and open webpages. It is essential to learn in order to become a web developer.
+
+You've already learned what HTML and CSS do. Javascript is the third part that makes the circle complete. If we liken the three to the human body, we could say that HTML provides the skeleton, CSS provides the skin and shape, and JavaScript provides the animation/interactivity.
+
+The main use for JavaScript is to make your webpage interactive: for example, if you click a button it will open a popup. Or if you scroll over an image, it changes its color.
+
+Check the following resources to learn more about it:
+
+- [What is JavaScript?](https://www.youtube.com/watch?v=nItSSTwBvSU)
+- [What does JavaScript do and what is it used for?](https://www.youtube.com/watch?v=OSWppEa2Zac)
+
+## 4. What are variables?
+
+A variable is a piece of information that is saved. You give it a name that describes what its contents are, and to also refer to it at a later point.
+
+### The keywords: let, const, var
+
+A variable is a central concept within programming. It's applied the same way across almost all programming languages. In JavaScript we apply it by using a `keyword`, a word that is reserved by the language because it has a special meaning. Read more about this in the following article:
+
+- [Variables](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/variables.md)
+
+A variable always contains a `value`: a piece of information that you want to refer to at a later stage. Read more about this here:
+
+- [Values](https://www.github.com/hackyourfuture/fundamentals/blob/master/fundamentals/values.md)
+
+When creating variables, it's important to think about the right name to give it. It should always reflect what "type" of data it contains and how it would make sense in light of the rest of your code. You (and other developers that will read your code) should be able to read a variable name and know what its purpose is.
+
+Why do we need variables? You'll be using variables to manipulate its content (the value inside the variable). Why would you want to do this? For most of the time, you want to perform some kind of calculation. The most basic example is the following:
+
+```js
+const one = 1;
+const two = one + one;
```
-In week one we will discuss the following topics:
-• Git
-```
-### Here are resources that we like you to read as a preparation for the coming lecture.
+Here we have assigned to a new variable the calculation `one` plus `one`. Why have we put the end result into a new variable? It is because the result of the calculation will not be remembered later down the line of code, so we store it in a variable in case we want to manipulate that some point later.
+
+This is something that you will learn when you start coding yourself. If you can't wait you can already look at the [homework](./MAKEME.md).
+
+## 5. What are data types?
+
+A data type is a category of data. It tells the code interpreter what kind of data it is reading so it knows how to optimally store it in memory. An example of this is the Number type. In most programming languages, when it reads the number `2` it doesn't know that it's a number. It needs to be told it is so. In JavaScript, however, that is assumed.
+
+## 6 Basic types
+
+There are about 6 basic data types in JavaScript. String, Number, Boolean, Object, Array, and Function. You can read more about them in the following article:
+
+- [JavaScript Data Types](https://www.tutorialrepublic.com/javascript-tutorial/javascript-data-types.php)
+- [JS Data Types](https://www.w3schools.com/js/js_datatypes.asp)
+- [Variables & Data Types](https://www.youtube.com/watch?v=Hrd3SfCCXZw)
+
+Why do you need to know this? Again, this goes back to computers not being very smart: it needs to know **exactly** how to look at things, what to do with it and in what order.
+
+In JavaScript, the data types allow us to store various types of information, and perform manipulations on them. You'll learn more about them at a later stage.
+
+## Extra resources
+
+If you feel like you need more information to fill in the gaps of your understanding, check out the following resources to learn more about the basics of JavaScript:
+
+- [Introduction to JavaScript Development](https://www.udemy.com/refactoru-intro-js)
+
+## Finished?
-- In your next lecture your teacher will teach you your first GIT session, please look through the [GIT](https://github.com/HackYourFuture/Git) repository and read about the learning goals.
-- Get familiar with GIT by doing the following [Codecademy GIT course](https://www.codecademy.com/learn/learn-git)
+Are you finished with going through the materials? You're doing great! If you feel ready to get practical, click [here](./MAKEME.md).
diff --git a/Week1/resources/ASmarterWaytoLearnJavaScript.pdf b/Week1/resources/ASmarterWaytoLearnJavaScript.pdf
deleted file mode 100644
index d5f3554f6..000000000
Binary files a/Week1/resources/ASmarterWaytoLearnJavaScript.pdf and /dev/null differ
diff --git a/Week2/LESSONPLAN.md b/Week2/LESSONPLAN.md
new file mode 100644
index 000000000..c353de6ad
--- /dev/null
+++ b/Week2/LESSONPLAN.md
@@ -0,0 +1,23 @@
+# Lesson Plan Week 2
+
+## Agenda
+
+The purpose of this class is to introduce to the student (1)
+
+FIRST HALF:
+
+SECOND HALF:
+
+### Core concepts
+
+FIRST HALF (12.00 - 13.30)
+
+1.
+
+SECOND HALF (14.00 - 16.00)
+
+2.
+
+3)
+
+4.
diff --git a/Week2/MAKEME.md b/Week2/MAKEME.md
index 8a2b98230..50f464c9d 100644
--- a/Week2/MAKEME.md
+++ b/Week2/MAKEME.md
@@ -1,172 +1,164 @@
-## Homework Week 2
+# Homework JavaScript1 Week 2
-```
-Topics discussed in class this week:
-• Intro JavaScript (What is it, where can you use it for)
-• Variables (var, let, const)
-• Basic Data types (Strings, Numbers, Arrays, Booleans)
-• Operators
-```
+## **Todo list**
-> [Here](/Week3/README.md) you find the readings you have to complete before the third lecture.
+1. Practice the concepts
+2. JavaScript exercises
+3. Code along
+4. PROJECT: Grade calculator
-## Before you start with the homework:
+## **1. Practice the concepts**
-1. Review the [Git course material](https://github.com/HackYourFuture/Git) of last week.
-2. Watch: [What is programming](https://www.khanacademy.org/computing/computer-programming/programming/intro-to-programming/v/programming-intro), just watch the 2 min video, you do not have to do the entire JavaScript course (It could be useful later on though).
+In this section you will be doing interactice exercises, that will allow you to practice with the concepts you've learned about this week!
-## Step 2: JavaScript
+- [Codecademy: Arrays](https://www.codecademy.com/courses/introduction-to-javascript/lessons/arrays)
+- [FreeCodeCamp: Basic data structures](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-data-structures)
-_Deadline Thursday_
+## **2. JavaScript exercises**
-> For all the following exercises create a new `.js` file. Try to find a proper name for each file or make a small comment about what it does inside for future reference.
+> For all the following exercises create a new .js file. Try to find a proper name for each file or make a small comment about what it does inside for future reference.
-1\. Write a `console.log` statement saying "Hello World!" for each language that you know.
+> Start each file off with the string `'use strict'` at the top.
-For example:
-
-```
-Halo, dunia! // Indonesian
-Ciao, mondo! // Italian
-Hola, mundo! // Spanish
-```
+**Exercise 1: Remove the comma**
-2\. Consider the following code:
+Consider the following string:
```js
-console.log('I'm awesome');
+let myString = 'hello,this,is,a,difficult,to,read,sentence';
```
-Copy the code in your `.js` file and run it. You will see that you will get a SyntaxError. Find a solution for this error. Hint: read the error message carefully, it also gives an indication of where the problem is.
+1. Add the variable to your file.
+2. Log the length of `myString`.
+3. The commas make that the sentence is quite hard to read. Find a way to remove the commas from the string and replace them with spaces. (use Google!)
+4. After replacing the commas, log `myString` to see if you succeeded.
-3\. Declare a variable `x` and initialize it with an integer, using these exact steps:
-3\.1 First, _declare_ your variable `x` (do not initialize it yet).
-3\.2 Add a `console.log` statement that explains in words what _you think_ the value of `x` is, like in this example:
+**Exercise 2: The even/odd reporter**
-```js
-// TODO -> here you initialize your variable
-console.log("the value of my variable x will be: whateverYouThinkItWillLog");
-```
+Report whether or not a number is odd/even!
-3\.3 Add a `console.log` statement that logs the value of `x`.
-3\.4 Now _initialize_ your variable `x` with an integer.
-3\.5 Next, add a `console.log` statement that explains what _you think_ the value of `x` is.
-3\.6 Add a `console.log` statement that logs the value of `x`.
- Steps to be taken:
+1. Create a `for` loop, that iterates from 0 to 20.
+2. Create a conditional statement that checks if the value of the counter variable is odd or even.
+3. If it's odd, log to the console `The number [PUT_NUMBER_HERE] is odd!`.
+4. If it's even, log to the console `The number [PUT_NUMBER_HERE] is even!`.
-```js
-// TODO -> here you declare your variable
-console.log("the value of x will be: whateverYouThinkItWillLog");
-// TODO -> log the actual value of x
-// TODO -> here you initialize your variable
-console.log("the value of x will be: whateverYouThinkItWillLog");
-// TODO -> log value of x again
-```
+**Exercise 3: The recipe card**
-4\. Declare a variable `y` and assign a string to it.
-4\.1 Write a `console.log` statement in which you explain in words what _you think_ the value of the string is.
-4\.2 Now `console.log` the variable `y`.
-4\.3 Now assign a new string to the variable `y`.
-4\.4 Just like what you did before write a `console.log` statement that explains in words what you think will be logged to the console.
-4\.5 Now console.log `y` again.
+Ever wondered how to make a certain meal? Let's create a recipe list with JavaScript!
-```js
-// TODO -> here you declare AND assign your string
-console.log("the value of my string will be: whateverYouThinkItWillLog");
-// TODO -> log the actual value of the string to the console
-// TODO -> assign a new value to your variable x
-console.log("the value of my string will be: whateverYouThinkItWillLog");
-// TODO -> log the actual value of the string to the console
+1. Declare a variable that holds an object (your meal recipe).
+2. Give the object 3 properties: a `title` (string), a `servings` (number) and an `ingredients` (array of strings) property.
+3. Log each property out seperately.
+
+It should look similar to this:
+
+```markdown
+Meal name: Omelete
+Serves: 2
+Ingredients:
+4 eggs
+2 strips of bacon
+1 tsp salt/pepper
```
-5\. How do you round the number 7.25, to the nearest integer (i.e., whole number)?
-5\.1 Declare a variable `z` and assign the number 7.25 to it.
-5\.2 `console.log` `z`.
-5\.3 Declare another variable `a` that has the value of `z` but rounded to the nearest integer.
-5\.4 `console.log` `a`.
-5\.5 So now we have `z` and `a` find a way to compare the two values and store the highest of the two in a new variable.
-5\.6 `console.log` the highest value.
-
-6\. _Arrays_
-6\.1 Declare an empty array. Make sure that the name you choose indicates 'plurality', because an array is capable of containing more than one element. (See [Naming conventions](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/naming_conventions.md)).
-6\.2 Write a `console.log` statement that explains in words what you think the value of the array is.
-6\.3 `console.log` your array.
-6\.4 Create an array that has your favorite animals inside (see if you can find a good name that exactly describes what this variable will hold).
-6\.5 Log your array.
-6\.6 Add a statement that adds Daan's favorite animal ('baby pig') to the _existing array_.
-6\.7 Log your new array!
-
-7\. _More strings_
-Let's consider the following string: `let myString = "this is a test"`.
-7\.1 Add the string to your file and console.log it.
-7\.2 Find a way to get the length of `myString`.
-7\.3 `console.log` the length of `myString`.
-
-8\. Write a program that checks the types of two variables and prints out `SAME TYPE` if they are the same type.
-8\.1 First declare at least four variables and assign them different data types.
-8\.2 For each variable write a `console.log` statement that logs the value
+**Exercise 4: The reading list**
+
+Keep track of which books you read and which books you want to read!
+
+1. Declare a variable that holds an array of 3 objects, where each object describes a book and has properties for the `title` (string), `author` (string), and `alreadyRead` (boolean indicating if you read it yet).
+2. Loop through the array of books.
+3. For each book, log the book title and book author like so: "The Hobbit by J.R.R. Tolkien".
+4. Create a conditional statement to change the log depending on whether you read it yet or not. If you read it, log a string like `You already read "The Hobbit"` right after the log of the book details
+5. If you haven't read it log a string like `You still need to read "The Lord of the Rings"`
+
+**Exercise 5: Who wants a drink?**
+
+You're at a party and you feel thirsty! However, you've got 5 friends who are also in need of a drink. Let's go get them a drink.
+
+1. Declare a variable that holds an empty array, called `drinkTray`.
+
+There are 3 different types of drinks:
```js
-let foo = 3;
-console.log("The value of my variable foo is: " + foo);
+const drinkTypes = ['cola', 'lemonade', 'water'];
```
-(Curious to know what a `foo` is? Check [this article](https://en.wikipedia.org/wiki/Metasyntactic_variable) on Wikipedia.)
+2. Create a loop that runs 5 times. On each iteration, push a drink into the `drinkTray` variable.
+3. However, if there are already two instances of a `drinkType` then start with the next drink in the array.
+4. Your `drinkTray` should contain 2 cola, 2 lemonade and 1 water.
+5. Log to the console: "Hey guys, I brought a [INSERT VALUES FROM ARRAY]!" (For example: "Hey guys, I brought a cola, lemonade, cola, water, lemonade!")
-8\.3 Now write a `console.log` statement wherein you first explain in words what you think the _type_ of your variables is.
-8\.4 Now use `typeof` to log the actual _type_ of your variables.
-8\.5 Now compare the types of your different variables with one another.
-8\.6 Make sure to also show a message when the variables you are comparing are not the same type.
+## **3. Code along**
-For example:
+> Create a new folder outside of your `JavaScript1` fork
-```js
-let x = 9;
-let y = 'Hello';
+In the following 2 projects you'll be flexing your HTML/CSS skills again, together with writing JavaScript code. They are similar in structure and logic, so be sure to spot the similarities!
-if (...) {
- console.log('SAME TYPE');
-}
-// TODO -> add a way of giving feedback if your variables don't have the same type
-```
+It's ok if you don't understand exactly what's happening here. Just follow along and try to understand: ask questions about what the developer is doing and think about every line of code.
+
+**Project 1: Temperature Converter**
+
+This project will teach you how to convert temperature from one scale to another in real-time!
+
+In the first part you'll be building the basic frontend, which means the way the page is going to look using only HTML/CSS. In the second part you'll be writing the logic that will allow a user to convert the temperature from one temperature scale to another (i.e. Celsius to Fahrenheit)
+
+- [Temperature Converter Pt. I](https://www.youtube.com/watch?v=EHclqGV_KME)
+- [Temperature Converter Pt. II](https://www.youtube.com/watch?v=8mRGfLL1nzE)
-9\. If `x` equals 7, and the only other statement is `x = x % 3`, what would be the new value of `x`?
-9\.1 Add at least 3 `console.log` statements in which you show that you understand what `%` does.
+**Project 2: Weight Converter**
-10\. Write a program to answer the following questions:
-10\.1 Can you store multiple types in an array? Numbers and strings? Make an example that illustrates your answer.
-10\.2 Can you compare infinities? (Not in Eyad's world) - does 6/0 === 10/0? How can you test this?
-10\.3 Add `console.log` statements to the above program in which you show that you understand the concepts (just like you've done in the above assignments).
+In the following tutorial you'll learn how to make a Weight Converter application. You'll make use of HTML, CSS and JavaScript. At first you'll be building the basic layout of the frontend (the HTML & CSS). After you'll start writing the JavaScript logic that will `convert pounds into grams`.
-## Step 3: **Some freeCodeCamp challenges (10 hours):**
+In order to speed up development you'll be using a CSS framework: [Bootstrap 4](https://www.getbootstrap.com). While coding along, have a look through the documentation in order to get familiar with the different class names to see what they do.
-_Deadline Saturday_
+- [Weight Converter App](https://www.youtube.com/watch?v=7l-ZAuU8TXc)
-On freeCodeCamp.com please do the [Basic JavaScript](https://www.freecodecamp.com/challenges/learn-how-free-code-camp-works) exercises up and until the **"Shopping List"** exercise (there are some topics we did not cover but you can do it).
+## **4. PROJECT: Grade calculator**
-## Step 4: Read before next lecture
+> Every week ends with a project you have to build on your own. Instead of getting clear-cut instructions, you'll get a list of criteria that your project needs to measure up to.
-_Deadline Sunday morning_
+In this project you'll write a script that calculates grades, based on the American grading system! Let's say a student did a test and they got a 60 out of 100, this script will:
-Go trough the reading material in the [README.md](/Week3/README.md) to prepare for your next class
+1. convert the score into a percentage
+2. calculate what grade corresponds with that percentage, and
+3. shows in the command line the result: the grade and the percentage
-### How to hand in Homework:
+When writing the script, make use of the following grade scores:
+```markdown
+Grade A (90% - 100%)
+Grade B (80% - 89%)
+Grade C (70% - 79%)
+Grade D (60% - 69%)
+Grade E (50% - 59%)
+Grade F (0% - 49%)
```
-• Create a new repository "hyf-javascript1". Also create a new folder "week1" inside this repository.
-• Upload your homework files inside the week1 folder and write a description for this “commit”.
-• Your hyf-javascript1/week1 should now contain all your homework files.
-• Place the link to your repository folder in Trello.
+
+These are the requirements your project needs to fulfill:
+
+- Make a JavaScript file with a name that describes its contents
+- Use either a switch or if/else statement
+- Write at least 2 comments that explain to others what a line of code is meant to do
+- Make the return value of the function a template string, so you can insert variables!
+- Use `node` from the command line to test if your code works as expected
+
+This is what the script is expected to return in the command line:
+
+```markdown
+You got a B (85%)!
```
-### Hint
+Good luck!
+
+## **SUBMIT YOUR HOMEWORK!**
+
+After you've finished your todo list it's time to show us what you got! The homework that needs to be submitted is the following:
+
+1. JavaScript exercises
+2. PROJECT: Grade calculator
-If you solve the FreeCodeCamp challenges and they are new concepts to you and you would like to take a look at them later on in the program, Copy your answers from FCC in a `.js` file and upload them to Github in a repository for future reference. In this way you build your own little documentation, if you look back at them first try to understand what it does before you run them.
+Upload both to your forked JavaScript1 repository in GitHub. Make a pull request to the original repository.
-:star: Additional resources and review: :star:
+> Forgotten how to upload your homework? Go through the [guide](../hand-in-homework-guide.md) to learn how to do this again.
-- [Variables](./../../../../fundamentals/blob/master/fundamentals/variables.md)
-- [Basic value types](./../../../../fundamentals/blob/master/fundamentals/values.md)
-- [Operators](./../../../../fundamentals/blob/master/fundamentals/operators.md)
-- [Special characters and their names](./../../../../fundamentals/blob/master/fundamentals/names_of_special_characters.md)
-- [Naming conventions](./../../../../fundamentals/blob/master/fundamentals/naming_conventions.md)
+_Deadline Saturday 23.59 CET_
diff --git a/Week2/README.md b/Week2/README.md
index 492ff1b28..af0ca5eb2 100644
--- a/Week2/README.md
+++ b/Week2/README.md
@@ -1,33 +1,89 @@
-# Reading material for the second lecture:
+# Reading Material JavaScript1 Week 2
+## Agenda
+
+These are the topics for week 2:
+
+1. Statements vs. Expressions
+2. Loops
+3. Control Flow
+4. Operators
+5. Conditional statement
+6. Naming conventions
+
+## 1. Statements vs. Expressions
+
+A lot of programming is nothing different from regular human communication. When conversing with another person, we often use language in various ways: to ask questions, make statements or simply express yourself about what's going on.
+
+This is the same in programming. A difference is that it's done in abstract code. Another difference is that a programming statement is an instruction, while a programming expression leads directly to a value (and are usually different parts of a statement).
+
+To learn more about statements vs. expression, research the following resources:
+
+- [Statements vs. Expressions](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/statements_expressions.md)
+- [Expressions vs. Statements in JS](https://www.youtube.com/watch?v=WVyCrI1cHi8)
+
+## 2. Loops
+
+A loop is a sequence of instructions that is continually repeated until a certain condition is fulfilled. This condition could either be a specified number or when a desired value is found.
+
+Read more about loops here:
+
+- [JavaScript Loops](https://www.youtube.com/watch?v=s9wW2PpJsmQ)
+- [Loops](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/loops.md)
+
+## 3. Control Flow
+
+Almost all European languages are read from left to right. In Arabic and Hebrew this is the other way around: from right to left.
+
+In the language of JavaScript this goes from top to bottom, left to right. This is called the `control flow`: the order in which the computer executes statements in a script. The `control` parts refers to the ability to execute something by the computer, while the `flow` part refers to the causal chain between the execution of one action to another.
+
+> The term `flow` is a general term meaning a specific, repeatable order of actions. In your working life you'll hear the term `workflow`, which in that case refers to the different actions necessary to complete a business activity.
+
+There is one important distinction between spoken language and programming languages: in programming languages the order in which the code is read can change, depending on various `control statements`.
+
+Learn more about control flow here:
+
+- [Control flow](https://dev.to/mugas/control-flow-in-javascript-246l)
+
+## 4. Operators
+
+If you've ever taken a mathematics class you are familiar with symbols like `+`, `-`, `/` and `=`. These symbols are recognized by the computer and are called `operators`. They can be used to perform calculations (with numbers) or to determine whether or not something is true (more on that in the next section).
+
+Check the following resources to learn more about their importance:
+
+- [Different Types of Operators in JavaScript](https://www.youtube.com/watch?v=FZzyij43A54)
+- [Operators](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/operators.md)
+
+## 5. Conditional statement
+
+Computers only function by logical rules: whether something is true or not determines if an instructions gets executed or not. This logical process is expressed in a `conditional statement` and goes like this: if _this happens_, then _that happens_. Or in code:
+
+```js
+if () {
+}
```
-In week two we will discuss the following topics:
-• Intro JavaScript (What is it, where can you use it for)
-• Variables [var, let, const]
-• Basic Data types [Strings, Numbers, Arrays, Booleans]
-• Operators
-• Naming conventions
-```
-## How to get started
-1. Download and install the *LTS* version of NodeJS - https://nodejs.org/en/download/
-To test that it was installed and running properly, go to your terminal and run the command: node -v You should get the node version printed on your terminal, for example, v8.9.1
-2. Although you are free to make you own choice of text/code editor to use during class and homework, we have good experiences with Microsoft's free VSCode editor, which is supported on Windows, Mac and Linux. Please refer to our [VSCode Tips](https://github.com/HackYourFuture/fundamentals/blob/master/VSCodeTips/README.md) for more information.
+A condition is put in the `( )` and it needs to evaluate to `true` or `false` (also known as Boolean values). If the condition is true, then whatever is inside the `{ }` will be executed.
+
+What happens when the condition is false? For that we have the `else { }` block. If the condition is false, then whatever is inside the else will be executed:
-## Here are resources that we like you to read as a preparation for the coming lecture:
+```js
+if() {
-Read up on the most important topics of next week:
+} else {
-[Variables (var, let, const)](http://javascript.info/variables)
+}
-[Basic Data types(Strings, Numbers, Arrays, Booleans)](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/values.md)
+```
-[Operators](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/operators.md)
+## 6. Naming conventions
-[Special characters and their names](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/names_of_special_characters.md)
+A naming convention is a rule that every developer should hold themselves to when creating variable or function names. This is important, because writing code should be done in a **readable** way: you should be able to understand what a certain variable or function does just by looking at its name.
-[Naming conventions](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/naming_conventions.md)
+Read about the different naming conventions for JavaScript here:
+- [Naming conventions](https://github.com/HackYourFuture/fundamentals/blob/master/fundamentals/naming_conventions.md)
-_Please go through the material and come to class prepared!_
+## Finished?
+Are you finished with going through the materials? You're doing great! If you feel ready to get practical, click [here](./MAKEME.md).
diff --git a/Week3/LESSONPLAN.md b/Week3/LESSONPLAN.md
new file mode 100644
index 000000000..dacd2b1dc
--- /dev/null
+++ b/Week3/LESSONPLAN.md
@@ -0,0 +1,23 @@
+# Lesson Plan Week 3
+
+## Agenda
+
+The purpose of this class is to introduce to the student (1)
+
+FIRST HALF:
+
+SECOND HALF:
+
+### Core concepts
+
+FIRST HALF (12.00 - 13.30)
+
+1.
+
+SECOND HALF (14.00 - 16.00)
+
+2.
+
+3)
+
+4.
diff --git a/Week3/MAKEME.md b/Week3/MAKEME.md
index f910a2a8b..f2e0bfd3c 100644
--- a/Week3/MAKEME.md
+++ b/Week3/MAKEME.md
@@ -1,186 +1,156 @@
-## Homework Week 3
+# Homework JavaScript1 Week 3
-```
-Topics discussed in class this week:
-• Git work flow
-• Advanced data types [Objects]
-• Conditions
-• Statements vs Expressions
-• Loops (for/while)
-• Functions
-```
+## **Todo list**
-> [Here](./../../../../JavaScript2/tree/master/Week1) you find the readings you have to complete before the first JavaScript2 lecture.
+1. Practice the concepts
+2. JavaScript exercises
+3. Code along
+4. PROJECT: Grade calculator
+5. [OPTIONAL] Extra resources
-## Step 1: Recap/Read
+## **1. Practice the concepts**
-- Have a look at [The Secret Life of JavaScript Primitives](https://javascriptweblog.wordpress.com/2010/09/27/the-secret-life-of-javascript-primitives/)
+In this section you will be doing interactive exercises that will allow you to practice with the concepts you've learned about this week.
-- Review the topics of last week:
+In the first course you'll learn about functions, the structure and how they're used. They are a fundamental part of understanding programming and you should become very familiar with them!
- - [Variables](./../../../../fundamentals/blob/master/fundamentals/variables.md)
- - [Values](./../../../../fundamentals/blob/master/fundamentals/values.md)
- - [Operators](./../../../../fundamentals/blob/master/fundamentals/operators.md)
- - [Special characters and their names](./../../../../fundamentals/blob/master/fundamentals/names_of_special_characters.md)
- - [Naming conventions](./../../../../fundamentals/blob/master/fundamentals/naming_conventions.md)
+- [Codecademy: Functions ](https://www.codecademy.com/courses/introduction-to-javascript/lessons/functions)
-- Go through the topics of this week:
- - Git work flow
- - [Advanced data types (Objects)](./../../../../fundamentals/blob/master/fundamentals/objects.md)
- - [Conditional execution](./../../../../fundamentals/blob/master/fundamentals/conditional_execution.md)
- - [Statements vs Expressions](./../../../../fundamentals/blob/master/fundamentals/statements_expressions.md)
- - [Loops (for/while)](./../../../../fundamentals/blob/master/fundamentals/loops.md)
- - [Functions](./../../../../fundamentals/blob/master/fundamentals/functions.md)
- - [Scope](./../../../../fundamentals/blob/master/fundamentals/scope.md)
+In this second course you'll learn about `higher order functions`, which we'll refer to again during the [JavaScript2](https://www.github.com/HackYourFuture/JavaScript2) module. Go through it to get familiar, but don't feel like you completely have to understand it at this point.
-## Step 2: Rover the Robot
+- [Codecademy: Higher Order Functions](https://www.codecademy.com/courses/introduction-to-javascript/lessons/higher-order-functions/)
-Go and try out this cool game: [roverjs.com](http://roverjs.com), written by one of our HYF teachers, Joost Lubach. There are different levels, see how far you can get!
+## **2. JavaScript exercises**
-## Step 3: String and Array challenges
+In the following exercises you'll practice every concept you've learned about so far in this module.
-_Deadline Wednesday_
+> Before you start, create a folder called `week2-scripts`. Inside, create 5 `.js` files, each dedicated to the exercises in this section. Make sure you give the files a name that reflects its content. For example, for exercise 1 an appropriate name would be: `giveCompliment.js`.
-> For all the following exercises create a new .js file. Try to find a proper name for each file or make a small comment about what it does inside for future reference
+**Exercise 1: You are amazing, Noer!**
-_IMPORTANT NOTE_
-In each assignment write at least two `console.log` statements to verify if your code works correctly. In other words proof that you code works as expected. If you need inspiration look at the steps defined in the assignments from last week.
+There is no better way to start your day then with a compliment!
-1\. **Strings!**
+1. Write a function named `giveCompliment`
-Consider the following string:
+- It takes 1 argument: your name
+- Inside the function create an array with 10 strings. Each string should be a compliment, like `"great"`, `"awesome"`
+- Write logic that randomly selects a compliment
+- Return a string: "You are [COMPLIMENT], [YOUR_NAME]!
-```js
-let myString = "hello,this,is,a,difficult,to,read,sentence";
-```
+2. Call the function three times, giving each function call the same argument: your name.
-1\.1 Add the string to your file and log it.
-1\.2 Log the length of `myString`.
-1\.3 The commas make that the sentence is quite hard to read. Find a way to remove the commas from the string and replace them with spaces.
-1\.4 Log `myString` to see if you succeeded.
+**Exercise 2: Dog years**
-2\. **Arrays!**
+You know how old your dog is in human years, but what about dog years? Calculate it!
-Consider the following array:
-
-```js
-let favoriteAnimals = ["blowfish", "capricorn", "giraffe"];
-```
+1. Write a function named `calculateDogAge`.
-2\.1 Add a statement that adds Mauro's favorite animal _'turtle'_ to the existing array.
-2\.2 Log your new array!
-2\.3 Now add Jim's favorite animal to the array, it's _'meerkat'_, but make sure it will be placed after _'blowfish'_ and before _'capricorn'_.
-2\.4 Write a console.log statement that explains in words _you think_ the new value of the array is.
-2\.5 Log your new array!
-2\.6 Log the length of the array, add a message: _'The array has a length of: '_ (here you should show the length of the array).
-2\.7 Jason does not like _'giraffe'_, delete this animal from the array.
-2\.8 Again log your new array.
-2\.9 Now if unlike Jim, you don't like _'meerkat'_ and you want to delete it from the array, but you don't know the position or the `index` of the item in the array, how can you find it?
-2\.10 Log the index of _'meerkat'_. Add a message so it says: _'The item you are looking for is at index: '_ (here you should show the index of the item).
+- It takes 1 argument: your puppy's age (number).
+- Calculate your dog's age based on the conversion rate of 1 human year to 7 dog years.
+- Return a string: "Your doggie is [CALCULATED_VALUE] years old in dog years!"
-## More JavaScript :tada:
+2. Call the function three times with different sets of values.
-1. Create a function that takes 3 arguments and returns the sum of the these arguments.
+**Exercise 3: Be your own fortune teller**
-2. Create a function named `colorCar` that receives a color, and prints out, _'a red car'_ for example.
+Why pay a fortune teller when you can just program your fortune yourself?
-3. Create an object and a function that takes the object as a parameter and prints out all of its properties and values.
+1. Write a function named `tellFortune`.
-4. Create a function named `vehicleType` that receives a color, and a code, 1 for car, 2 for motorbike. And prints _'a blue motorbike'_ for example when called as `vehicleType("blue", 2)`
+- It takes 4 arguments: number of children (number), partner's name (string), geographic location (string), job title (string).
+- Randomly select values from the arrays.
+- Return a string: "You will be a [JOB_TITLE] in [LOCATION], and married to [PARTNER_NAME] with [NUMBER_KIDS] kids."
-5. Can you write the following without the `if` statement, but with just as a single line with `console.log(...);`?
+2. Create 4 arrays, `numChildren`, `partnerNames`, `locations` and `jobs`. Give each array 5 random values that make sense
+3. Call the function 1 time, by passing the arrays as the argument.
- ```js
- if (3 === 3) {
- console.log("yes");
- } else {
- console.log("no");
- }
- ```
+**Exercise 4: Shopping at the supermarket**
-6. Create a function called `vehicle`, like before, but takes another parameter called `age`, so that `vehicle("blue", 1, 5)` prints _'a blue used car'_
+Let's do some grocery shopping! We're going to get some things to cook dinner with. However, you like to spend your money and always buy too many things. So when you have more than 3 items in your shopping cart the first item gets taken out.
-7. Make a list of vehicles, you can add `"motorbike"`, `"caravan"`, `"bike"`, or more.
+1. Write a function named `addToShoppingCart`.
-8. How do you get the third element from that list?
+- It takes in 1 argument: a grocery item (string)
+- Add grocery item to array. If the amount of items is more than 3 remove the first one in the array
+- Return a string: "You bought [LIST_OF_GROCERY_ITEMS]!"
-9. Change the function `vehicle` to use the list of question 7. So that `vehicle("green", 3, 1)` prints "a green new bike".
- > Hint, it should use the `code` to get the value from the list. So `vehicle("green", 2, 1)` prints "a green new caravan".
+2. Create an array with 2 predefined strings: `"bananas"` and `"milk"`
+3. Call the function 3 times, each time with a different string as the argument.
-10. Use the list of vehicles to write an advertisement. So that it prints something like: `"Amazing Joe's Garage, we service cars, motorbikes, caravans and bikes."`. (Hint: use a `for` loop.)
+**Exercise 5: Total cost is ...**
- > Hint, the output should be correct English with all the punctuation in place (that's the challenge). So plurals for the vehicle types, commas followed by a single space, the word and to replace the final comma and closed off by a period.
+You want to buy a couple of things from the supermarket to prepare for a party. After scanning all the items the cashier gives you the total price, but the machine a broken! Let's write her a function that does it for her instead!
-11. What if you add one more vehicle to the list, can you have that added to the advertisement without changing the code for question 10?
+1. Write a function called `calculateTotalPrice`
-12. Create an empty object.
+- It takes 1 argument: an object that contains properties that only contain number values
+- Add all the number values together
+- Return a number: the total price of all items
-13. Create an object that contains the teachers that you have had so far for the different modules.
+2. Create an object named `cartForParty` with 5 properties. Each property should be a grocery item (like `beers` or `chips`) and hold a number value (like `1.75` or `0.99`)
+3. Call the function 1 time, giving it the object `cartForParty` as an argument
-14. Add a property to the object you just created that contains the languages that they have taught you.
+## **3. Code along**
-15. Write some code to test two arrays for equality using `==` and `===`. Test the following:
+In this project you'll be building a simple meditation application, that will allow you to set a timer, loop a video and play a song!
- ```js
- let x = [1, 2, 3];
- let y = [1, 2, 3];
- let z = y;
- ```
+You'll be working with the