+
+
+
+
+
+
\ No newline at end of file
diff --git "a/class-17-js-review/alir\304\261za-yesim-js-review/script.js" "b/class-17-js-review/alir\304\261za-yesim-js-review/script.js"
new file mode 100644
index 0000000..bf12df2
--- /dev/null
+++ "b/class-17-js-review/alir\304\261za-yesim-js-review/script.js"
@@ -0,0 +1,192 @@
+// Q1: Write a variable that fetches the data from bootcamp.json and uses `await` to store it. We didn't learn await; you will have to practice your Google skills to look up an example (it's similar to .then()).
+// To be clear:
+// * jsonResult is not a function. When you console.log it, it should be an object
+// * it should not depend on any variables outside of scope
+// * it should not modify any other variables
+//
+// Every question after question 1 should look something like:
+// jsonResult.map(), jsonResult.filter(), etc.
+// const jsonResult = <>;
+
+const fetchData = async (path) => {
+
+ let response = await fetch(path);
+ let jsonResult = await response.json();
+ // const jsonStudents = await jsonResult.students;
+ return jsonResult;
+
+};
+
+fetchData("bootcamp.json");
+
+
+
+
+// Q2: Using map(), write a function that returns a new array with the students' first names with "-" before each one and displays it in the div with ID "studentsFirstName".
+
+const displayFirstNames = async (path) => {
+
+ let json = await fetchData(path);
+ let students = await json.students;
+
+ let firstNames = await students.map(function(student) {
+
+ let splittedName = student.split(" ");
+ return "-" + splittedName[0] ;
+ });
+
+ let div = document.getElementById("studentsFirstName");
+ firstNames.forEach(function(studentName) {
+
+ if (firstNames.indexOf(studentName) === 0) { //if it is first..
+ div.innerText = studentName + ",";
+ }
+ else if (firstNames.indexOf(studentName) === firstNames.length -1) { //if it is last...
+ div.innerText += studentName + ".";
+ }
+ else { //if it is not first or last...
+ div.innerText += " " + studentName + "," + " ";
+ }
+ })
+
+};
+
+ displayFirstNames("bootcamp.json");
+
+
+
+
+// Q3: Using filter(), write a function that returns an array with students' names that starts with the letter 'm' and display it in the div with ID "studentsNamesStartWthM".
+
+const displayTheNamesStartingWithM = async (path) => {
+
+ let json = await fetchData(path);
+ let students = await json.students;
+
+ let selectedStudents = students.filter(student => student[0] === "M" || student[0] === "m")
+ console.log(selectedStudents);
+ let div = document.getElementById("studentsNamesStartWthM");
+
+ selectedStudents.forEach(function(student) {
+
+ if (selectedStudents.indexOf(student) === 0) { //if it is the first...
+ div.innerText = student + "," + " ";
+ }
+ else if (selectedStudents.indexOf(student) === selectedStudents.length - 1) { //if it is the last...
+ div.innerText += " " + student + ".";
+ }
+ else {
+ div.innerText += " " + student + "," + " ";
+ }
+ });
+};
+
+// displayTheNamesStartingWithM("bootcamp.json");
+
+
+
+// Q4: Using reduce(), Write a function that returns the number of students that their first name start with the letter 'a' using reduce and display it in div with ID "NumberOfStudentsNamesStartsWithA"
+
+const displayNumber = async(path) => {
+
+ let json = await fetchData(path);
+ let students = await json.students;
+ let number = await students.reduce( (accumulator, currentStudent) => {
+
+ if (currentStudent[0] === "a" || currentStudent[0] === "A") {
+ console.log(++accumulator);
+ return accumulator;
+ }
+
+ return accumulator;
+ }, 0);
+
+ let div = document.getElementById("NumberOfStudentsNamesStartsWithA");
+ div.innerText = number;
+};
+
+// displayNumber("bootcamp.json");
+
+
+
+// Q5: Write a function that returns the index of the first student name that starts with the letter 'h' and display it in the div with ID "IndexOfFirstStudentNameStartsWithH".
+
+const displayTheNamesStartingWithH = async (path) => {
+
+ let json = await fetchData(path);
+ let students = await json.students;
+
+ let selectedStudents = students.filter(student => student[0] === "H" || student[0] === "h")
+
+ let div = document.getElementById("IndexOfFirstStudentNameStartsWithH");
+ div.innerText = students.indexOf(selectedStudents[0]) + " ";
+
+};
+
+ displayTheNamesStartingWithH("bootcamp.json");
+
+
+// Q6: Write a function that adds the instructors array to the beginning of the students array and returns a new array called everybody.
+// 1) Console log the new array
+// 2) Use a spread operator to achieve this
+
+// const whatever = async(path) => {
+
+// let json = await fetchData(path);
+
+// let instructors = json.instructors;
+// let students = json.students;
+// let result = [...instructors, ...students]
+// console.log(result);
+
+// return result;
+// };
+
+// whatever("bootcamp.json");
+
+
+
+// Q7: Write a function to update the key: "title" to the value "Re:Coded Istanbul Bootcamp" to the object that you fetched in Q1.
+// Did this modify the JSON file? Why or why not?
+
+// const changeTheTitle = async (path) => {
+
+// let json = await fetchData(path);
+// json.title = "Re:Coded Istanbul Bootcamp";
+// console.log(json);
+
+// let anotherJson = await fetchData(path);
+// console.log(anotherJson);
+
+// }
+
+// changeTheTitle("bootcamp.json");
+//This doesn't modify the JSON file because we manipulated the fetched data not the source one.Because we are using the HTTP GET request we are just retrieving the data from server. But if we want to change the data in server, we need to use the HTTP POST request to achieve that.
+
+
+
+// Q8: Write a function to add the key: "program manager" and the value "Jaime Mikush" to the object that you fetched in Q1.
+
+// const addJamieAsManager = async(path) => {
+
+// let json = await fetchData(path);
+// json["program manager"] = "Jaime Mikush";
+// console.log(json);
+
+// };
+
+// addJamieAsManager("bootcamp.json");
+
+
+
+// Q9: Print the object that you fetched in Q1.
+
+const print = async (path) => {
+
+ let json = await fetchData(path);
+ console.log(json);
+}
+
+ print("bootcamp.json");
+
+// good luck 😈
\ No newline at end of file
diff --git "a/class-17-js-review/alir\304\261za-yesim-js-review/style.css" "b/class-17-js-review/alir\304\261za-yesim-js-review/style.css"
new file mode 100644
index 0000000..b394de4
--- /dev/null
+++ "b/class-17-js-review/alir\304\261za-yesim-js-review/style.css"
@@ -0,0 +1,7 @@
+body {
+ background-color: antiquewhite;
+}
+
+h3 {
+ background-color: cadetblue;
+}
\ No newline at end of file
diff --git a/madLibz/yesim-mustafa-madlibs/README.md b/madLibz/yesim-mustafa-madlibs/README.md
new file mode 100644
index 0000000..667287d
--- /dev/null
+++ b/madLibz/yesim-mustafa-madlibs/README.md
@@ -0,0 +1,59 @@
+# Re:Coded Mad Libz
+
+## What is Mad Libs?
+See [wikipedia](https://en.wikipedia.org/wiki/Mad_Libs). Yes, I know this section is short, do not skip this, **please read what Mad Libs is or the rest of this will make no sense**. In normal mad libs, you usually just insert the word, but in this version, it's more like a "fill in the blank" of an existing story.
+
+## Instructions
+
+### Collaboration requirements
+Please don't split the code. Write every line of code together. In each group, every person should understand every line of code. See [pair programming](Pair_programming).
+
+### Write a story
+
+In `story.txt`, you'll find a brief story **that you need to replace with your own**. By the way, for the purposes of [parsing](https://en.wikipedia.org/wiki/Parsing), you're only allowed to use periods and commas as grammar.
+
+Confusingly, you should write out the full story, although the "blanks" will be anywhere a grammar part is denoted. The reason for this will be apparent later in some of the extra challenges.
+
+For example:
+* `Louis[n]`: normally it says Louis, but the user should replace it with a *noun*
+* `went[v]`: normally it says went, but the user should replace it with a *verb*
+* `[a]` for adjective...
+
+Note that when you write a story, the period and commas should go after the part of speech, e.g., `Louis[n].` (NOT `Louis.[n]`).
+
+### Code
+
+In this project, you will be using HTML, CSS, and JS in unison in order to create a variant of a Mad Libs game with the story of your choice.
+
+Below, we discuss the requirements. We use the word "input" to refer to the blanks in the Mad Libs story.
+
+Here is a very, very simple visual example of what it might look like; however, all styling is at your liberty in this project.
+
+### Barebones Example
+![Example](https://i.imgur.com/ZRNvFC7.png)
+
+#### Functional requirements
+
+0. **Parsing the story:** I've already written some code for you that reads in the file `story.txt` into a string. However, you need to process it into a format that will allow you to keep track of "blanks." See `madlibs.js` for further instructions. You will likely want to [read about regular expressions](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/regular-expressions/) (yes, this is extra expected reading :) ). It's possible, but annoying, to do this without regular expressions.
+
+1. **Showing the story:** It should show **two copies** of the story. In one copy ("edit view"),
+all words in the story with blanks (e.g., `Louis[n]`, `went[v]`, ...) are replaced with inputs. This should be in `div.madLibsEdit`. In the second copy ("preview"), it should show the same story, but formatted prettily (without the blanks!). Refer to the example picture above.
+
+2. **Hotkeys:** When the user presses `Enter` in an input, it should move the cursor to the next input in the story.
+
+3. **Constraining user inputs:** An input should be allowed to have a maximum of 20 characters.
+
+4. **Live update:** Whenever the user updates a blank in the edit view, it should update the preview any time a new character is typed (hint: this is handling an event of sorts). The user should **not** have to click a button in order to update the preview.
+
+5. **Story length:** Your story should have at least 10 blanks.
+
+#### Styling requirements
+
+0. **Responsiveness**: When the screen is small, the story should take the full width of the screen. When the screen is larger, as on a computer. Values "small" and "large" are up to you to decide.
+
+1. **Flexbox**: Use at least one flexbox.
+
+2. **Highlighting currently focused input**: There should be three possible styles of inputs (style is a vague word here, they just need to be distinguishable to the user):
+* currently highlighted input (if the user is typing in one)
+* filled out input (the user has already put a word there -- might require JS here ;) )
+* empty input (the user has not already put a word there).
\ No newline at end of file
diff --git a/madLibz/yesim-mustafa-madlibs/do-not-touch.js b/madLibz/yesim-mustafa-madlibs/do-not-touch.js
new file mode 100644
index 0000000..f61cee3
--- /dev/null
+++ b/madLibz/yesim-mustafa-madlibs/do-not-touch.js
@@ -0,0 +1,9 @@
+/**
+ * DO NOT TOUCH ANY OF THE CODE BELOW HERE.
+ *
+ * Or you will be very sad.
+ */
+const getRawStory = () => {
+ return fetch('./story.txt')
+ .then(response => response.text());
+};
\ No newline at end of file
diff --git a/madLibz/yesim-mustafa-madlibs/index.html b/madLibz/yesim-mustafa-madlibs/index.html
new file mode 100644
index 0000000..6059df2
--- /dev/null
+++ b/madLibz/yesim-mustafa-madlibs/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+ repl.it
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/madLibz/yesim-mustafa-madlibs/madlibs.js b/madLibz/yesim-mustafa-madlibs/madlibs.js
new file mode 100644
index 0000000..097a009
--- /dev/null
+++ b/madLibz/yesim-mustafa-madlibs/madlibs.js
@@ -0,0 +1,138 @@
+/**
+ * Complete the implementation of parseStory.
+ *
+ * parseStory retrieves the story as a single string from story.txt
+ * (I have written this part for you).
+ *
+ * In your code, you are required (please read this carefully):
+ * - to return a list of objects
+ * - each object should definitely have a field, `word`
+ * - each object should maybe have a field, `pos` (part of speech)
+ *
+ * So for example, the return value of this for the example story.txt
+ * will be an object that looks like so (note the comma! periods should
+ * be handled in the same way).
+ *
+ * Input: "Louis[n] went[v] to the store[n], and it was fun[a]."
+ * Output: [
+ * { word: "Louis", pos: "noun" },
+ * { word: "went", pos: "verb", },
+ * { word: "to", },
+ * { word: "the", },
+ * { word: "store", pos: "noun" }
+ * { word: "," }
+ * ....
+ *
+ * There are multiple ways to do this, but you may want to use regular expressions.
+ * Please go through this lesson: https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/regular-expressions/
+ */
+function parseStory(rawStory) {
+ let outputStory = [];
+
+ let storySplit = rawStory.split(' ');
+ for (let i=0;i < storySplit.length;i++){
+ let storyObject = {};
+
+ if (storySplit[i].includes ('[a]')) {
+ storyObject.word = storySplit[i].split('[a]')[0];
+ storyObject.pos = 'adjective';
+
+}
+ else if (storySplit[i].includes ('[v]')) {
+ storyObject.word = storySplit[i].split('[v]')[0];
+ storyObject.pos = 'verb';
+}
+ else if (storySplit[i].includes ('[n]')) {
+ storyObject.word = storySplit[i].split('[n]')[0];
+ storyObject.pos = 'noun';
+} else if (storySplit[i].includes (".")) {
+ storyObject.word = ".";
+} else if (storySplit[i].includes ("!")) {
+ storyObject.word = "!";
+}
+ else {
+ storyObject.word = storySplit[i];
+}
+
+outputStory.push(storyObject);
+
+}
+
+return outputStory;
+
+}
+
+
+
+/**
+ * All your other JavaScript code goes here, inside the function. Don't worry about
+ * the `then` and `async` syntax for now.
+ *
+ * You'll want to use the results of parseStory() to display the story on the page.
+ */
+getRawStory().then(parseStory).then((processedStory) => {
+const previewDiv = document.getElementsByClassName('madLibsPreview')[0];
+const editDiv = document.getElementsByClassName('madLibsEdit')[0];
+for(i=0; i {
+ if (i != (inputs.length - 1) && e.code === 'Enter') inputs[i+1].focus();
+ //inputs.style.backgroundColor = "black";
+ });
+ }
+
+
+ }
+ else {
+
+ const span = document.createElement('span');
+ const spantwo = document.createElement('span');
+ span.innerText= processedStory[i].word;
+ spantwo.innerText= processedStory[i].word;
+ previewDiv.appendChild(span);
+ editDiv.appendChild(spantwo);
+ }
+const space = document.createElement('span');
+space.innerText= " ";
+const space2 = document.createElement('span');
+space2.innerText= " ";
+ previewDiv.appendChild(space);
+ editDiv.appendChild(space2);
+}
+ console.log(processedStory);
+});
+
+
+// function validatefilledIn() {
+// //let arr = document.getElementsByName('input');
+// for(let i=0; i