Getting Started
Join the Free Code Camp Community
- Learn how Free Code Camp Works
- Create a GitHub Account and Join our Chat Rooms
- Configure your Code Portfolio
- Join a Campsite in Your City
- Learn What to Do If You Get Stuck
Front End Development Certification
HTML5 and CSS
- Challenge: Say Hello to HTML Elements
- Challenge: Headline with the h2 Element
- Challenge: Inform with the Paragraph Element
- Challenge: Make Unique Objects by Passing Parameters to our Constructor
- Challenge: Uncomment HTML
- Challenge: Comment out HTML
- Challenge: Fill in the Blank with Placeholder Text
- Challenge: Delete HTML Elements
- Challenge: Change the Color of Text
- Challenge: Use CSS Selectors to Style Elements
- Challenge: Use a CSS Class to Style an Element
- Challenge: Style Multiple Elements with a CSS Class
- Challenge: Change the Font Size of an Element
- Challenge: Set the Font Family of an Element
- Challenge: Import a Google Font
- Challenge: Specify How Fonts Should Degrade
- Challenge: Add Images to your Website
- Challenge: Size your Images
- Challenge: Add Borders Around your Elements
- Challenge: Add Rounded Corners with a Border Radius
- Challenge: Make Circular Images with a Border Radius
- Challenge: Link to External Pages with Anchor Elements
- Challenge: Nest an Anchor Element within a Paragraph)
- Challenge: Make Dead Links using the Hash Symbol
- Challenge: Turn an Image into a Link
- Challenge: Add Alt Text to an Image for Accessibility
- Challenge: Create a Bulleted Unordered List
- Challenge: Create an Ordered List
- Challenge: Create a Text Field
- Challenge: Add Placeholder Text to a Text Field
- Challenge: Create a Form Element
- Challenge: Add a Submit Button to a Form
- Challenge: Use HTML5 to Require a Field
- Challenge: Create a Set of Radio Buttons
- Challenge: Create a Set of Checkboxes
- Challenge: Check Radio Buttons and Checkboxes by Default
- Challenge: Nest Many Elements within a Single Div Element
- Challenge: Give a Background Color to a Div Element
- Challenge: Set the ID of an Element
- Challenge: Use an ID Attribute to Style an Element
- Challenge: Adjusting the Padding of an Element
- Challenge: Adjust the Margin of an Element
- Challenge: Add a Negative Margin to an Element
- Challenge: Add Different Padding to Each Side of an Element
- Challenge: Add Different Margins to Each Side of an Element
- Challenge: Use Clockwise Notation to Specify the Padding of an Element
- Challenge: Use Clockwise Notation to Specify the Margin of an Element
- Challenge: Style the HTML Body Element
- Challenge: Inherit Styles from the Body Element Complete
- Challenge: Prioritize One Style Over Another Complete
- Challenge: Override Styles in Subsequent CSS Complete
- Challenge: Override Class Declarations by Styling ID Attributes Complete
- Challenge: Override Class Declarations with Inline Styles Complete
- Challenge: Override All Other Styles by using Important Complete
- Challenge: Use Hex Code for Specific Colors Complete
- Challenge: Use Hex Code to Color Elements White Complete
- Challenge: Use Hex Code to Color Elements Red Complete
- Challenge: Use Hex Code to Color Elements Green Complete
- Challenge: Use Hex Code to Color Elements Blue
- Challenge: Use Hex Code to Mix Colors
- Challenge: Use Hex Code to Color Elements Gray
- Challenge: Use Hex Code for Specific Shades of Gray
- Challenge: Use Abbreviated Hex Code
- Challenge: Use RGB values to Color Elements
- Challenge: Use RGB to Color Elements White
- Challenge: Use RGB to Color Elements Red
- Challenge: Use RGB to Color Elements Green
- Challenge: Use RGB to Color Elements Blue
- Challenge: Use RGB to Mix Colors
- Challenge: Use RGB to Color Elements Gray
Responsive Design with Bootstrap
- Challenge: Use Responsive Design with Bootstrap Fluid Containers
- Challenge: Make Images Mobile Responsive
- Challenge: Center Text with Bootstrap
- Challenge: Create a Bootstrap Button
- Challenge: Create a Block Element Bootstrap Button
- Challenge: Taste the Bootstrap Button Color Rainbow
- Challenge: Call out Optional Actions with Button Info
- Challenge: Warn your Users of a Dangerous Action
- Challenge: Use the Bootstrap Grid to Put Elements Side By Side
- Challenge: Ditch Custom CSS for Bootstrap
- Challenge: Use Spans for Inline Elements
- Challenge: Create a Custom Heading
- Challenge: Add Font Awesome Icons to our Buttons
- Challenge: Add Font Awesome Icons to all of our Buttons
- Challenge: Responsively Style Radio Buttons
- Challenge: Responsively Style Checkboxes
- Challenge: Style Text Inputs as Form Controls
- Challenge: Line up Form Elements Responsively with Bootstrap
- Challenge: Create a Bootstrap Headline
- Challenge: House our page within a Bootstrap Container Fluid Div
- Challenge: Create a Bootstrap Row
- Challenge: Split your Bootstrap Row
- Challenge: Create Bootstrap Wells
- Challenge: Add Elements within your Bootstrap Wells
- Challenge: Apply the Default Bootstrap Button Style
- Challenge: Create a Class to Target with jQuery Selectors
- Challenge: Add ID Attributes to Bootstrap Elements
- Challenge: Label Bootstrap Wells
- Challenge: Give Each Element a Unique ID
- Challenge: Label Bootstrap Buttons
- Challenge: Use Comments to Clarify Code
Gear up for Success
- Join our LinkedIn Alumni Network
- Join our Subreddit
- Read Coding News on our Medium Publication
- Watch us Code Live on Twitch.tv
- Challenge: Commit to a Goal and a Nonprofit
jQuery
- Challenge: Learn how Script Tags and Document Ready Work
- Challenge: Target HTML Elements with Selectors Using jQuery
- Challenge: Target Elements by Class Using jQuery
- Challenge: Target Elements by ID Using jQuery
- Challenge: Delete your jQuery Functions
- Challenge: Target the same element with multiple jQuery Selectors
- Challenge: Remove Classes from an element with jQuery
- Challenge: Change the CSS of an Element Using jQuery
- Challenge: Disable an Element Using jQuery
- Challenge: Change Text Inside an Element Using jQuery
- Challenge: Remove an Element Using jQuery
- Challenge: Use appendTo to Move Elements with jQuery
- Challenge: Clone an Element Using jQuery
- Challenge: Target the Parent of an Element Using jQuery
- Challenge: Target the Children of an Element Using jQuery
- Challenge: Target a Specific Child of an Element Using jQuery
- Challenge: Target Even Numbered Elements Using jQuery
- Challenge: Use jQuery to Modify the Entire Page
Basic Front End Development Projects
- Get Set for our Front End Development Projects
- Build a Tribute Page
- Build a Personal Portfolio Webpage
Basic JavaScript
- Challenge: Comment your JavaScript Code
- Challenge: Understand Boolean Values
- Challenge: Declare JavaScript Variables
- Challenge: Storing Values with the Equal Operator
- Challenge: Initializing Variables with the Equal Operator
- Challenge: Understanding Uninitialized Variables
- Challenge: Understanding Case Sensitivity in Variables
- Challenge: Add Two Numbers with JavaScript
- Challenge: Subtract One Number from Another with JavaScript
- Challenge: Multiply Two Numbers with JavaScript
- Challenge: Divide One Number by Another with JavaScript
- Challenge: Increment a Number with Javascript
- Challenge: Decrement a Number with Javascript
- Challenge: Create Decimal Numbers with JavaScript
- Challenge: Multiply Two Decimals with JavaScript
- Challenge: Divide one Decimal by Another with JavaScript
- Challenge: Finding a Remainder in Javascript
- Challenge: Assignment with Plus Equals
- Challenge: Assignment with Minus Equals
- Challenge: Assignment with Times Equals
- Challenge: Assignment with Divided by Equals
- Checkpoint: Convert Celsius to Fahrenheit
- Challenge: Declare String Variables
- Challenge: Escaping Literal Quotes in Strings
- Challenge: Quoting Strings with Single Quotes
- Challenge: Escape Sequences in Strings
- Challenge: Concatenating Strings with Plus Operator
- Challenge: Concatenating Strings with the Plus Equals Operator
- Challenge: Constructing Strings with Variables
- Challenge: Appending Variables to Strings
- Challenge: Find the Length of a String
- Challenge: Use Bracket Notation to Find the First Character in a String
- Challenge: Understand String Immutability
- Challenge: Use Bracket Notation to Find the Nth Character in a String
- Challenge: Use Bracket Notation to Find the Last Character in a String
- Challenge: Use Bracket Notation to Find the Nth-to-Last Character in a String
- Checkpoint: Word Blanks
- Challenge: Store Multiple Values in one Variable using JavaScript Arrays
- Challenge: Nest one Array within Another Array
- Challenge: Access Array Data with Indexes
- Challenge: Modify Array Data With Indexes
- Challenge: Access Multi-Dimensional Arrays With Indexes
- Challenge: Manipulate Arrays With pop()
- Challenge: Manipulate Arrays With push()
- Challenge: Manipulate Arrays With shift()
- Challenge: Manipulate Arrays With unshift()
- Checkpoint: Shopping List
- Challenge: Write Reusable JavaScript with Functions
- Challenge: Passing Values to Functions with Arguments
- Challenge: Global Scope and Functions
- Challenge: Local Scope and Functions
- Challenge: Global vs. Local Scope in Functions
- Challenge: Return a Value from a Function with Return
- Challenge: Assignment with a Returned Value
- Checkpoint: Stand in Line
- Challenge: Use Conditional Logic with If-Else Statements
- Challenge: Comparison with the Equality Operator
- Challenge: Comparison with the Strict Equality Operator
- Challenge: Comparison with the Inequality Operator
- Challenge: Comparison with the Strict Inequality Operator
- Challenge: Comparison with the Greater Than Operator
- Challenge: Comparison with the Greater Than Equal To Operator
- Challenge: Comparison with the Less Than Operator
- Challenge: Comparison with the Less Than Equal To Operator
- Challenge: Comparisons with the Logical And Operator
- Challenge: Comparisons with the Logical Or Operator
- Challenge: Introducing Else Statements
- Challenge: Introducing Else If Statements
- Challenge: Logical Order in If Else Statements
- Challenge: Chaining If Else Statements
- Checkpoint: Golf Code
- Challenge: Selecting from many options with Switch Statements
- Challenge: Adding a default option in Switch statements
- Challenge: Multiple Identical Options in Switch Statements
- Challenge: Replacing If Else Chains with Switch
- Challenge: Returning Boolean Values from Functions
- Challenge: Return Early Pattern for Functions
- Checkpoint: Counting Cards
- Challenge: Build JavaScript Objects
- Challenge: Accessing Objects Properties with the Dot Operator
- Challenge: Accessing Objects Properties with Bracket Notation
- Challenge: Accessing Objects Properties with Variables
- Challenge: Updating Object Properties
- Challenge: Add New Properties to a JavaScript Object
- Challenge: Delete Properties from a JavaScript Object
- Challenge: Using Objects for Lookups
- Challenge: Testing Objects for Properties
- Challenge: Introducing JavaScript Object Notation (JSON)
- Challenge: Accessing Nested Objects in JSON
- Challenge: Accessing Nested Arrays in JSON
- Checkpoint: Record Collection
- Challenge: Iterate with JavaScript For Loops
- Challenge: Iterate Odd Numbers With a For Loop
- Challenge: Count Backwards With a For Loop
- Challenge: Iterate Through an Array with a For Loop
- Challenge: Nesting For Loops
- Challenge: Iterate with JavaScript While Loops
- Checkpoint: Profile Lookup
- Challenge: Generate Random Fractions with JavaScript
- Challenge: Generate Random Whole Numbers with JavaScript
- Challenge: Generate Random Whole Numbers within a Range
- Challenge: Sift through Text with Regular Expressions
- Challenge: Find Numbers with Regular Expressions
- Challenge: Find White Space with Regular Expressions
- Challenge: Invert Regular Expression Matches with JavaScript
Object Oriented and Functional Programming
- Challenge: Declare JavaScript Objects as Variables
- Challenge: Construct JavaScript Objects with Functions
- Challenge: Make Object Properties Private
- Challenge: Make Instances of Objects with a Constructor Function
- Challenge: Iterate over Arrays with .map
- Challenge: Condense arrays with .reduce
- Challenge: Filter Arrays with .filter
- Challenge: Sort Arrays with .sort
- Challenge: Reverse Arrays with .reverse
- Challenge: Concatenate Strings with .concat
- Challenge: Split Strings with .split
- Challenge: Join Strings with .join
Basic Algorithm Scripting
- Algorithm: Get Set for our Algorithm Challenges
- Algorithm: Reverse a String
- Algorithm: Factorialize a Number
- Algorithm: Check for Palindromes
- Algorithm: Find the Longest Word in a String
- Algorithm: Title Case a Sentence
- Algorithm: Return Largest Numbers in Arrays
- Algorithm: Confirm the Ending
- Algorithm: Repeat a string repeat a string
- Algorithm: Truncate a string
- Algorithm: Chunky Monkey
- Algorithm: Slasher Flick
- Algorithm: Mutations
- Algorithm: Falsy Bouncer
- Algorithm: Seek and Destroy
- Algorithm: Where do I belong
- Algorithm: Caesar's Cipher
JSON APIs and Ajax
- Challenge: Trigger Click Events with jQuery
- Challenge: Change Text with Click Events
- Challenge: Get JSON with the jQuery getJSON Method
- Challenge: Convert JSON Data to HTML
- Challenge: Render Images from Data Sources
- Challenge: Prefilter JSON
- Challenge: Get Geo-location Data
Intermediate Front End Development Projects
- Build a Random Quote Machine
- Show the Local Weather
- Build a Wikipedia Viewer
- Use the Twitch.tv JSON API
Intermediate Algorithm Scripting
- Algorithm: Sum All Numbers in a Range
- Algorithm: Diff Two Arrays
- Algorithm: Roman Numeral Converter
- Algorithm: Where art thou
- Algorithm: Search and Replace
- Algorithm: Pig Latin
- Algorithm: DNA Pairing
- Algorithm: Missing letters
- Algorithm: Boo who
- Algorithm: Sorted Union
- Algorithm: Convert HTML Entities
- Algorithm: Spinal Tap Case
- Algorithm: Sum All Odd Fibonacci Numbers
- Algorithm: Sum All Primes
- Algorithm: Smallest Common Multiple
- Algorithm: Finders Keepers
- Algorithm: Drop it
- Algorithm: Steamroller
- Algorithm: Binary Agents
- Algorithm: Everything Be True
- Algorithm: Arguments Optional
Advanced Algorithm Scripting
- Algorithm: Validate US Telephone Numbers
- Algorithm: Symmetric Difference
- Algorithm: Exact Change
- Algorithm: Inventory Update
- Algorithm: No repeats please
- Algorithm: Friendly Date Ranges
- Algorithm: Make a Person
- Algorithm: Map the Debris
- Algorithm: Pairwise
Advanced Front End Development Projects
- Build a JavaScript Calculator
- Build a Pomodoro Clock
- Build a Tic Tac Toe Game
- Build a Simon Game
Claim Your Front End Development Certificate
Data Visualization Certification
Sass
- Learn Sass Challenges Incomplete
React
- Learn React Challenges
React Projects
- Build a Markdown Previewer
- Build a Camper Leaderboard
- Build a Recipe Box
- Build the Game of Life
- Build a Rouguelike Dungeon Crawler Game
D3
- Learn D3 Challenges
Data Visualization Projects
- Visualize Data with a Bar Chart
- Visualize Data with a Scatterplot Graph
- Visualize Data with a Heat Map
- Show Relationships with a Force Directed Graph
- Map Data Across the Globe
Claim Your Data Visualization Certificate
- Claim Your Data Visualization Certificate
Back End Development Certification
Automated Testing and Debugging
Git
Node.js and Express.js
- Challenge: Manage Packages with NPM
- Challenge: Start a Node.js Server
- Challenge: Continue working with Node.js Servers
- Challenge: Finish working with Node.js Servers
- Challenge: Build Web Apps with Express.js
MongoDB
- Challenge: Store Data in MongoDB
API Projects
- Get Set for our Back End Development Projects
- Timestamp Microservice
- Request Header Parser Microservice
- URL Shortener Microservice
- Image Search Abstraction Layer
- File Metadata Microservice
Dynamic Web Applications Projects
- Build a Voting App
- Build a Nightlife Coordination App
- Chart the Stock Market
- Manage a Book Trading Club
- Build a Pinterest Clone
Claim Your Back End Development Certificate
- Claim Your Back End Development Certificate
Video Challenges
Computer Basics
- Computer Basics: The 4 Basic Parts of a Computer
- Computer Basics: More Computer Hardware
- Computer Basics: Chips and Moore's Law
- Computer Basics: Intro to Binary Code
- Computer Basics: Decoding a Binary Number
- Computer Basics: How To Measure Data Size
- Computer Basics: Measuring Data Speed
- Computer Basics: Binary Bytes
- Computer Basics: Types of Computers
- Computer Basics: More on the Motherboard
- Computer Basics: Data Networks
- Computer Basics: IP Addresses
- Computer Basics: How the Internet Works
- Computer Basics: Software
- Computer Basics: Content Delivery Networks
- Analog vs Digital and File Compression
- Routers and Packets
- Source Code
- Variables In Code
- What Do Programmers Do?
- Console and Logging
- Computer Security
The DOM
- The DOM: What's the Document Object Model?
- The DOM: Style in the Header, Script in the Footer
JavaScript Lingo
- JavaScript Lingo: MDN and Documentation
- JavaScript Lingo: Value Types
- JavaScript Lingo: Variables & camelCase
- JavaScript Lingo: Arrays & Objects
- JavaScript Lingo: Finding and Indexing Data in Arrays
- JavaScript Lingo: Manipulating Data
- JavaScript Lingo: Math
- JavaScript Lingo: Loops JavaScript Lingo: Regular Expressions
Chrome Developer Tools
- Chrome Dev Tools: Elements
- Chrome Dev Tools: Network
- Chrome Dev Tools: Sources
- Chrome Dev Tools: Timeline
- Chrome Dev Tools: Profiles
- Chrome Dev Tools: Resources
- Chrome Dev Tools: Audits
- Chrome Dev Tools: Console
- Chrome Dev Tools: Summary
Big O Notation
- Big O Notation: What It Is and Why You Should Care
- Big O Notation: A Few Examples
Full Stack Development Certification
Nonprofit Projects
- Greenfield Nonprofit Project #1
- Greenfield Nonprofit Project #2
- Legacy Code Nonprofit Project #1
- Legacy Code Nonprofit Project #2
- Claim your Full Stack Development Certification
Coding Interview Preparation
Coding Interview Training
- Soft Skill Training
- Critical Thinking Training
- Whiteboard Coding Training
Mock Interviews
- Mock Interview #1
- Mock Interview #2
- Mock Interview #3