Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

# JavaScript Algorithms and Data Structures

via freeCodeCamp

Social Learning for Open Courses

Join one of our cohorts to learn from instructors, experts, or each other with weekly live streams.

## Overview

While HTML and CSS control the content and styling of a page, JavaScript is used to make it interactive. In the JavaScript Algorithm and Data Structures Certification, you'll learn the fundamentals of JavaScript including variables, arrays, objects, loops, and functions.

Once you have the fundamentals down, you'll apply that knowledge by creating algorithms to manipulate strings, factorialize numbers, and even calculate the orbit of the International Space Station.

Along the way, you'll also learn two important programing styles or paradigms: Object Oriented Programing (OOP), and Functional Programing (FP).

Major Topics:

• Basic JavaScript
• ES6
• Regular Expressions
• Debugging
• Basic Data Structures
• Basic Algorithm Scripting
• Object Oriented Programming
• Functional Programming
• Intermediate Algorithm Scripting
• JavaScript Algorithms and Data Structures Projects

## Syllabus

• Declare JavaScript Variables
• Storing Values with the Assignment Operator
• Assigning the Value of One Variable to Another
• Initializing Variables with the Assignment Operator
• Understanding Uninitialized Variables
• Understanding Case Sensitivity in Variables
• Add Two Numbers with JavaScript
• Subtract One Number from Another with JavaScript
• Multiply Two Numbers with JavaScript
• Divide One Number by Another with JavaScript
• Increment a Number with JavaScript
• Decrement a Number with JavaScript
• Create Decimal Numbers with JavaScript
• Multiply Two Decimals with JavaScript
• Divide One Decimal by Another with JavaScript
• Finding a Remainder in JavaScript
• Compound Assignment With Augmented Addition
• Compound Assignment With Augmented Subtraction
• Compound Assignment With Augmented Multiplication
• Compound Assignment With Augmented Division
• Declare String Variables
• Escaping Literal Quotes in Strings
• Quoting Strings with Single Quotes
• Escape Sequences in Strings
• Concatenating Strings with Plus Operator
• Concatenating Strings with the Plus Equals Operator
• Constructing Strings with Variables
• Appending Variables to Strings
• Find the Length of a String
• Use Bracket Notation to Find the First Character in a String
• Understand String Immutability
• Use Bracket Notation to Find the Nth Character in a String
• Use Bracket Notation to Find the Last Character in a String
• Use Bracket Notation to Find the Nth-to-Last Character in a String
• Word Blanks
• Store Multiple Values in one Variable using JavaScript Arrays
• Nest one Array within Another Array
• Access Array Data with Indexes
• Modify Array Data With Indexes
• Access Multi-Dimensional Arrays With Indexes
• Manipulate Arrays With push()
• Manipulate Arrays With pop()
• Manipulate Arrays With shift()
• Manipulate Arrays With unshift()
• Shopping List
• Write Reusable JavaScript with Functions
• Passing Values to Functions with Arguments
• Global Scope and Functions
• Local Scope and Functions
• Global vs. Local Scope in Functions
• Return a Value from a Function with Return
• Understanding Undefined Value returned from a Function
• Assignment with a Returned Value
• Stand in Line
• Understanding Boolean Values
• Use Conditional Logic with If Statements
• Comparison with the Equality Operator
• Comparison with the Strict Equality Operator
• Practice comparing different values
• Comparison with the Inequality Operator
• Comparison with the Strict Inequality Operator
• Comparison with the Greater Than Operator
• Comparison with the Greater Than Or Equal To Operator
• Comparison with the Less Than Operator
• Comparison with the Less Than Or Equal To Operator
• Comparisons with the Logical And Operator
• Comparisons with the Logical Or Operator
• Introducing Else Statements
• Introducing Else If Statements
• Logical Order in If Else Statements
• Chaining If Else Statements
• Golf Code
• Selecting from Many Options with Switch Statements
• Adding a Default Option in Switch Statements
• Multiple Identical Options in Switch Statements
• Replacing If Else Chains with Switch
• Returning Boolean Values from Functions
• Return Early Pattern for Functions
• Counting Cards
• Build JavaScript Objects
• Accessing Object Properties with Dot Notation
• Accessing Object Properties with Bracket Notation
• Accessing Object Properties with Variables
• Updating Object Properties
• Add New Properties to a JavaScript Object
• Delete Properties from a JavaScript Object
• Using Objects for Lookups
• Testing Objects for Properties
• Manipulating Complex Objects
• Accessing Nested Objects
• Accessing Nested Arrays
• Record Collection
• Iterate with JavaScript While Loops
• Iterate with JavaScript For Loops
• Iterate Odd Numbers With a For Loop
• Count Backwards With a For Loop
• Iterate Through an Array with a For Loop
• Nesting For Loops
• Iterate with JavaScript Do...While Loops
• Replace Loops using Recursion
• Profile Lookup
• Generate Random Fractions with JavaScript
• Generate Random Whole Numbers with JavaScript
• Generate Random Whole Numbers within a Range
• Use the parseInt Function
• Use the parseInt Function with a Radix
• Use the Conditional (Ternary) Operator
• Use Multiple Conditional (Ternary) Operators
• Use Recursion to Create a Countdown
• Use Recursion to Create a Range of Numbers
• Explore Differences Between the var and let Keywords
• Compare Scopes of the var and let Keywords
• Declare a Read-Only Variable with the const Keyword
• Mutate an Array Declared with const
• Prevent Object Mutation
• Use Arrow Functions to Write Concise Anonymous Functions
• Write Arrow Functions with Parameters
• Set Default Parameters for Your Functions
• Use the Rest Parameter with Function Parameters
• Use the Spread Operator to Evaluate Arrays In-Place
• Use Destructuring Assignment to Extract Values from Objects
• Use Destructuring Assignment to Assign Variables from Objects
• Use Destructuring Assignment to Assign Variables from Nested Objects
• Use Destructuring Assignment to Assign Variables from Arrays
• Use Destructuring Assignment with the Rest Parameter to Reassign Array Elements
• Use Destructuring Assignment to Pass an Object as a Function's Parameters
• Create Strings using Template Literals
• Write Concise Object Literal Declarations Using Object Property Shorthand
• Write Concise Declarative Functions with ES6
• Use class Syntax to Define a Constructor Function
• Create a Module Script
• Use export to Share a Code Block
• Reuse JavaScript Code Using import
• Use * to Import Everything from a File
• Create an Export Fallback with export default
• Import a Default Export
• Create a JavaScript Promise
• Complete a Promise with resolve and reject
• Handle a Fulfilled Promise with then
• Handle a Rejected Promise with catch
• Using the Test Method
• Match Literal Strings
• Match a Literal String with Different Possibilities
• Ignore Case While Matching
• Extract Matches
• Find More Than the First Match
• Match Anything with Wildcard Period
• Match Single Character with Multiple Possibilities
• Match Letters of the Alphabet
• Match Numbers and Letters of the Alphabet
• Match Single Characters Not Specified
• Match Characters that Occur One or More Times
• Match Characters that Occur Zero or More Times
• Find Characters with Lazy Matching
• Find One or More Criminals in a Hunt
• Match Beginning String Patterns
• Match Ending String Patterns
• Match All Letters and Numbers
• Match Everything But Letters and Numbers
• Match All Numbers
• Match All Non-Numbers
• Match Whitespace
• Match Non-Whitespace Characters
• Specify Upper and Lower Number of Matches
• Specify Only the Lower Number of Matches
• Specify Exact Number of Matches
• Check for All or None
• Check For Mixed Grouping of Characters
• Reuse Patterns Using Capture Groups
• Use Capture Groups to Search and Replace
• Remove Whitespace from Start and End
• Use the JavaScript Console to Check the Value of a Variable
• Understanding the Differences between the freeCodeCamp and Browser Console
• Use typeof to Check the Type of a Variable
• Catch Misspelled Variable and Function Names
• Catch Unclosed Parentheses, Brackets, Braces and Quotes
• Catch Mixed Usage of Single and Double Quotes
• Catch Use of Assignment Operator Instead of Equality Operator
• Catch Missing Open and Closing Parenthesis After a Function Call
• Catch Arguments Passed in the Wrong Order When Calling a Function
• Catch Off By One Errors When Using Indexing
• Use Caution When Reinitializing Variables Inside a Loop
• Prevent Infinite Loops with a Valid Terminal Condition
• Use an Array to Store a Collection of Data
• Access an Array's Contents Using Bracket Notation
• Add Items to an Array with push() and unshift()
• Remove Items from an Array with pop() and shift()
• Remove Items Using splice()
• Copy Array Items Using slice()
• Copy an Array with the Spread Operator
• Combine Arrays with the Spread Operator
• Check For The Presence of an Element With indexOf()
• Iterate Through All an Array's Items Using For Loops
• Create complex multi-dimensional arrays
• Add Key-Value Pairs to JavaScript Objects
• Modify an Object Nested Within an Object
• Access Property Names with Bracket Notation
• Use the delete Keyword to Remove Object Properties
• Check if an Object has a Property
• Iterate Through the Keys of an Object with a for...in Statement
• Generate an Array of All Object Keys with Object.keys()
• Modify an Array Stored in an Object
• Convert Celsius to Fahrenheit
• Reverse a String
• Factorialize a Number
• Find the Longest Word in a String
• Return Largest Numbers in Arrays
• Confirm the Ending
• Repeat a String Repeat a String
• Truncate a String
• Finders Keepers
• Boo who
• Title Case a Sentence
• Slice and Splice
• Falsy Bouncer
• Where do I Belong
• Mutations
• Chunky Monkey
• Create a Basic JavaScript Object
• Use Dot Notation to Access the Properties of an Object
• Create a Method on an Object
• Make Code More Reusable with the this Keyword
• Define a Constructor Function
• Use a Constructor to Create Objects
• Extend Constructors to Receive Arguments
• Verify an Object's Constructor with instanceof
• Understand Own Properties
• Use Prototype Properties to Reduce Duplicate Code
• Iterate Over All Properties
• Understand the Constructor Property
• Change the Prototype to a New Object
• Remember to Set the Constructor Property when Changing the Prototype
• Understand Where an Object’s Prototype Comes From
• Understand the Prototype Chain
• Use Inheritance So You Don't Repeat Yourself
• Inherit Behaviors from a Supertype
• Set the Child's Prototype to an Instance of the Parent
• Reset an Inherited Constructor Property
• Override Inherited Methods
• Use a Mixin to Add Common Behavior Between Unrelated Objects
• Use Closure to Protect Properties Within an Object from Being Modified Externally
• Understand the Immediately Invoked Function Expression (IIFE)
• Use an IIFE to Create a Module
• Understand Functional Programming Terminology
• Understand the Hazards of Using Imperative Code
• Avoid Mutations and Side Effects Using Functional Programming
• Pass Arguments to Avoid External Dependence in a Function
• Refactor Global Variables Out of Functions
• Use the map Method to Extract Data from an Array
• Implement map on a Prototype
• Use the filter Method to Extract Data from an Array
• Implement the filter Method on a Prototype
• Return Part of an Array Using the slice Method
• Remove Elements from an Array Using slice Instead of splice
• Combine Two Arrays Using the concat Method
• Add Elements to the End of an Array Using concat Instead of push
• Use the reduce Method to Analyze Data
• Use Higher-Order Functions map, filter, or reduce to Solve a Complex Problem
• Sort an Array Alphabetically using the sort Method
• Return a Sorted Array Without Changing the Original Array
• Split a String into an Array Using the split Method
• Combine an Array into a String Using the join Method
• Apply Functional Programming to Convert Strings to URL Slugs
• Use the every Method to Check that Every Element in an Array Meets a Criteria
• Use the some Method to Check that Any Elements in an Array Meet a Criteria
• Introduction to Currying and Partial Application
• Sum All Numbers in a Range
• Diff Two Arrays
• Seek and Destroy
• Wherefore art thou
• Spinal Tap Case
• Pig Latin
• Search and Replace
• DNA Pairing
• Missing letters
• Sorted Union
• Convert HTML Entities
• Sum All Odd Fibonacci Numbers
• Sum All Primes
• Smallest Common Multiple
• Drop it
• Steamroller
• Binary Agents
• Everything Be True
• Arguments Optional
• Make a Person
• Map the Debris
• Palindrome Checker
• Roman Numeral Converter
• Caesars Cipher
• Telephone Number Validator
• Cash Register

### Taught by

freeCodeCamp Team

## Reviews

4.8 rating, based on 4 reviews

Start your review of JavaScript Algorithms and Data Structures

• The lecture needs lots of time to study that how to use the knowledge successfully,so it refers to the new tool to use the skill of the computer so that I can make me and my animal's apperance better.
• Nice course that enlarges your skills. It also help you code along which in turn makes you a better programmer than just watching or reading the class content
• Anonymous
This section is challenging for people who are learning their first programming language. But it will give you lot of practice with the fundamentals and algorithms. Plus the FCC forum is really helpful when you are stuck with a challenge.
• Nikhil Andola
1
Really hellpfull ! One of the best course on planet.

I am really grateful of this platform that they provided such in-depth material for beginners as well as professional programers.

### Never Stop Learning!

Get personalized course recommendations, track subjects and courses with reminders, and more.