A 12 week introduction to JavaScript curriculum for weekly JavaScript Discussion Group sessions.
- Learning JavaScript, 3rd edition (2016)
- You Don't Know JavaScript (2019) and/or You Don't Know JavaScript Yet (2020-2021, in progess)
- JavaScript: The Good Parts (2008)
- JavaScript Patterns by Stoyan Stefanov (2010)
- Learning JavaScript Design Patterns by Addy Osmani (2012)
- JavaScript: the Definitive Guide, 7th edition (2020)
- Eloquent JavaScript (2018)
- Beginning JavaScript, 5th edition (2015)
- Skim the chapter headers, read quickly, and then read again more throughoughly.
- Don't skim over the code examples. Read all the code and try to understand how it works.
- Have an open JavaScript console nearby to test the code that you're reading.
- Watch videos at faster than normal speed, up to 2x speed.
- Take Coursera’s Learning How to Learn course.
- If you have to do something more than three times, find a way to automate it.
- If you find yourself copying and pasting code within your application, consider creating shared code (a shared Array, Object, or Function).
- Preparation
- Data Types, Control Flow, and Loops
- Basic Debugging
- Functions
- Arrays and Objects
- Strings, Date/Time, Math
- The BOM, DOM, and Handling Events
- Introduction to Node JS
- Working with Data
- ES6+ and Shorthand JS
- Programming Paradigms
- Programming Design Patterns
- Projects
- Get the books.
- Create a Codepen account.
- Create a GitHub account.
- Download VS Code or use your favorite IDE.
- A Dao of Web Design
- Watch: Enhance! by Jeremy Keith [1:03:13]
- Watch: The Long Web by Jeremy Keith [56:31]
- Work through the JavaScript Primer
- JS in the console
- JS on the web (CodePen)
- JS in files (.js files)
- JS in the terminal (Node.js)
- Learning JavaScript
- Your First Application [1-14]
- JavaScript Development [15-24]
- JavaScript: The Good Parts
- Good Parts
[90 minutes reading]
- You Don't Know JS Yet: Get Started
- Learning JavaScript
- Literals, Variables, Constants, and Data Types [25-46]
- Control Flow [47-70]
- Expressions and Operators [71-92]
- JavaScript: The Good Parts
- Grammar
- Beginning JavaScript
- Chapter 1 (Introduction to JavaScript and the Web) [1-16]
- Chapter 2 (Data Types and Variables) [17-55]
- Chapter 3 (Decisions and Loops) [56-86]
In the JavaScript console:
- Store a variable.
- Write code that counts down from 10 to 1.
- Write code that outputs a tetraktys. Write into the page:
- <script>
- <link>
[90 minutes reading + 1 article + 4? hour practice]
- Learning JavaScript
- Functions [93-106]
- Learning JavaScript: Scope [107-120]
- Beginning JavaScript: Chapter 4 (Functions and Scope) [87-98]
- Callbacks
- Closures
- Recursion
- JavaScript: The Good Parts
- Functions
- You Don't Know JS Yet: Scope & Closures
- JavaScript Patterns by Stoyan Stefanov: Chapter 4 (Functions)
- Write and run a function that takes two numbers and adds them together.
[30 minutes reading + 22 minutes video + 3 articles]
- Article: Code Conventions for the JavaScript Programming Language
- Beginning JavaScript: Chapter 18 (Common Mistakes, Debugging, and Error Handling) [549-583]
- 10 Mistakes That JavaScript Beginners Often Make
- Debugging JavaScript: Understanding JavaScript Error Messages
- Debugging in the Browser
- Watch: Google Chrome Debugging: Debugging JavaScript using Breakpoints with the Google Chrome Developer Tools [11:24]
- Watch: Firefox Debugging: Debugging JavaScript by Using Breakpoints (in Firefox/Firebug) [10:43]
- Internet Explorer Debugging: How to use F12 Developer Tools to Debug your Webpages
[90 minutes reading]
- Learning JavaScript:
- Arrays and Array Processing [121-136]
- Objects and Object-Oriented Programming [137-152]
- Beginning JavaScript: Chapter 5 (JavaScript --- An Object-Based Language) [99-152]
- JavaScript: The Good Parts
- Objects
- Arrays
- You Don't Know JS: this & Object Prototypes
- Chapter 1: this Or That?
- Chapter 2: this All Makes Sense Now!
- Chapter 3: Objects
- JavaScript Patterns by Stoyan Stefanov: Chapter 5 (Object Creation Patterns)
- Write and run a function ....
[90 minutes reading + 5 hour practice time]
- Learning JavaScript:
- Date and Time [209-218]
- Math [219-226]
- JavaScript: The Good Parts
- Regular Expressions
- Methods
- Beginning JavaScript
- Chapter 6 (String Manipulation) [153-192]
- Chapter 7 (Date, Time, and Timers) [193-204]
- Write a function that outputs a reverse string.
- Write a function that counts the number of times a single letter is in a word.
- Write a function the identifies if a word is a plaindrome.
- Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.
[90 minutes reading + 2 articles + project time]
- Learning JavaScript: JavaScript in the Browser [247-265]
- Beginning JavaScript
- Chapter 8 (Programming the Browser) [205-228]
- Chapter 9 (DOM Scripting) [229-270]
- Chapter 10 (Events) [271-334]
- Chapter 11 (HTML Forms: Interacting with the User) [335-390]
- JavaScript Patterns by Stoyan Stefanov: Chapter 8 (DOM and Browser Patterns)
- Learning JavaScript: Node [265-282]
- Additional: 100 Days of Node
- Install Node, npm
[70 minutes reading + 2 articles]
- Learning JavaScript: Asynchronous Programming [189-208]
- Beginning JavaScript
- Chapter 12 (JSON) [391-402]
- Chapter 13 (Data Storage) [403-434]
- Chapter 14 (Ajax) [435-462]
- Working with HTML5 data attributes
- JavaScript --- Just another introduction to ES6 [5:00]
- Toolsday.io: Solved by ES6 (ES2015) [19:41]
- How to simplify your codebase with map(), reduce(), and filter() in JavaScript
- 25+ JavaScript Shorthand Coding Techniques
- Rewrite “FizzBuzz” to be as short as possible.
[4 articles + additional reading + project work]
- Introduction to Object-Oriented JavaScript
- Prototypal Inheritance in JavaScript
- JavaScript: The Good Parts
- Inheritance
- Learning JavaScript: Functions and the Power of Abstract Thinking [173-188]
- You Don't Know JS: this & Object Prototypes
- Chapter 4: Mixing (Up) "Class" Objects
- Chapter 5: Prototypes
- Chapter 6: Behavior Delegation
- JavaScript Patterns by Stoyan Stefanov: Chapter 6 (Code Reuse Patterns)
- Prototypal Inheritance: The Two Pillars of JavaScript --- Part 1: How to Escape the 7th Circle of Hell
- Functional Programming: The Two Pillars of JavaScript --- Pt 2: Functional Programming [14:00]
- Rewrite one of the projects using Classes
- Rewrite one of the projects using Functional programming concepts
- Rewrite one of the projects using Prototypal Objects-linking-to-other-Objects
[1 book + additional reading + project work]
- JavaScript Patterns by Stoyan Stefanov: Chapter 7 (Design Patterns)
- Learning JavaScript Design Patterns
- Effective JavaScript: 68 Specific Ways to Harness the Power of JavaScript: Chapter 4
Requirements:
- Create an accordion widget that you can open and close.
- It should be closed on page load.
- The initial button should contain text.
- It should open to reveal a few paragraphs of text.
Requirements:
- Build a Carousel with previous slide and next slide buttons.
- The Carousel could contain any number of slides.
- Display a slide number.
- Each slide should be able to contain any HTML markup.
- Toggle classes to animate the slide motion.
Requirements:
- Create a simple multiple choice quiz that has radio button choices.
- The quiz could show any number of questions and any number of choices.
- Use an array to store all the questions. Each question, along with its choices and correct answer, should be stored in an object. The array of questions should look similar to this (Notice that only one question is in this example array; you will add many questions):
var allQuestions = [{question: "Who is the strongest Avenger?", choices: ["Hulk", "Thor", "Point Break", "Iron Man"], correctAnswer: 0}];
- Dynamically remove the current question and add the next question, when the user clicks the "Next" button. The Next button will be the only button to navigate this version of the quiz.
- Tally the user's score and display the final score on the last page. The last page will only show the score, so remove the last question.
Requirements:
- Add client-side data validation: make sure the user answers each question before proceeding to the next question.
- Add a "Back" button to allow the user to go back and change her answer. The user can go back up to the first question. For the questions that the user has answered already, be sure to show the radio button selected, so that the user is not forced to answer the questions again, which she has completed.
- Add animation (fade out the current question and fade in the next question).
- Test the quiz on all browsers and fix any bugs. This will give you a good workout
- Store the quiz questions in an external JSON file.
- Add user authentication: allow users to log in, and save their login credentials to local storage (HTML5 browser storage).
- Use a
cookie
to remember the user, and show a "Welcome, 'First Name'" message when the user returns to the quiz.
Requirements:
- Prepopulate an array with a list of items.
- Display the list of items.
- An input field should allow the user to add an item to the list.
- A delete button should allow the user to remove an item from the list.
- An edit button should allow the user to update a list item.
- Use
local-session
storage to maintain the state in the browser.