FreeCodeCamp Legacy Javascript Algorithms and Data Structures Course Breakdown

https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/





JavaScript Algorithm and Data Structures Certification

While HTML and CSS control the content and styling of a page, JavaScript is used to make it interactive. This comprehensive certification takes you from foundational concepts to advanced programming paradigms.

What You'll Master

  • > JavaScript Fundamentals: variables, arrays, objects, loops, and functions
  • > ES6 Features: arrow functions, destructuring, template literals, and modules
  • > Data Structures: arrays, objects, and complex data manipulation
  • > Algorithm Design: problem-solving patterns and efficiency
  • > Debugging Techniques: identifying and fixing code issues
  • > Regular Expressions: pattern matching and text manipulation

Practical Applications

  • > String manipulation algorithms
  • > Mathematical operations and factorialization
  • > Array sorting and searching techniques
  • > Object-oriented data handling
  • > Real-world calculations (e.g., orbit simulations)
  • > Interactive web application development

Programming Paradigms

  • > Object Oriented Programming (OOP): classes, inheritance, and encapsulation
  • > Functional Programming (FP): pure functions, higher-order functions, and immutability
  • > Protocol-oriented programming patterns
  • > Asynchronous programming techniques

Certification Outcomes

  • > Build interactive, dynamic web applications
  • > Write efficient, maintainable JavaScript code
  • > Solve complex algorithmic challenges
  • > Understand modern JavaScript frameworks
  • > Prepare for advanced software development roles

This certification provides the essential JavaScript skills needed for modern web development, combining theoretical knowledge with practical, real-world application.

There are 294 lessons and modules in total. Try doing 20 or 30 per day.

Watch the video above for a comprehensive guide.

JavaScript Concepts Categorized

1. Basics & Fundamentals

  • > Comment Your JavaScript Code
  • > Understanding Case Sensitivity in Variables

2. Variables and Declaration

  • > 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
  • > Explore Differences Between the var and let Keywords
  • > Declare a Read-Only Variable with the const Keyword

3. Numbers and Arithmetic Operations

  • > 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

4. Strings

  • > 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 (String manipulation challenge)

5. Arrays

  • > 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 Method
  • > Manipulate Arrays With pop Method
  • > Manipulate Arrays With shift Method
  • > Manipulate Arrays With unshift Method
  • > Shopping List (Array manipulation challenge)
  • > Iterate Through an Array with a For Loop
  • > Accessing Nested Arrays

6. Functions

  • > 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 (Function challenge - queue simulation)
  • > Return Early Pattern for Functions

7. Conditional Logic (If/Else, Switch, Booleans)

  • > Understanding Boolean Values
  • > Use Conditional Logic with If Statements
  • > Introducing Else Statements
  • > Introducing Else If Statements
  • > Logical Order in If Else Statements
  • > Chaining If Else Statements
  • > Golf Code (Conditional logic challenge)
  • > Returning Boolean Values from Functions
  • > 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
  • > 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
  • > Use the Conditional (Ternary) Operator
  • > Use Multiple Conditional (Ternary) Operators

8. Objects

  • > 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
  • > Record Collection (Object manipulation challenge)
  • > Profile Lookup (Object lookup challenge)

9. Loops and Iteration

  • > Iterate with JavaScript While Loops
  • > Iterate with JavaScript For Loops
  • > Iterate Odd Numbers With a For Loop
  • > Count Backwards With a For Loop
  • > Nesting For Loops
  • > Iterate with JavaScript Do...While Loops

10. Recursion

  • > Replace Loops using Recursion
  • > Use Recursion to Create a Countdown
  • > Use Recursion to Create a Range of Numbers

11. Randomness and Parsing

  • > 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

12. Algorithm Challenges & Projects

(Comprehensive challenges applying concepts from multiple topics)

  • > Word Blanks
  • > Shopping List
  • > Stand in Line
  • > Golf Code
  • > Counting Cards
  • > Record Collection
  • > Profile Lookup

JavaScript ES6 Concepts Categorized

1. Variable Declarations & Scoping

  • > Compare Scopes of the var and let Keywords
  • > Mutate an Array Declared with const
  • > Prevent Object Mutation

2. Functions

  • > 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

3. Destructuring Assignment

  • > 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
  • > Destructuring via rest elements
  • > Use Destructuring Assignment to Pass an Object as a Function's Parameters

4. Template Literals & Object Shorthand

  • > Create Strings using Template Literals
  • > Write Concise Object Literal Declarations Using Object Property Shorthand
  • > Write Concise Declarative Functions with ES6

5. Classes & Object-Oriented Features

  • > Use class Syntax to Define a Constructor Function
  • > Use getters and setters to Control Access to an Object

6. Modules

  • > 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

7. Promises

  • > Create a JavaScript Promise
  • > Complete a Promise with resolve and reject
  • > Handle a Fulfilled Promise with then
  • > Handle a Rejected Promise with catch

8. The Spread Operator

  • > Use the Spread Operator to Evaluate Arrays In-Place

JavaScript Regular Expression Concepts Categorized

1. Basic Matching & Testing

  • > 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

2. Character Classes & Wildcards

  • > 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 All Letters and Numbers
  • > Match Everything But Letters and Numbers
  • > Match All Numbers
  • > Match All Non-Numbers
  • > Match Whitespace
  • > Match Non-Whitespace Characters

3. Quantifiers & Repetition

  • > Match Characters that Occur One or More Times
  • > Match Characters that Occur Zero or More Times
  • > Specify Upper and Lower Number of Matches
  • > Specify Only the Lower Number of Matches
  • > Specify Exact Number of Matches
  • > Check for All or None

4. Advanced Matching Techniques

  • > Find Characters with Lazy Matching
  • > Find One or More Criminals in a Hunt
  • > Match Beginning String Patterns
  • > Match Ending String Patterns
  • > Restrict Possible Usernames

5. Lookaheads & Grouping

  • > Positive and Negative Lookahead
  • > Check For Mixed Grouping of Characters
  • > Reuse Patterns Using Capture Groups

6. Search, Replace & Practical Applications

  • > Use Capture Groups to Search and Replace
  • > Remove Whitespace from Start and End

JavaScript Debugging Concepts Categorized

1. Console & Development Tools

  • > 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

2. Syntax & Common Mistakes

  • > 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

3. Logic & Function Errors

  • > Catch Arguments Passed in the Wrong Order When Calling a Function
  • > Catch Off By One Errors When Using Indexing

4. Loop & Control Flow Issues

  • > Use Caution When Reinitializing Variables Inside a Loop
  • > Prevent Infinite Loops with a Valid Terminal Condition

JavaScript Basic Data Structures Concepts Categorized

1. Array Fundamentals

  • > Use an Array to Store a Collection of Data
  • > Access an Array's Contents Using Bracket Notation
  • > Create complex multi-dimensional arrays

2. Array Manipulation - Adding/Removing

  • > 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()

3. Array Copying & Combining

  • > Copy Array Items Using slice()
  • > Copy an Array with the Spread Operator
  • > Combine Arrays with the Spread Operator

4. Array Searching & Iteration

  • > Check For The Presence of an Element With indexOf()
  • > Iterate Through All an Array's Items Using For Loops

5. Object Fundamentals

  • > Add Key-Value Pairs to JavaScript Objects
  • > Access Property Names with Bracket Notation
  • > Modify an Object Nested Within an Object

6. Object Manipulation & Inspection

  • > Use the delete Keyword to Remove Object Properties
  • > Check if an Object has a Property
  • > Modify an Array Stored in an Object

7. Object Iteration

  • > Iterate Through the Keys of an Object with a for...in Statement
  • > Generate an Array of All Object Keys with Object.keys()

JavaScript Basic Algorithm Scripting Concepts Categorized

1. String Manipulation

  • > Reverse a String
  • > Find the Longest Word in a String
  • > Confirm the Ending
  • > Repeat a String Repeat a String
  • > Truncate a String
  • > Title Case a Sentence
  • > Mutations

2. Array Operations

  • > Return Largest Numbers in Arrays
  • > Finders Keepers
  • > Falsy Bouncer
  • > Where do I Belong
  • > Chunky Monkey
  • > Slice and Splice

3. Mathematical Operations

  • > Convert Celsius to Fahrenheit
  • > Factorialize a Number

4. Type Checking & Validation

  • > Boo who
  • > Title Case a Sentence
  • > Slice and Splice
  • > Falsy Bouncer
  • > Where do I Belong
  • > Mutations
  • > Chunky Monkey

JavaScript Object Oriented Programming Concepts Categorized

1. Object Basics

  • > 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

2. Constructors & Instantiation

  • > 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

3. Prototypes & Inheritance

  • > 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

4. Classical Inheritance Patterns

  • > 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

5. Advanced Patterns & Techniques

  • > 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

JavaScript Functional Programming Concepts Categorized

1. Functional Programming Fundamentals

  • > Learn About Functional Programming
  • > Understand Functional Programming Terminology
  • > Understand the Hazards of Using Imperative Code
  • > Avoid Mutations and Side Effects Using Functional Programming

2. Pure Functions & Avoiding Side Effects

  • > Pass Arguments to Avoid External Dependence in a Function
  • > Refactor Global Variables Out of Functions

3. Array Transformation Methods

  • > 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
  • > Use the reduce Method to Analyze Data
  • > Use Higher-Order Functions map, filter, or reduce to Solve a Complex Problem

4. Immutable Array Operations

  • > 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
  • > Sort an Array Alphabetically using the sort Method
  • > Return a Sorted Array Without Changing the Original Array

5. String & Array Conversion

  • > 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

6. Array Validation Methods

  • > 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

7. Advanced Functional Concepts

  • > Introduction to Currying and Partial Application

JavaScript Intermediate Algorithm Scripting Concepts Categorized

1. Mathematical & Numerical Operations

  • > Sum All Numbers in a Range
  • > Sum All Odd Fibonacci Numbers
  • > Sum All Primes
  • > Smallest Common Multiple

2. Array Manipulation & Comparison

  • > Diff Two Arrays
  • > Seek and Destroy
  • > Sorted Union
  • > Drop it
  • > Steamroller

3. String Manipulation & Conversion

  • > Spinal Tap Case
  • > Pig Latin
  • > Convert HTML Entities
  • > Binary Agents

4. Object Operations & Search

  • > Wherefore art thou
  • > Search and Replace
  • > Everything Be True

5. Advanced Algorithm Challenges

  • > DNA Pairing
  • > Missing letters
  • > Arguments Optional
  • > Make a Person
  • > Map the Debris

Comments