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


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 programming styles or paradigms: Object Oriented Programming (OOP) and Functional Programming (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


  • Comment Your JavaScript Code
  • Declare JavaScript Variables
  • Storing Values with the Assignment Operator
  • Assigning the Value of One Variable to Another
  • Initializing Variables with the Assignment Operator
  • Declare String Variables
  • Understanding Uninitialized Variables
  • Understanding Case Sensitivity in Variables
  • Explore Differences Between the var and let Keywords
  • Declare a Read-Only Variable with the const Keyword
  • 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
  • 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
  • Return a Value from a Function with Return
  • Global Scope and Functions
  • Local Scope and Functions
  • Global vs. Local Scope in Functions
  • 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
  • Compare Scopes of the var and let Keywords
  • 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
  • Use getters and setters to Control Access to an Object
  • 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
  • Restrict Possible Usernames
  • 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
  • Positive and Negative Lookahead
  • 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()
  • Add 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 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
  • Add Methods After Inheritance
  • 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
  • Learn About Functional Programming
  • 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


4.8 rating, based on 32 Class Central reviews

Start your review of JavaScript Algorithms and Data Structures

  • As a wife, mother, and grandmother looking to change careers, I find this bootcamp so helpful. I've been studying programming off and on for a few years now and trying to learn JS on my own has been a nightmare. I enjoy the live sessions (even though I have to catch them as a repeat due to working full time) the way Ramon takes the time to explain each concept has helped me to let my guard when it comes to JS. It's actually kinda of a fun language. I'm really thankful for this opportunity to be a part of this learning community.
  • Very informative and immersive. Great learning resource with plenty of help when you get stuck whether it be the forums or the hints that are offered. Amazing way to learn JavaScript and critical thinking at your own pace.

    The JavaScript Bootcamp cohort that has been offered was a tremendous help in assisting in instructing the difficult to pick up concepts. The instructor was very knowledgeable, patient, and uplifting when we all solved solutions together.
  • Thanks to Class Central and FreeCodeCamp for this wonderful Bootcamp, I loved the dynamics and the content, also thanks to Ramón Huidobro, for his mentoring.
  • 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.
  • Easy to learn and follow through the questions, the only downside is that you might get stuck sometimes but you don't know who to ask. Am glad they introduced the JavaScript bootcamp, that has helped where i was stuck and also the lessons are lively and boring at all like reading alone.
  • 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
  • So far its almost 2 weeks and I am shock how helpful this course is so far the way of teaching is awsome, I am exited to complete this
  • Dear,
    Good evening everyone, thank you for the excellent bootcamp. And mainly for the masterful classes of Professor Ramón Huidobro who makes programming and learning simple.
    Thank you all so much for the opportunity and learning.
    Jeferson Napolitano
  • Ramón is a great teacher with a positive vibe. Going through the course content with him was fun, I've learned a lot of new things and I feel very confident to go on further into studying programming.
  • 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.
    It’s very good and interesting, I urge you all to come join and study this program. With this course or programme, youngsters and get jobs on their own and be able to use their knowledge acquired from code camp to save the world and make information e...
  • Osamagioghomwenwi Oghagbon
    It's in-depth and it was broken down in such a manner that it can be easily understood by even kids. I gave it a 4 because there's always room for growth. I have recommended it to my friends and they like it too.
  • Anonymous
    Very good courses. It's nice that for any problem there is a topic on the forum, if you get stuck you can always find a detailed explanation. Highly recommend.
  • Lucky Star
    I am not very good with Udemy courses. Somehow these Live YouTube streams keep me compelled to join the courses or at least to rewatch them later if I couldn't make it. I find myself doing the homework unexpectedly on a Saturday. This never happened before...
  • Sheikh Bilal Mukarram
    Very good opportunity for students and people who wants to go into this field. I highly recommend this course.
  • Profile image for Nikhil Andola
    Nikhil Andola
    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.
  • The Java script bootcamp was a best place to be, it teaches you so much, and the instructor is very friendly, it you didn’t understand, when asked, he stop and explains, more than once, if he is fast ask, and he goes slow, and it was fun I enjoyed it, the are a lot of thing to learn, ( if you are new to JS) the 1 ½ hour a day was the best time spend, as a bonus all the classes are posted on you tube, so if you want to refer to or go back its very helpful and the best part is you could study at you own pace, that help me a lot, I still working towards my JS certification.
  • Asif Dawood
    Mr Ramon is a great teacher. His presentation style keeps us hooked to the course. Also his way of solving a problem by breaking down its algorithm into smaller steps was a great way of solving it. Only suggestion is that office hours must not be combined with others as it wastes lot of time in frivolous talk and nothing much is attained during that time.
    If that time can be suitably used to address specific questions it would be great.
    All in all a great course . Waiting for other cohorts from Mr Ramon
  • Profile image for Bharath R
    Bharath R
    This course was really amazing. I really loved to learning. First I think online course is not understanding to ourself. But, later I change my mind. Because I can be easily understand to learn

  • Profile image for Nathan
    Many hundreds of short Javascript lessons. This course is like a whirlwind tour of programming fundamentals. You will learn everything from basic syntax, logic, functions, object-oriented programming to real problem-solving. This is an excellent free resource that will get you programming in no time.

Never Stop Learning.

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