continue fleshing out waypoints
This commit is contained in:
219
seed_data/challenges/advanced-bonfires.json
Normal file
219
seed_data/challenges/advanced-bonfires.json
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
{
|
||||||
|
"name": "Advanced Bonfires",
|
||||||
|
"order" : 0.007,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"_id": "aff0395860f5d3034dc0bfc9",
|
||||||
|
"name": "Bonfire: Validate US Telephone Numbers",
|
||||||
|
"difficulty": "4.01",
|
||||||
|
"description": [
|
||||||
|
"Return true if the passed string is a valid US phone number",
|
||||||
|
"The user may fill out the form field any way they choose as long as it is a valid US number. The following are all valid formats for US numbers:",
|
||||||
|
"555-555-5555, (555)555-5555, (555) 555-5555, 555 555 5555, 5555555555, 1 555 555 5555",
|
||||||
|
"For this challenge you will be presented with a string such as \"800-692-7753\" or \"8oo-six427676;laskdjf\". Your job is to validate or reject the US phone number based on any combination of the formats provided above. The area code is required. If the country code is provided, you must confirm that the country code is \"1\". Return true if the string is a valid US phone number; otherwise false.",
|
||||||
|
"Remember to use <a href='/field-guide/how-do-i-get-help-when-I-get-stuck'>RSAP</a> if you get stuck. Try to pair program. Write your own code."
|
||||||
|
],
|
||||||
|
"tests": [
|
||||||
|
"expect(telephoneCheck(\"555-555-5555\")).to.be.a(\"boolean\");",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"1 555-555-5555\"), true);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"1 (555) 555-5555\"), true);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"5555555555\"), true);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"555-555-5555\"), true);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"(555)555-5555\"), true);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"1(555)555-5555\"), true);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"1 555 555 5555\"), true);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"555-555-5555\"), true);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"1 456 789 4444\"), true);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"123**&!!asdf#\"), false);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"55555555\"), false);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"(6505552368)\"), false);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"2 (757) 622-7382\"), false);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"0 (757) 622-7382\"), false);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"-1 (757) 622-7382\"), false);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"2 757 622-7382\"), false);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"10 (757) 622-7382\"), false);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"27576227382\"), false);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"(275)76227382\"), false);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"2(757)6227382\"), false);",
|
||||||
|
"assert.deepEqual(telephoneCheck(\"2(757)622-7382\"), false);"
|
||||||
|
],
|
||||||
|
"challengeSeed": [
|
||||||
|
"function telephoneCheck(str) {",
|
||||||
|
" // Good luck!",
|
||||||
|
" return true;",
|
||||||
|
"}",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"telephoneCheck(\"555-555-5555\");"
|
||||||
|
],
|
||||||
|
"MDNlinks" : ["RegExp"],
|
||||||
|
"challengeType": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "a3f503de51cf954ede28891d",
|
||||||
|
"name": "Bonfire: Symmetric Difference",
|
||||||
|
"difficulty": "4.02",
|
||||||
|
"description": [
|
||||||
|
"Create a function that takes two or more arrays and returns an array of the symmetric difference of the provided arrays.",
|
||||||
|
"The mathematical term symmetric difference refers to the elements in two sets that are in either the first or second set, but not in both.",
|
||||||
|
"Remember to use <a href='/field-guide/how-do-i-get-help-when-I-get-stuck'>RSAP</a> if you get stuck. Try to pair program. Write your own code."
|
||||||
|
],
|
||||||
|
"challengeSeed": [
|
||||||
|
"function sym(args) {",
|
||||||
|
" return arguments;",
|
||||||
|
"}",
|
||||||
|
"",
|
||||||
|
"sym([1, 2, 3], [5, 2, 1, 4]);"
|
||||||
|
],
|
||||||
|
"tests": [
|
||||||
|
"expect(sym([1, 2, 3], [5, 2, 1, 4])).to.eqls([3, 5, 4])",
|
||||||
|
"assert.deepEqual(sym([1, 2, 5], [2, 3, 5], [3, 4, 5]), [1, 4, 5], 'should return the symmetric difference of the given arrays');",
|
||||||
|
"assert.deepEqual(sym([1, 1, 2, 5], [2, 2, 3, 5], [3, 4, 5, 5]), [1, 4, 5], 'should return an array of unique values');",
|
||||||
|
"assert.deepEqual(sym([1, 1]), [1], 'should return an array of unique values');"
|
||||||
|
],
|
||||||
|
"MDNlinks" : ["Array.reduce()"],
|
||||||
|
"challengeType": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "aa2e6f85cab2ab736c9a9b24",
|
||||||
|
"name": "Bonfire: Cash Register",
|
||||||
|
"difficulty": "4.03",
|
||||||
|
"description": [
|
||||||
|
"Design a cash register drawer function that accepts purchase price as the first argument, payment as the second argument, and cash-in-drawer (cid) as the third argument.", "cid is a 2d array listing available currency.", "Return the string \"Insufficient Funds\" if cash-in-drawer is less than the change due. Return the string \"Closed\" if cash-in-drawer is equal to the change due.", "Otherwise, return change in coin and bills, sorted in highest to lowest order.",
|
||||||
|
"Remember to use <a href='/field-guide/how-do-i-get-help-when-I-get-stuck'>RSAP</a> if you get stuck. Try to pair program. Write your own code."
|
||||||
|
],
|
||||||
|
"challengeSeed": [
|
||||||
|
"function drawer(price, cash, cid) {",
|
||||||
|
" var change;",
|
||||||
|
" // Here is your change, ma'am.",
|
||||||
|
" return change;",
|
||||||
|
"}",
|
||||||
|
"",
|
||||||
|
"// Example cash-in-drawer array:",
|
||||||
|
"// [['PENNY', 1.01],",
|
||||||
|
"// ['NICKEL', 2.05],",
|
||||||
|
"// ['DIME', 3.10],",
|
||||||
|
"// ['QUARTER', 4.25],",
|
||||||
|
"// ['ONE', 90.00],",
|
||||||
|
"// ['FIVE', 55.00],",
|
||||||
|
"// ['TEN', 20.00],",
|
||||||
|
"// ['TWENTY', 60.00],",
|
||||||
|
"// ['ONE HUNDRED', 100.00]]",
|
||||||
|
"",
|
||||||
|
"drawer(19.50, 20.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]]);"
|
||||||
|
],
|
||||||
|
"tests": [
|
||||||
|
"expect(drawer(19.50, 20.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]])).to.be.a('array');",
|
||||||
|
"expect(drawer(19.50, 20.00, [['PENNY', 0.01], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]])).to.be.a('string');",
|
||||||
|
"expect(drawer(19.50, 20.00, [['PENNY', 0.50], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]])).to.be.a('string');",
|
||||||
|
"assert.deepEqual(drawer(19.50, 20.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]]), [['QUARTER', 0.50]], 'return correct change');",
|
||||||
|
"assert.deepEqual(drawer(3.26, 100.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]]), [['TWENTY', 60.00], ['TEN', 20.00], ['FIVE', 15], ['ONE', 1], ['QUARTER', 0.50], ['DIME', 0.20], ['PENNY', 0.04] ], 'return correct change with multiple coins and bills');",
|
||||||
|
"assert.deepEqual(drawer(19.50, 20.00, [['PENNY', 0.01], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]]), 'Insufficient Funds', 'insufficient funds');",
|
||||||
|
"assert.deepEqual(drawer(19.50, 20.00, [['PENNY', 0.50], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]]), \"Closed\", 'cash-in-drawer equals change');"
|
||||||
|
],
|
||||||
|
"MDNlinks" : ["Global Object"],
|
||||||
|
"challengeType": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "a56138aff60341a09ed6c480",
|
||||||
|
"name": "Bonfire: Inventory Update",
|
||||||
|
"difficulty": "4.04",
|
||||||
|
"description": [
|
||||||
|
"Compare and update inventory stored in a 2d array against a second 2d array of a fresh delivery. Update current inventory item quantity, and if an item cannot be found, add the new item and quantity into the inventory array in alphabetical order.",
|
||||||
|
"Remember to use <a href='/field-guide/how-do-i-get-help-when-I-get-stuck'>RSAP</a> if you get stuck. Try to pair program. Write your own code."
|
||||||
|
],
|
||||||
|
"challengeSeed": [
|
||||||
|
"function inventory(arr1, arr2) {",
|
||||||
|
" // All inventory must be accounted for or you're fired!",
|
||||||
|
" return arr1;",
|
||||||
|
"}",
|
||||||
|
"",
|
||||||
|
"// Example inventory lists",
|
||||||
|
"var curInv = [",
|
||||||
|
" [21, 'Bowling Ball'],",
|
||||||
|
" [2, 'Dirty Sock'],",
|
||||||
|
" [1, 'Hair Pin'],",
|
||||||
|
" [5, 'Microphone']",
|
||||||
|
"];",
|
||||||
|
"",
|
||||||
|
"var newInv = [",
|
||||||
|
" [2, 'Hair Pin'],",
|
||||||
|
" [3, 'Half-Eaten Apple'],",
|
||||||
|
" [67, 'Bowling Ball'],",
|
||||||
|
" [7, 'Toothpaste']",
|
||||||
|
"];",
|
||||||
|
"",
|
||||||
|
"inventory(curInv, newInv);"
|
||||||
|
],
|
||||||
|
"tests": [
|
||||||
|
"expect(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']])).to.be.a('array');",
|
||||||
|
"assert.equal(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']]).length, 6);",
|
||||||
|
"assert.deepEqual(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']]), [[88, 'Bowling Ball'], [2, 'Dirty Sock'], [3, 'Hair Pin'], [3, 'Half-Eaten Apple'], [5, 'Microphone'], [7, 'Toothpaste']]);",
|
||||||
|
"assert.deepEqual(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']], []), [[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']]);",
|
||||||
|
"assert.deepEqual(inventory([], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']]), [[67, 'Bowling Ball'], [2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [7, 'Toothpaste']]);",
|
||||||
|
"assert.deepEqual(inventory([[0, 'Bowling Ball'], [0, 'Dirty Sock'], [0, 'Hair Pin'], [0, 'Microphone']], [[1, 'Hair Pin'], [1, 'Half-Eaten Apple'], [1, 'Bowling Ball'], [1, 'Toothpaste']]), [[1, 'Bowling Ball'], [0, 'Dirty Sock'], [1, 'Hair Pin'], [1, 'Half-Eaten Apple'], [0, 'Microphone'], [1, 'Toothpaste']]);"
|
||||||
|
],
|
||||||
|
"MDNlinks" : ["Global Array Object"],
|
||||||
|
"challengeType": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "a7bf700cd123b9a54eef01d5",
|
||||||
|
"name": "Bonfire: No repeats please",
|
||||||
|
"difficulty": "4.05",
|
||||||
|
"description": [
|
||||||
|
"Return the number of total permutations of the provided string that don't have repeated consecutive letters.",
|
||||||
|
"For example, 'aab' should return 2 because it has 6 total permutations, but only 2 of them don't have the same letter (in this case 'a') repeating.",
|
||||||
|
"Remember to use <a href='/field-guide/how-do-i-get-help-when-I-get-stuck'>RSAP</a> if you get stuck. Try to pair program. Write your own code."
|
||||||
|
],
|
||||||
|
"challengeSeed": [
|
||||||
|
"function permAlone(str) {",
|
||||||
|
" return str;",
|
||||||
|
"}",
|
||||||
|
"",
|
||||||
|
"permAlone('aab');"
|
||||||
|
],
|
||||||
|
"tests": [
|
||||||
|
"expect(permAlone('aab')).to.be.a.number;",
|
||||||
|
"expect(permAlone('aab')).to.equal(2);",
|
||||||
|
"expect(permAlone('aaa')).to.equal(0);",
|
||||||
|
"expect(permAlone('aabb')).to.equal(8);",
|
||||||
|
"expect(permAlone('abcdefa')).to.equal(3600);",
|
||||||
|
"expect(permAlone('abfdefa')).to.equal(2640);",
|
||||||
|
"expect(permAlone('zzzzzzzz')).to.equal(0);"
|
||||||
|
],
|
||||||
|
"MDNlinks" : ["Permutations", "RegExp"],
|
||||||
|
"challengeType": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "a19f0fbe1872186acd434d5a",
|
||||||
|
"name": "Bonfire: Friendly Date Ranges",
|
||||||
|
"difficulty": "4.06",
|
||||||
|
"description": [
|
||||||
|
"Implement a way of converting two dates into a more friendly date range that could be presented to a user.",
|
||||||
|
"It must not show any redundant information in the date range.",
|
||||||
|
"For example, if the year and month are the same then only the day range should be displayed.",
|
||||||
|
"Secondly, if the starting year is the current year, and the ending year can be inferred by the reader, the year should be omitted.",
|
||||||
|
"Input date is formatted as YYYY-MM-DD",
|
||||||
|
"Remember to use <a href='/field-guide/how-do-i-get-help-when-I-get-stuck'>RSAP</a> if you get stuck. Try to pair program. Write your own code."
|
||||||
|
],
|
||||||
|
"challengeSeed": [
|
||||||
|
"function friendly(str) {",
|
||||||
|
" return str;",
|
||||||
|
"}",
|
||||||
|
"",
|
||||||
|
"friendly(['2015-07-01', '2015-07-04']);"
|
||||||
|
],
|
||||||
|
"tests": [
|
||||||
|
"assert.deepEqual(friendly(['2015-07-01', '2015-07-04']), ['July 1st','4th'], 'ending month should be omitted since it is already mentioned');",
|
||||||
|
"assert.deepEqual(friendly(['2015-12-01', '2016-02-03']), ['December 1st','February 3rd'], 'one month apart can be inferred it is the next year');",
|
||||||
|
"assert.deepEqual(friendly(['2015-12-01', '2017-02-03']), ['December 1st, 2015','February 3rd, 2017']);",
|
||||||
|
"assert.deepEqual(friendly(['2016-03-01', '2016-05-05']), ['March 1st','May 5th, 2016']);",
|
||||||
|
"assert.deepEqual(friendly(['2017-01-01', '2017-01-01']), ['January 1st, 2017'], 'since we do not duplicate only return once');",
|
||||||
|
"assert.deepEqual(friendly(['2022-09-05', '2023-09-04']), ['September 5th, 2022','September 4th, 2023']);"
|
||||||
|
],
|
||||||
|
"MDNlinks": ["String.split()", "String.substr()", "parseInt()"],
|
||||||
|
"challengeType": 5
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Bonfires",
|
"name": "Basic Bonfires",
|
||||||
"order" : 0.007,
|
"order" : 0.007,
|
||||||
"challenges": [
|
"challenges": [
|
||||||
{
|
{
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Waypoint: Basic JavaScript",
|
"name": "Basic JavaScript",
|
||||||
"order" : 0.006,
|
"order" : 0.006,
|
||||||
"challenges": [
|
"challenges": [
|
||||||
{
|
{
|
||||||
@ -125,7 +125,14 @@
|
|||||||
"It's time to learn the most powerful tool your browser has - the Development Tools!",
|
"It's time to learn the most powerful tool your browser has - the Development Tools!",
|
||||||
"If you aren't already using Chrome, you'll want to download it here: <a href='http://www.google.com/chrome/' target='_blank'>http://www.google.com/chrome/</a>. While it's true that Firefox has a tool called Firebug that is very similar to Chrome's DevTools, we will use Chrome for this challenge.",
|
"If you aren't already using Chrome, you'll want to download it here: <a href='http://www.google.com/chrome/' target='_blank'>http://www.google.com/chrome/</a>. While it's true that Firefox has a tool called Firebug that is very similar to Chrome's DevTools, we will use Chrome for this challenge.",
|
||||||
"Note that this course, jointly produced by Google and Code School, is technologically impressive, but occasionally buggy. If you encounter a bug, just ignore it and keep going.",
|
"Note that this course, jointly produced by Google and Code School, is technologically impressive, but occasionally buggy. If you encounter a bug, just ignore it and keep going.",
|
||||||
"Go to <a href='http://discover-devtools.codeschool.com' target='_blank'>http://discover-devtools.codeschool.com</a> and complete this short course."
|
"Go to <a href='http://discover-devtools.codeschool.com' target='_blank'>http://discover-devtools.codeschool.com</a>.",
|
||||||
|
"Complete \"Chapter 1: Getting Started & Basic DOM and Styles\".",
|
||||||
|
"Complete \"Chapter 2: Advanced DOM and Styles\".",
|
||||||
|
"Complete \"Chapter 3: Working with the Console\".",
|
||||||
|
"Complete \"Chapter 4: Debugging JavaScript\".",
|
||||||
|
"Complete \"Chapter 5: Improving Network Performance\".",
|
||||||
|
"Complete \"Chapter 6: Improving Performance\".",
|
||||||
|
"Complete \"Chapter 7: Memory Profiling\".",
|
||||||
],
|
],
|
||||||
"challengeType": 2,
|
"challengeType": 2,
|
||||||
"tests": [],
|
"tests": [],
|
||||||
@ -138,9 +145,17 @@
|
|||||||
"challengeSeed": "112547802",
|
"challengeSeed": "112547802",
|
||||||
"description": [
|
"description": [
|
||||||
"You can use a Regular Expression, or \"Regex\", to select specific types of characters in text.",
|
"You can use a Regular Expression, or \"Regex\", to select specific types of characters in text.",
|
||||||
"Check out <a href='http://www.regexr.com' target='_blank'>http://www.regexr.com</a>. It's a Regular Expression Sandbox.",
|
"Check out <a href='http://www.regexr.com' target='_blank'>http://www.regexr.com</a>. It's a Regular Expression Sandbox for experimenting with Regular Expressions.",
|
||||||
"Now go to <a href='http://www.regexone.com' target='_blank'>http://www.regexone.com</a> and complete the tutorial and exercises 1 - 6.",
|
"Now go to <a href='http://www.regexone.com' target='_blank'>http://www.regexone.com</a>.",
|
||||||
"Note that you can click \"continue\" to move on to the next step as soon as all the tasks have green check marks beside them. You can often do this just by using the wildcard \"dot\" operator, but try to use the techniques that each lesson recommends."
|
"Note that you can click \"continue\" to move on to the next step as soon as all the tasks have green check marks beside them. You can often do this just by using the wildcard \"dot\" operator, but try to use the techniques that each lesson recommends.",
|
||||||
|
"Complete \"Complete the 15-lesson tutorial\"",
|
||||||
|
"Complete \"Complete Practical Example 1: Matching a scientific or decimal number\"",
|
||||||
|
"Complete \"Complete Practical Example 2: Matching phone numbers\"",
|
||||||
|
"Complete \"Complete Practical Example 3: Matching emails\"",
|
||||||
|
"Complete \"Complete Practical Example 4: Matching HTML\"",
|
||||||
|
"Complete \"Complete Practical Example 5: Matching specific filenames\"",
|
||||||
|
"Complete \"Complete Practical Example 6: Trimming whitespace from start and end of line\"",
|
||||||
|
"Once you've completed these challenges, move on to our next Waypoint."
|
||||||
],
|
],
|
||||||
"challengeType": 2,
|
"challengeType": 2,
|
||||||
"tests": [],
|
"tests": [],
|
||||||
@ -156,7 +171,7 @@
|
|||||||
"Pair Programming is where two people code together on the same computer. It is an efficient way to collaborate, and widely practiced at software companies. Pair Programming is one of the core concepts of \"Agile\" Software Development, which you will hear more about later.",
|
"Pair Programming is where two people code together on the same computer. It is an efficient way to collaborate, and widely practiced at software companies. Pair Programming is one of the core concepts of \"Agile\" Software Development, which you will hear more about later.",
|
||||||
"Many people use Skype or Google Hangouts to pair program, but if you talk with professional software engineers, they will tell you that it's not really pair programming unless both people have the ability to use the keyboard and mouse.",
|
"Many people use Skype or Google Hangouts to pair program, but if you talk with professional software engineers, they will tell you that it's not really pair programming unless both people have the ability to use the keyboard and mouse.",
|
||||||
"The most popular tool for pair programming is Screen Hero. You can download Screen Hero for <a href='http://links.screenhero.com/e/c/eyJlbWFpbF9pZCI6Ik1qQTNNem9XQkNJQ1pBQUNjd0FYQVZrVEdnRkxNamtfX0JWZEdGVEpSZkVCWlRwbFpXRTBNamM0WVMxaE56SmlMVEV4WlRRdE9HUXpZUzFpWXpVNE1HRTJNalkxTldNNk1UUTJNVEEyQUE9PSIsInBvc2l0aW9uIjowLCJocmVmIjoiaHR0cDovL2RsLnNjcmVlbmhlcm8uY29tL3NtYXJ0ZG93bmxvYWQvZklYQU1UUUJBTEtQQkhQTC9TY3JlZW5oZXJvLnppcD9zb3VyY2U9d2ViIn0=' target='_blank'>Mac</a> or <a href='http://links.screenhero.com/e/c/eyJlbWFpbF9pZCI6Ik1qQTNNem9XQkNJQ1pBQUNjd0FYQVZrVEdnRkxNamtfX0JWZEdGVEpSZkVCWlRwbFpXRTBNamM0WVMxaE56SmlMVEV4WlRRdE9HUXpZUzFpWXpVNE1HRTJNalkxTldNNk1UUTJNVEEyQUE9PSIsInBvc2l0aW9uIjoxLCJocmVmIjoiaHR0cDovL2RsLnNjcmVlbmhlcm8uY29tL3NtYXJ0ZG93bmxvYWQvZklYQU1UUUJBTEtQQkhQTC9TY3JlZW5oZXJvLXNldHVwLmV4ZSJ9' target='_blank'>Windows</a>. Create your new user account from within the app.",
|
"The most popular tool for pair programming is Screen Hero. You can download Screen Hero for <a href='http://links.screenhero.com/e/c/eyJlbWFpbF9pZCI6Ik1qQTNNem9XQkNJQ1pBQUNjd0FYQVZrVEdnRkxNamtfX0JWZEdGVEpSZkVCWlRwbFpXRTBNamM0WVMxaE56SmlMVEV4WlRRdE9HUXpZUzFpWXpVNE1HRTJNalkxTldNNk1UUTJNVEEyQUE9PSIsInBvc2l0aW9uIjowLCJocmVmIjoiaHR0cDovL2RsLnNjcmVlbmhlcm8uY29tL3NtYXJ0ZG93bmxvYWQvZklYQU1UUUJBTEtQQkhQTC9TY3JlZW5oZXJvLnppcD9zb3VyY2U9d2ViIn0=' target='_blank'>Mac</a> or <a href='http://links.screenhero.com/e/c/eyJlbWFpbF9pZCI6Ik1qQTNNem9XQkNJQ1pBQUNjd0FYQVZrVEdnRkxNamtfX0JWZEdGVEpSZkVCWlRwbFpXRTBNamM0WVMxaE56SmlMVEV4WlRRdE9HUXpZUzFpWXpVNE1HRTJNalkxTldNNk1UUTJNVEEyQUE9PSIsInBvc2l0aW9uIjoxLCJocmVmIjoiaHR0cDovL2RsLnNjcmVlbmhlcm8uY29tL3NtYXJ0ZG93bmxvYWQvZklYQU1UUUJBTEtQQkhQTC9TY3JlZW5oZXJvLXNldHVwLmV4ZSJ9' target='_blank'>Windows</a>. Create your new user account from within the app.",
|
||||||
"We have a special chat room for people ready to pair program. Go to our Slack chatroom and navigate to the #letspair channel and type \"Hello Pair Programmers!\"",
|
"We have a special chat room for people ready to pair program. Go to our Slack chat room, navigate to the #letspair channel and type \"Hello Pair Programmers!\"",
|
||||||
"If someone is available, they will be your \"pair\" - the person you pair programming with.",
|
"If someone is available, they will be your \"pair\" - the person you pair programming with.",
|
||||||
"If no one gets back to you in the first few minutes, don't worry. There will be lots of opportunities to pair program in the future.",
|
"If no one gets back to you in the first few minutes, don't worry. There will be lots of opportunities to pair program in the future.",
|
||||||
"If someone does get back to you, private message them and ask for the email address they used to register Screen Hero.",
|
"If someone does get back to you, private message them and ask for the email address they used to register Screen Hero.",
|
||||||
@ -168,7 +183,7 @@
|
|||||||
"Once you you finish pair programming, end the session in Screen Hero session.",
|
"Once you you finish pair programming, end the session in Screen Hero session.",
|
||||||
"Congratulations! You have completed your first pair programming session.",
|
"Congratulations! You have completed your first pair programming session.",
|
||||||
"Pair program as much as possible with different campers until you've completed all the Bonfire challenges. This is a big time investment, but the JavaScript practice you get will be well worth it!",
|
"Pair program as much as possible with different campers until you've completed all the Bonfire challenges. This is a big time investment, but the JavaScript practice you get will be well worth it!",
|
||||||
"Mark this challenge as complete and move on to the Bonfires."
|
"Mark this Waypoint complete and move on."
|
||||||
],
|
],
|
||||||
"challengeType": 2,
|
"challengeType": 2,
|
||||||
"tests": [],
|
"tests": [],
|
||||||
|
@ -85,7 +85,25 @@
|
|||||||
"Run this command: <code>sudo npm install how-to-npm -g</code>",
|
"Run this command: <code>sudo npm install how-to-npm -g</code>",
|
||||||
"Now start this tutorial by running <code>how-to-npm</code>",
|
"Now start this tutorial by running <code>how-to-npm</code>",
|
||||||
"Note that you can resize the c9.io's windows by dragging their borders.",
|
"Note that you can resize the c9.io's windows by dragging their borders.",
|
||||||
"Follow the directions and work through all of the the tutorial's steps before moving on."
|
"Make sure that you are always in your project's \"workspace\" directory. You can always navigate back to this directory by running this command: <code>cd ~/workspace</code>.",
|
||||||
|
"Complete \"Install NPM\"",
|
||||||
|
"Complete \"Dev Environment\"",
|
||||||
|
"Complete \"Login\"",
|
||||||
|
"Complete \"Start a Project\"",
|
||||||
|
"Complete \"Install a Module\"",
|
||||||
|
"Complete \"Listing Dependencies\"",
|
||||||
|
"Complete \"NPM Test\"",
|
||||||
|
"Complete \"Package Niceties\"",
|
||||||
|
"Complete \"Publish\"",
|
||||||
|
"Complete \"Version\"",
|
||||||
|
"Complete \"Publish Again\"",
|
||||||
|
"Complete \"Dist Tag\"",
|
||||||
|
"Complete \"Dist Tag Removal\"",
|
||||||
|
"Complete \"Outdated\"",
|
||||||
|
"Complete \"Update\"",
|
||||||
|
"Complete \"RM\"",
|
||||||
|
"Complete \"Finale\"",
|
||||||
|
"Once you've completed these first 7 challenges, move on to our next waypoint.",
|
||||||
],
|
],
|
||||||
"challengeType": 2,
|
"challengeType": 2,
|
||||||
"tests": []
|
"tests": []
|
||||||
@ -109,7 +127,15 @@
|
|||||||
"Run this command: <code>sudo npm install learnyounode -g</code>",
|
"Run this command: <code>sudo npm install learnyounode -g</code>",
|
||||||
"Now start this tutorial by running <code>learnyounode</code>",
|
"Now start this tutorial by running <code>learnyounode</code>",
|
||||||
"Note that you can resize the c9.io's windows by dragging their borders.",
|
"Note that you can resize the c9.io's windows by dragging their borders.",
|
||||||
"Follow the directions and work through the tutorial's steps 1 through 7 before moving on."
|
"Make sure that you are always in your project's \"workspace\" directory. You can always navigate back to this directory by running this command: <code>cd ~/workspace</code>.",
|
||||||
|
"Complete \"Hello World\"",
|
||||||
|
"Complete \"Baby Steps\"",
|
||||||
|
"Complete \"My First I/O\"",
|
||||||
|
"Complete \"My First Async I/O\"",
|
||||||
|
"Complete \"Filtered LS\"",
|
||||||
|
"Complete \"Make it Modular\"",
|
||||||
|
"Complete \"HTTP Client\"",
|
||||||
|
"Once you've completed these first 7 challenges, move on to our next waypoint.",
|
||||||
],
|
],
|
||||||
"challengeType": 2,
|
"challengeType": 2,
|
||||||
"tests": []
|
"tests": []
|
||||||
@ -121,8 +147,12 @@
|
|||||||
"challengeSeed": "126411561",
|
"challengeSeed": "126411561",
|
||||||
"description": [
|
"description": [
|
||||||
"Let's continue the LearnYouNode Node School challenge. For this Waypoint, we'll do challenges 8 through 10.",
|
"Let's continue the LearnYouNode Node School challenge. For this Waypoint, we'll do challenges 8 through 10.",
|
||||||
|
"Make sure that you are always in your project's \"workspace\" directory. You can always navigate back to this directory by running this command: <code>cd ~/workspace</code>.",
|
||||||
"Return to the c9.io workspace you created Now start this tutorial by running <code>learnyounode</code>",
|
"Return to the c9.io workspace you created Now start this tutorial by running <code>learnyounode</code>",
|
||||||
"Follow the directions and work through all of the the tutorial's steps before moving on."
|
"Complete \"HTTP Collect\"",
|
||||||
|
"Complete \"Juggling Async\"",
|
||||||
|
"Complete \"Time Server\"",
|
||||||
|
"Once you've completed these 3 challenges, move on to our next waypoint."
|
||||||
],
|
],
|
||||||
"challengeType": 2,
|
"challengeType": 2,
|
||||||
"tests": []
|
"tests": []
|
||||||
@ -134,8 +164,12 @@
|
|||||||
"challengeSeed": "126411561",
|
"challengeSeed": "126411561",
|
||||||
"description": [
|
"description": [
|
||||||
"Let's continue the LearnYouNode Node School challenge. For this Waypoint, we'll do challenges 11 through 13.",
|
"Let's continue the LearnYouNode Node School challenge. For this Waypoint, we'll do challenges 11 through 13.",
|
||||||
|
"Make sure that you are always in your project's \"workspace\" directory. You can always navigate back to this directory by running this command: <code>cd ~/workspace</code>.",
|
||||||
"Return to the c9.io workspace you created for the previous LearnYouNode challenges and start the tutorial by running <code>learnyounode</code>",
|
"Return to the c9.io workspace you created for the previous LearnYouNode challenges and start the tutorial by running <code>learnyounode</code>",
|
||||||
"Follow the directions and work through all of the the tutorial's steps before moving on."
|
"Complete \"HTTP File Server\"",
|
||||||
|
"Complete \"HTTP Uppercaserer\"",
|
||||||
|
"Complete \"HTTP JSON API Server\"",
|
||||||
|
"Once you've completed these final 3 challenges, move on to our next waypoint."
|
||||||
],
|
],
|
||||||
"challengeType": 2,
|
"challengeType": 2,
|
||||||
"tests": []
|
"tests": []
|
||||||
@ -159,7 +193,14 @@
|
|||||||
"Run this command: <code>git clone http://github.com/reddock/fcc_express && chmod 744 fcc_express/setup.sh && fcc_express/setup.sh && source ~/.profile</code>",
|
"Run this command: <code>git clone http://github.com/reddock/fcc_express && chmod 744 fcc_express/setup.sh && fcc_express/setup.sh && source ~/.profile</code>",
|
||||||
"Now start this tutorial by running <code>expressworks</code>",
|
"Now start this tutorial by running <code>expressworks</code>",
|
||||||
"Note that you can resize the c9.io's windows by dragging their borders.",
|
"Note that you can resize the c9.io's windows by dragging their borders.",
|
||||||
"Follow the directions and work through all of the the tutorial's steps before moving on."
|
"Make sure that you are always in your project's \"workspace\" directory. You can always navigate back to this directory by running this command: <code>cd ~/workspace</code>.",
|
||||||
|
"Complete \"Hello World\"",
|
||||||
|
"Complete \"Juggling Async\"",
|
||||||
|
"Complete \"Time Server\"",
|
||||||
|
"Complete \"HTTP Collect\"",
|
||||||
|
"Complete \"Juggling Async\"",
|
||||||
|
"Complete \"Time Server\"",
|
||||||
|
"Once you've completed these challenges, move on to our next waypoint."
|
||||||
],
|
],
|
||||||
"challengeType": 2,
|
"challengeType": 2,
|
||||||
"tests": []
|
"tests": []
|
||||||
|
23
seed_data/challenges/functional-programming.json
Normal file
23
seed_data/challenges/functional-programming.json
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"name": "Functional Programming",
|
||||||
|
"order" : 0.006,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"_id": "bd7129d8c441eddfaeb5bedf",
|
||||||
|
"name": "Waypoint: Practice Functional Programming",
|
||||||
|
"difficulty": 0.01,
|
||||||
|
"challengeSeed": "114604814",
|
||||||
|
"description": [
|
||||||
|
"Functional programming holds the key to unlocking JavaScript's powerful asynchronous features.",
|
||||||
|
"Functional programming in JavaScript involves using five key functions: \"map\", \"reduce\", \"filter\", \"concatAll\", and \"zip\".",
|
||||||
|
"Jafar Husain's 42-step interactive Functional Programming course will familiarize you with the various ways you can recombine these functions.",
|
||||||
|
"Click here to go to the challenge: <a href='http://jhusain.github.io/learnrx/' target='_blank'>http://jhusain.github.io/learnrx/</a>.",
|
||||||
|
"This challenge will take several hours, but don't worry. Husain's website will save your progress (using your browser's local storage) so you don't need to finish it in one sitting.",
|
||||||
|
"If you've spent several minutes on one of these challenges, and still can't figure out its correct answer, you can click \"show answer\", then click \"run\" to advance to the next challenge. Be sure to read the correct answer and make sure you understand it before moving on."
|
||||||
|
],
|
||||||
|
"challengeType": 2,
|
||||||
|
"tests": [],
|
||||||
|
"challengeType": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
99
seed_data/challenges/intermediate-bonfires.json
Normal file
99
seed_data/challenges/intermediate-bonfires.json
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
{
|
||||||
|
"name": "Bonfires",
|
||||||
|
"order" : 0.007,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"_id": "a2f1d72d9b908d0bd72bb9f6",
|
||||||
|
"name": "Bonfire: Make a Person",
|
||||||
|
"difficulty": "3.01",
|
||||||
|
"description": [
|
||||||
|
"Fill in the object constructor with the methods specified in the tests.",
|
||||||
|
"Those methods are getFirstName(), getLastName(), getFullName(), setFirstName(first), setLastName(last), and setFullName(firstAndLast).",
|
||||||
|
"All functions that take an argument have an arity of 1, and the argument will be a string.",
|
||||||
|
"These methods must be the only available means for interacting with the object.",
|
||||||
|
"Remember to use <a href='/field-guide/how-do-i-get-help-when-I-get-stuck'>RSAP</a> if you get stuck. Try to pair program. Write your own code."
|
||||||
|
],
|
||||||
|
"challengeSeed": [
|
||||||
|
"var Person = function(firstAndLast) {",
|
||||||
|
" return firstAndLast;",
|
||||||
|
"};",
|
||||||
|
"",
|
||||||
|
"var bob = new Person('Bob Ross');",
|
||||||
|
"bob.getFullName();"
|
||||||
|
],
|
||||||
|
"tests": [
|
||||||
|
"expect(Object.keys(bob).length).to.eql(6);",
|
||||||
|
"expect(bob instanceof Person).to.be.true;",
|
||||||
|
"expect(bob.firstName).to.be.undefined();",
|
||||||
|
"expect(bob.lastName).to.be.undefined();",
|
||||||
|
"expect(bob.getFirstName()).to.eql('Bob');",
|
||||||
|
"expect(bob.getLastName()).to.eql('Ross');",
|
||||||
|
"expect(bob.getFullName()).to.eql('Bob Ross');",
|
||||||
|
"bob.setFirstName('Happy');",
|
||||||
|
"expect(bob.getFirstName()).to.eql('Happy');",
|
||||||
|
"bob.setLastName('Trees');",
|
||||||
|
"expect(bob.getLastName()).to.eql('Trees');",
|
||||||
|
"bob.setFullName('George Carlin');",
|
||||||
|
"expect(bob.getFullName()).to.eql('George Carlin');",
|
||||||
|
"bob.setFullName('Bob Ross');"
|
||||||
|
],
|
||||||
|
"MDNlinks": ["Closures", "Details of the Object Model"],
|
||||||
|
"challengeType": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "af4afb223120f7348cdfc9fd",
|
||||||
|
"name": "Bonfire: Map the Debris",
|
||||||
|
"difficulty": "3.02",
|
||||||
|
"description": [
|
||||||
|
"Return a new array that transforms the element's average altitude into their orbital periods.",
|
||||||
|
"The array will contain objects in the format <code>{name: 'name', avgAlt: avgAlt}</code>.",
|
||||||
|
"You can read about orbital periods <a href=\"http://en.wikipedia.org/wiki/Orbital_period\">on wikipedia</a>.",
|
||||||
|
"The values should be rounded to the nearest whole number. The body being orbited is Earth.",
|
||||||
|
"The radius of the earth is 6367.4447 kilometers, and the GM value of earth is 398600.4418",
|
||||||
|
"Remember to use <a href='/field-guide/how-do-i-get-help-when-I-get-stuck'>RSAP</a> if you get stuck. Try to pair program. Write your own code."
|
||||||
|
],
|
||||||
|
"challengeSeed": [
|
||||||
|
"function orbitalPeriod(arr) {",
|
||||||
|
" var GM = 398600.4418;",
|
||||||
|
" var earthRadius = 6367.4447;",
|
||||||
|
" return arr;",
|
||||||
|
"}",
|
||||||
|
"",
|
||||||
|
"orbitalPeriod([{name : \"sputkin\", avgAlt : 35873.5553}]);"
|
||||||
|
],
|
||||||
|
"tests": [
|
||||||
|
"expect(orbitalPeriod([{name : \"sputkin\", avgAlt : 35873.5553}])).to.eqls([{name: \"sputkin\", orbitalPeriod: 86400}]);",
|
||||||
|
"expect(orbitalPeriod([{name: \"iss\", avgAlt: 413.6}, {name: \"hubble\", avgAlt: 556.7}, {name: \"moon\", avgAlt: 378632.553}])).to.eqls([{name : \"iss\", orbitalPeriod: 5557}, {name: \"hubble\", orbitalPeriod: 5734}, {name: \"moon\", orbitalPeriod: 2377399}]);"
|
||||||
|
],
|
||||||
|
"MDNlinks": ["Math.pow()"],
|
||||||
|
"challengeType": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id" : "a3f503de51cfab748ff001aa",
|
||||||
|
"name": "Bonfire: Pairwise",
|
||||||
|
"difficulty": "3.03",
|
||||||
|
"description": [
|
||||||
|
"Return the sum of all indices of elements of 'arr' that can be paired with one other element to form a sum that equals the value in the second argument 'arg'. If multiple sums are possible, return the smallest sum. Once an element has been used, it cannot be reused to pair with another.",
|
||||||
|
"For example, pairwise([1, 4, 2, 3, 0, 5], 7) should return 11 because 4, 2, 3 and 5 can be paired with each other to equal 7.",
|
||||||
|
"pairwise([1, 3, 2, 4], 4) would only equal 1, because only the first two elements can be paired to equal 4, and the first element has an index of 0!",
|
||||||
|
"Remember to use <a href='/field-guide/how-do-i-get-help-when-I-get-stuck'>RSAP</a> if you get stuck. Try to pair program. Write your own code."
|
||||||
|
],
|
||||||
|
"challengeSeed": [
|
||||||
|
"function pairwise(arr, arg) {",
|
||||||
|
" return arg;",
|
||||||
|
"}",
|
||||||
|
"",
|
||||||
|
"pairwise([1,4,2,3,0,5], 7);"
|
||||||
|
],
|
||||||
|
"tests": [
|
||||||
|
"expect(pairwise([1, 4, 2, 3, 0, 5], 7)).to.equal(11);",
|
||||||
|
"expect(pairwise([1, 3, 2, 4], 4)).to.equal(1);",
|
||||||
|
"expect(pairwise([1,1,1], 2)).to.equal(1);",
|
||||||
|
"expect(pairwise([0, 0, 0, 0, 1, 1], 1)).to.equal(10);",
|
||||||
|
"expect(pairwise([], 100)).to.equal(0);"
|
||||||
|
],
|
||||||
|
"MDNlinks" : ["Array.reduce()"],
|
||||||
|
"challengeType": 5
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
131
seed_data/challenges/object-oriented-javascript.json
Normal file
131
seed_data/challenges/object-oriented-javascript.json
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
{
|
||||||
|
"name": "Object Oriented JavaScript",
|
||||||
|
"order" : 0.006,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"_id": "bd7129d8c441eddfaeb5bddf",
|
||||||
|
"name": "Waypoint: Scope Your Variables",
|
||||||
|
"difficulty": 0.01,
|
||||||
|
"challengeSeed": "114604814",
|
||||||
|
"description": [
|
||||||
|
"Objects will allow you to build applications more efficiently by using small, reusable blocks of code.",
|
||||||
|
"This course for Udacity will help you learn Object-Oriented Programming in JavaScript.",
|
||||||
|
"First, we'll learn how JavaScript works in terms of scopes. You'll learn the difference between a \"Lexical Scope\" and an Execution Context.",
|
||||||
|
"This theoretical foundation is useful for understanding when an a variable can be accessed and when it can't.",
|
||||||
|
"You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.",
|
||||||
|
"Go to <a href='https://www.udacity.com/course/viewer#!/c-ud015/l-2593668697/m-2541189051'>https://www.udacity.com/course/viewer#!/c-ud015/l-2593668697/m-2541189051</a> and start the course.",
|
||||||
|
"Once you've completed this first section of scopes, mark this Waypoint complete and move on to the next one."
|
||||||
|
],
|
||||||
|
"_id": "bd7131d8c441eddfaeb5bdbf",
|
||||||
|
"name": "Waypoint: Reference your Current Object with This",
|
||||||
|
"difficulty": 0.03,
|
||||||
|
"challengeSeed": "114614220",
|
||||||
|
"description": [
|
||||||
|
"You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.",
|
||||||
|
"Go to <a href='https://www.udacity.com/course/viewer#!/c-ud015/l-2593668699/m-2780408563'>https://www.udacity.com/course/viewer#!/c-ud015/l-2593668699/m-2780408563</a> and start the course.",
|
||||||
|
"Once you've completed this section of using the keyword \"this\", mark this Waypoint complete and move on to the next one."
|
||||||
|
],
|
||||||
|
"challengeType": 2,
|
||||||
|
"tests": [],
|
||||||
|
"challengeType": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "bd7132d8c441eddfaeb5bdaf",
|
||||||
|
"name": "Waypoint: Traverse the Prototype Chain",
|
||||||
|
"difficulty": 0.04,
|
||||||
|
"challengeSeed": "114612889",
|
||||||
|
"description": [
|
||||||
|
"You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.",
|
||||||
|
"Go to <a href='https://www.udacity.com/course/viewer#!/c-ud015/l-2593668700/m-2616738615'>https://www.udacity.com/course/viewer#!/c-ud015/l-2593668700/m-2616738615</a> and start the course.",
|
||||||
|
"Once you've completed this section on prototype chain traversal, mark this Waypoint complete and move on to the next one."
|
||||||
|
],
|
||||||
|
"challengeType": 2,
|
||||||
|
"tests": [],
|
||||||
|
"challengeType": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "bd7133d8c441eddfaeb5bd0f",
|
||||||
|
"name": "Waypoint: Reuse Code with Decorators",
|
||||||
|
"difficulty": 0.05,
|
||||||
|
"challengeSeed": "114612888",
|
||||||
|
"description": [
|
||||||
|
"You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.",
|
||||||
|
"Go to <a href='https://www.udacity.com/course/viewer#!/c-ud015/l-2794468536/m-2697628561'>https://www.udacity.com/course/viewer#!/c-ud015/l-2794468536/m-2697628561</a> and start the course.",
|
||||||
|
"Once you've completed this section of decorators, mark this Waypoint complete and move on to the next one."
|
||||||
|
],
|
||||||
|
"challengeType": 2,
|
||||||
|
"tests": [],
|
||||||
|
"challengeType": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "bd7134d8c441eddfaeb5bd1f",
|
||||||
|
"name": "Waypoint: Build Objects with Functional Classes",
|
||||||
|
"difficulty": 0.06,
|
||||||
|
"challengeSeed": "114612887",
|
||||||
|
"description": [
|
||||||
|
"You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.",
|
||||||
|
"Go to <a href='https://www.udacity.com/course/viewer#!/c-ud015/l-2794468537/m-2961989110'>https://www.udacity.com/course/viewer#!/c-ud015/l-2794468537/m-2961989110</a> and start the course.",
|
||||||
|
"Once you've completed this section of functional classes, mark this Waypoint complete and move on to the next one."
|
||||||
|
],
|
||||||
|
"challengeType": 2,
|
||||||
|
"tests": [],
|
||||||
|
"challengeType": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "bd7135d8c441eddfaeb5bd2f",
|
||||||
|
"name": "Waypoint: Build Objects with Prototypal Classes",
|
||||||
|
"difficulty": 0.07,
|
||||||
|
"challengeSeed": "114612885",
|
||||||
|
"description": [
|
||||||
|
"You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.",
|
||||||
|
"Go to <a href='https://www.udacity.com/course/viewer#!/c-ud015/l-2794468538/m-3034538557'>https://www.udacity.com/course/viewer#!/c-ud015/l-2794468538/m-3034538557</a> and start the course.",
|
||||||
|
"Once you've completed this section of prototypal classes, mark this Waypoint complete and move on to the next one."
|
||||||
|
],
|
||||||
|
"challengeType": 2,
|
||||||
|
"tests": [],
|
||||||
|
"challengeType": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "bd7136d8c441eddfaeb5bd3f",
|
||||||
|
"name": "Waypoint: Understand Pseudoclassical Patterns",
|
||||||
|
"difficulty": 0.08,
|
||||||
|
"challengeSeed": "114612882",
|
||||||
|
"description": [
|
||||||
|
"You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.",
|
||||||
|
"Go to <a href='https://www.udacity.com/course/viewer#!/c-ud015/l-2794468539/e-2783098540/m-2695768694'>https://www.udacity.com/course/viewer#!/c-ud015/l-2794468539/e-2783098540/m-2695768694</a> and start the course.",
|
||||||
|
"Once you've completed this section pseudoclasses, mark this Waypoint complete and move on to the next one."
|
||||||
|
],
|
||||||
|
"challengeType": 2,
|
||||||
|
"tests": [],
|
||||||
|
"challengeType": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "bd7136d8c441eddfaeb5bd4f",
|
||||||
|
"name": "Waypoint: Subclass one Object to Another",
|
||||||
|
"difficulty": 0.09,
|
||||||
|
"challengeSeed": "114612882",
|
||||||
|
"description": [
|
||||||
|
"You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.",
|
||||||
|
"Go to <a href='https://www.udacity.com/course/viewer#!/c-ud015/l-2794468540/m-2785128536'>https://www.udacity.com/course/viewer#!/c-ud015/l-2794468540/m-2785128536</a> and start the course.",
|
||||||
|
"Once you've completed this section on subclassing, mark this Waypoint complete and move on to the next one."
|
||||||
|
],
|
||||||
|
"challengeType": 2,
|
||||||
|
"tests": [],
|
||||||
|
"challengeType": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "bd7136d8c441eddfaeb5bd5f",
|
||||||
|
"name": "Waypoint: Use Pseudoclassical Subclasses",
|
||||||
|
"difficulty": 0.10,
|
||||||
|
"challengeSeed": "114612882",
|
||||||
|
"description": [
|
||||||
|
"You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.",
|
||||||
|
"Go to <a href='https://www.udacity.com/course/viewer#!/c-ud015/l-2794468541/e-2693158566/m-2688408703'>https://www.udacity.com/course/viewer#!/c-ud015/l-2794468541/e-2693158566/m-2688408703</a> and start the course.",
|
||||||
|
"Once you've completed this final section on pseudoclassical subclassing, mark this Waypoint complete and move on."
|
||||||
|
],
|
||||||
|
"challengeType": 2,
|
||||||
|
"tests": [],
|
||||||
|
"challengeType": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Reference in New Issue
Block a user