Learn JavaScript
A free, interactive online JavaScript course. You write JS on every lesson, with AI hints when you get stuck and a certificate when you finish.
257,728+ codders enrolled
- Beginner friendly
AI-assisted coding help
Hands-on interactive lessons
Audio narration on every lesson
Quizzes to test your knowledge
Free certificate of completion
Syllabus
Section 1
Fundamentals
Start sectionStartExpandCollapseBuild a strong foundation with essential concepts and basic skillsIntroduction
4 lessons223- 01The LanguageChallenge
- 02Hello World!ChallengeQuiz
- 03CommentsQuiz
- 04Code StructureQuiz
Variables
7 lessons1247- 01NumbersChallengeMasteryQuiz
- 02StringChallengeMasteryQuiz
- 03BooleanChallengeMasteryQuiz
- 04Naming ConventionsChallengeMasteryQuiz
- 05Empty VariablesChallengeQuiz
- 06Recap - Initialize VariablesChallenge
- 07ConstantsChallengeMasteryQuiz
Operators Part 1
6 lessons1037- 01Arithmetic OperatorsChallengeMasteryQuiz
- 02Modulo OperatorChallengeMasteryQuiz
- 03Arithmetic ShortcutsChallengeMasteryQuiz
- 04Comparison OperatorsChallengeMasteryQuiz
- 05Strict vs Loose EqualityChallengeQuiz
- 06Recap - Simple MathChallenge
Operators Part 2
5 lessons831- 01Logical Operators Part 1ChallengeMasteryQuiz
- 02Logical Operators Part 2ChallengeMasteryQuiz
- 03Recap - Simple LogicChallenge
- 04Logical Operators Part 3ChallengeMasteryQuiz
- 05Type CoercionChallengeQuiz
Decision Making
5 lessons729- 01If StatementChallengeMasteryQuiz
- 02If - ElseChallengeMasteryQuiz
- 03Recap - Simple CalculatorChallenge
- 04Nested If - ElseChallengeQuiz
- 05Switch StatementChallengeQuiz
Basic IO
6 lessons931- 01OutputChallengeMasteryQuiz
- 02Output with VariablesChallengeMasteryQuiz
- 03Type Conversion - Part 1ChallengeMasteryQuiz
- 04Type Conversion - Part 2ChallengeQuiz
- 05Recap - Till 120Challenge
- 06Recap - True or FalseChallenge
Bill Split Calculator
Project4 lessons1- 01Welcome MessageChallenge
- 02Calculating The Tip And TotalProject
- 03Splitting The BillProject
- 04Formatted OutputProject
Loops
7 lessons1345- 01For LoopChallengeMasteryQuiz
- 02While LoopChallengeMasteryQuiz
- 03BreakChallengeMasteryQuiz
- 04ContinueChallengeMasteryQuiz
- 05Recap - FactorialChallenge
- 06Do While LoopChallengeMasteryQuiz
- 07Nested LoopChallengeMasteryQuiz
Functions
8 lessons1250- 01Declare a FunctionChallengeMasteryQuiz
- 02ArgumentsChallengeMasteryQuiz
- 03ReturnChallengeMasteryQuiz
- 04Recap - Sigma FunctionChallenge
- 05Function ExpressionChallengeMasteryQuiz
- 06Default ParametersQuiz
- 07Arrow FunctionsChallengeMasteryQuiz
- 08Recap - Validation FunctionChallenge
FizzBuzz with a Twist
Project4 lessons1- 01Game OverviewChallenge
- 02The FizzBuzz FunctionProject
- 03Looping The NumbersProject
- 04Adding The TwistProject
Arrays Part 1
6 lessons1037- 01Declaring an ArrayChallengeMasteryQuiz
- 02Accessing Array ElementsChallengeMasteryQuiz
- 03Modifying ArraysChallengeQuiz
- 04Array Methods Part 1ChallengeMasteryQuiz
- 05Array Methods Part 2ChallengeMasteryQuiz
- 06Recap - Array ProcessorChallenge
Arrays Part 2
8 lessons1254- 01Iterating Over ArraysChallengeQuiz
- 02The forEach MethodChallengeQuiz
- 03for...of LoopChallengeMasteryQuiz
- 04Recap - P CounterChallenge
- 05Array SlicingChallengeMasteryQuiz
- 06Array Methods Part 3ChallengeMasteryQuiz
- 07Array Methods Part 4ChallengeMasteryQuiz
- 08Membership TestingChallengeQuiz
Grocery List Tracker
Project4 lessons1- 01Project OverviewChallenge
- 02Add ItemProject
- 03Remove ItemProject
- 04View ListProject
Final Challenges
3 lessons37- 01Number PyramidChallengeQuiz
- 02Double The OddsChallenge
- 03What To BuyChallenge
Section 2
Logic & Flow
Start sectionStartExpandCollapseDevelop problem-solving skills and create dynamic, interactive programsStrings In Depth
5 lessons630- 01String FundamentalsQuiz
- 02Iterate Over StringsChallengeMasteryQuiz
- 03Template LiteralsChallengeQuiz
- 04String MethodsChallengeMasteryQuiz
- 05Recap - String WeaverChallenge
Multi-dimensional Arrays
9 lessons1452- 012D Arrays BasicsQuiz
- 02Accessing 2D Array ElementsChallengeMasteryQuiz
- 03Nested Loops with 2D ArraysChallengeMasteryQuiz
- 04Recap - 2D ArraysChallenge
- 05Matrix Addition & SubstractionChallengeMasteryQuiz
- 06Jagged ArraysChallengeMasteryQuiz
- 073D Arrays And BeyondChallengeMasteryQuiz
- 08Common 2D Array PatternsChallengeMasteryQuiz
- 09Recap - All About ArraysChallenge
JSON Part 1
7 lessons944- 01What is a JSON?Quiz
- 02Check If Key ExistsChallengeMasteryQuiz
- 03Object MethodsChallengeMasteryQuiz
- 04The Spread Operator Part 1Quiz
- 05The Spread Operator Part 2ChallengeMasteryQuiz
- 06Remove KeysChallengeMasteryQuiz
- 07Recap - JSON Manipulate KeysChallenge
JSON Part 2
6 lessons530- 01Iterate Over JSONChallengeQuiz
- 02Nested JSONChallengeQuiz
- 03JSON Optional ChainingQuiz
- 04Shallow And Deep CopyChallengeQuiz
- 05Recap - Bicycle ShopChallenge
- 06Recap - Solar SystemChallenge
Sets Part 1
8 lessons749- 01What Is A Set?ChallengeQuiz
- 02Iterating Over SetsQuiz
- 03Adding An ElementChallengeQuiz
- 04Removing An ElementChallengeQuiz
- 05Checking If An Element ExistsChallengeQuiz
- 06Size And Is EmptyChallengeQuiz
- 07Copy And ClearChallengeQuiz
- 08Recap - Basic Of SetsChallenge
Sets Part 2
6 lessons637- 01Math - Union Of SetsChallengeQuiz
- 02Math - Intersection Of SetsChallengeQuiz
- 03Math - Difference Of SetsChallengeQuiz
- 04Math - Symmetric DifferenceChallengeQuiz
- 05Subsets And SuperSetsChallengeQuiz
- 06Recap - Group FriendsChallenge
Library Management System
Project5 lessons1- 01Project OverviewChallenge
- 02Adding BooksProject
- 03Search By TitleProject
- 04Filter By GenreProject
- 05Mark As ReadProject
Arrays Interesting Topics
4 lessons422- 01Array DestructuringChallengeQuiz
- 02Spread Syntax in ArraysChallengeQuiz
- 03Sparse ArraysChallengeQuiz
- 04Recap - Arrays WorkshopChallenge
Advanced Array methods
9 lessons761- 01The Join & Split MethodsQuiz
- 02The Map Method ChallengeMasteryQuiz
- 03The Filter MethodChallengeQuiz
- 04The Reduce MethodChallengeQuiz
- 05Chaining Array MethodsChallengeQuiz
- 06ForEach And Map Are Same?Quiz
- 07The Sort MethodChallengeQuiz
- 08The Find & FindIndex MethodQuiz
- 09Recap - The Chain MasterChallenge
Manage Festival System
Project6 lessons1- 01Project OverviewChallenge
- 02Add Movies & VenuesProject
- 03Add ScreeningProject
- 04Buy TicketsProject
- 05Rate MoviesProject
- 06Cancel ScreeningsProject
Section 3
Introduction To TypeScriptDedicated page
Start sectionStartExpandCollapseIntroduction to typescript after learned about javascriptGetting Started with TS
5 lessons232- 01What is TypeScript?Quiz
- 02Why Use TypeScript?Quiz
- 03Your First TypeScript CodeChallengeQuiz
- 04Compilation Process & ErrorsQuiz
- 05Recap: Introduction to TSChallenge
Core Types
7 lessons748- 01Basic Types: str, num, booleanChallengeQuiz
- 02The 'any' Type: Escape HatchChallengeQuiz
- 03The 'unknown' TypeChallengeQuiz
- 04Working with 'null' & 'undef'ChallengeQuiz
- 05Type Inference in ActionChallengeQuiz
- 06Explicit Type AnnotationsChallengeQuiz
- 07Recap: Core Types PracticeChallenge
Data Structure: Arrays & Tuple
9 lessons862- 01Typed ArraysChallengeQuiz
- 02'readonly' Modifier for ArraysChallengeQuiz
- 03What is a Tuple?Quiz
- 04Declaring and Accessing TuplesChallengeQuiz
- 05Destructuring TuplesChallengeQuiz
- 06Readonly TuplesChallengeQuiz
- 07Multi-dimensional Typed ArraysChallengeQuiz
- 08 Spread Operator with ArraysChallengeQuiz
- 09Recap: Arrays and TuplesChallenge
Working with Functions
8 lessons855- 01Typing Params & Return ValuesChallengeQuiz
- 02Typing Arrow FunctionsChallengeQuiz
- 03The 'void' Return TypeChallengeQuiz
- 04Optional Parameters with '?'ChallengeQuiz
- 05Default Parameter ValuesChallengeQuiz
- 06Typing Rest ParametersChallengeQuiz
- 07Defining Function TypesChallengeQuiz
- 08Recap: Building Typed FuncsChallenge
Types: Aliases, Unions & Inter
7 lessons751- 01Type Aliases for PrimitivesChallengeQuiz
- 02Union Types ('|')ChallengeQuiz
- 03Working with Union TypesChallengeQuiz
- 04Literal TypesChallengeQuiz
- 05Intersection Types ('&')ChallengeQuiz
- 06Combining Type AliasesChallengeQuiz
- 07Recap: Advanced Type CombosChallenge
Typing Objects and Interfaces
8 lessons757- 01Inline Object Type AnnotationsChallengeQuiz
- 02Type Aliases for ObjectsChallengeQuiz
- 03Introduction to InterfacesChallengeQuiz
- 04Interfaces vs. Type AliasesQuiz
- 05Optional & Readonly PropsChallengeQuiz
- 06Extending Interfaces and TypesChallengeQuiz
- 07Adding Methods to InterfacesChallengeQuiz
- 08Recap: Defining Object ShapesChallenge
Project: A Simple Task List
Project6 lessons18- 01Project: Defining Task StructChallengeQuiz
- 02Function to Add a TaskProject
- 03Function to Change Task StatusProject
- 04Function: List Tasks by StatusProject
- 05Function: Print Task SummaryProject
- 06Putting It All TogetherProject
Enums
6 lessons638- 01What is a Numeric Enum?ChallengeQuiz
- 02Using Numeric EnumsChallengeQuiz
- 03What is a String Enum?ChallengeQuiz
- 04Using String EnumsChallengeQuiz
- 05Heterogeneous EnumsChallengeQuiz
- 06Recap: Using EnumsChallenge
Generics: A First Look
6 lessons537- 01The Problem Generics SolveQuiz
- 02Creating Generic Identity FuncChallengeQuiz
- 03Using a Generic FunctionChallengeQuiz
- 04Generic ArraysChallengeQuiz
- 05Generic InterfacesChallengeQuiz
- 06Recap: Generic Function PracChallenge
Project: Inventory Management
Project5 lessons18- 01Project: Generic Inventory IteChallengeQuiz
- 02Function: Add Items to InvProject
- 03Function to Find an Item by IDProject
- 04Create Specific Inventory TypeProject
- 05Function to Get Item DetailsProject
Advanced Topics
6 lessons642- 01Type AssertionsChallengeQuiz
- 02 Type Guards: in & instanceofChallengeQuiz
- 03The 'never' TypeChallengeQuiz
- 04Nullable Types ('strictNull')ChallengeQuiz
- 05Index Signatures for ObjectsChallengeQuiz
- 06Recap: Fine-Tuning TypesChallenge
Section 4
Object Oriented Programming
Start sectionStartExpandCollapseDiscover how to organize code with classes, objects, and reusable structuresObjects & The this Keyword
6 lessons642- 01Quick Review: ObjectsChallengeQuiz
- 02Adding Methods to ObjectsChallengeQuiz
- 03Understanding the this KeywordChallengeQuiz
- 04Constructor FunctionsChallengeQuiz
- 05The new KeywordChallengeQuiz
- 06Recap ChallengeChallenge
Organizing Code
4 lessons434- 01What are Modules?ChallengeQuiz
- 02Exporting with exportChallengeQuiz
- 03Importing with importChallengeQuiz
- 04Default vs. Named ExportsChallengeQuiz
Classes & Objects
4 lessons426- 01What is a Class?ChallengeQuiz
- 02Creating InstancesChallengeQuiz
- 03Properties and MethodsChallengeQuiz
- 04Recap ChallengeChallenge
Methods & Managing State
2 lessons218- 01Methods that modify stateChallengeQuiz
- 02Method chaining patternChallengeQuiz
Encapsulation & Access
4 lessons426- 01EncapsulationChallengeQuiz
- 02Public & Private Class FieldsChallengeQuiz
- 03Private MethodsChallengeQuiz
- 04Recap ChallengeChallenge
Project: A Simple Bank Account
Project3 lessons1- 01BankAccount ClassChallenge
- 02Deposits and WithdrawalsProject
- 03Balance as Private FieldProject
Inheritance & The extends Key
6 lessons645- 01InheritanceChallengeQuiz
- 02The "is-a" RelationshipChallengeQuiz
- 03The extends KeywordChallengeQuiz
- 04The super() MethodChallengeQuiz
- 05Inheriting Properties&MethodsChallengeQuiz
- 06Recap ChallengeChallenge
Organizing OOP Code
1 lesson19- 01Organize Classes into ModulesChallengeQuiz
Static Methods & Properties
4 lessons425- 01Class-Level vs. Instance-LevelChallengeQuiz
- 02Static PropertiesChallengeQuiz
- 03Static Utility MethodsChallengeQuiz
- 04Recap challengeChallenge
Polymorphism
4 lessons425- 01What is Polymorphism?ChallengeQuiz
- 02Overriding Inherited MethodsChallengeQuiz
- 03Using superChallengeQuiz
- 04Recap ChallengeChallenge
Project: A Shape Renderer
Project4 lessons1- 01Setup: Shape Class & ExportChallenge
- 02Circle Class InheritanceProject
- 03Overriding & Area MethodProject
- 04Static Shape CounterProject
Getters & Setters
4 lessons426- 01The get and set KeywordsChallengeQuiz
- 02Computed PropertiesChallengeQuiz
- 03Validation and Side EffectsChallengeQuiz
- 04Recap ChallengeChallenge
Composition vs. Inheritance
3 lessons328- 01The "has-a" vs. "is-a"ChallengeQuiz
- 02The Limits of Deep InheritanceChallengeQuiz
- 03Building objectsChallengeQuiz
Library Management System
Project3 lessons1- 01Designing the LibraryChallenge
- 02Book Class with CompositionProject
- 03Book Author ValidationProject
Final Challenges
4 lessons4- 01Game Character BuilderChallenge
- 02E-commerce Product SystemChallenge
- 03University Management SystemChallenge
- 04Smart Home Device SystemChallenge
JavaScript courses
Hands-on JavaScript courses, free to start in your browser.
Beginner Challenges - Practice Basic Concepts
PopularPut your beginner coding knowledge to test and try to solve this programming challenges, use any language you want, Happy Coding!
Certificate on completion
- 20
- 20
Coding Problems
PopularPut your programming problem solving skills to the test using the exercises with different difficulties in this course. Designed for coders with some prior knowledge of the basic syntax in any programming language.
Certificate on completion
- 32
- 31
Coding Problems: Volume 2
Put your programming problem solving skills to the test using the exercises with different difficulties in this course. Designed for coders with some prior knowledge of the basic syntax in any programming language. This course is an extension of the first Coding Problems
Certificate on completion
- 25
- 24
Stack - Data Structures Series #1
In this course, you will learn about the Stack data structure, create a Stack from zero using your preferred language, and practice coding challenges with it!
- 13
- 6
- 1
Heaps & Priority Queues - Data Structures Series #7
NewIn this course, you will learn about the Heap data structure (the backbone of priority queues), create a MinHeap from zero using your preferred language, and practice coding challenges with it!
Certificate on completion
- 14
- 6
- 1
Star Pattern Bootcamp
Put your programming problem solving skills to learn how to print star patterns range from simple to complex, involving different levels of nested loops, conditional statements, and mathematical calculations.
- 30
- 28
Why learn JavaScript with Coddy
- Run JavaScript instantly in your browser. No Node.js install, no IDE setup. The editor and output sit side-by-side, so the JavaScript feedback loop is short.
- Modern JavaScript: ES6+ syntax, arrow functions, promises, async/await, destructuring, modules - the JavaScript you'd write on the job, not legacy patterns.
- AI hints help you debug an exercise without spoiling the solution, so you build the mental model that makes future JS code easier to write.
- Free JavaScript certificate of completion when you finish the course - a credible proof point alongside any portfolio projects or GitHub repos.