This repository documents my journey through the freeCodeCamp JavaScript Algorithms and Data Structures curriculum. It features a collection of hands-on projects and algorithmic challenges, showcasing both fundamental and advanced JavaScript skills. The projects span from simple utilities to interactive web applications, each designed to reinforce core programming concepts and best practices.
- Curriculum: freeCodeCamp JavaScript Algorithms and Data Structures
- Focus: Mastery of JavaScript through real-world projects and algorithmic problem-solving
- Status: In Progress (see project table below for details)
- Project Types: Console/CLI scripts, browser-based apps, games, utilities
| # | Project Name | Status | Key Skills |
|---|---|---|---|
| 1 | Palindrome Checker | โ | String manipulation, algorithmic thinking |
| 2 | Roman Numeral Converter | โ | Algorithmic thinking, number systems |
| 3 | Telephone Number Validator | โ | Regular expressions, pattern matching |
| 4 | Cash Register | โณ | Currency handling, algorithmic thinking |
| 5 | Pokemon Search App | โณ | API interaction, asynchronous programming |
- Comprehensive Coverage: From basic string/array manipulation to DOM, OOP, and async programming
- Diverse Projects: Games, calculators, utilities, and data-driven apps
- Modern JavaScript: ES6+ syntax, array methods, event handling, and more
- Self-Contained: Most projects require only a web browser or Node.js
- Progress Tracking: Visual status for each project (โ Complete, โณ In Progress)
| # | Project Name | Status | Key Skills |
|---|---|---|---|
| 1 | Pyramid Generator | โ | Arrays, strings, loops, functions |
| 2 | GradeBook App | โ | Functions, data manipulation, conditionals |
| 3 | Role Playing Game | โ | OOP, game logic, DOM, event handling |
| 4 | Random Background Color Changer | โ | DOM, events, debugging, color generation |
| 5 | Calorie Counter | โ | Form validation, calculations, DOM updates |
| 6 | Rock, Paper, Scissors Game | โ | DOM, conditionals, game logic |
| 7 | Music Player | โ | Audio API, playlist, array methods |
| 8 | Date Formatter | โ | Date object, string formatting |
| 9 | Football Team Cards | โ | Data processing, object destructuring |
| 10 | Todo App | โ | CRUD, local storage, form handling |
| 11 | Decimal to Binary Converter | โ | Recursion, algorithmic thinking, animation |
| 12 | Spam Filter | โ | Regex, pattern matching, text filtering |
| 13 | Number Sorter | โ | Sorting algorithms, visualization |
| 14 | Statistics Calculator | โ | Array methods, statistics, chaining |
| 15 | Spreadsheet | โ | Expression parsing, data structures |
| 16 | Shopping Cart | โ | OOP, classes, e-commerce logic |
| 17 | PlatFormer Game | โณ | OOP, inheritance, game development |
| 18 | Dice Game | โณ | Game state, UI updates, algorithmic thinking |
| 19 | fCC Authors Page | โณ | API, fetch, async/await, pagination |
| 20 | fCC Forum Leaderboard | โณ | Promises, async/await, error handling |
- Node.js (for CLI/console projects)
- Modern web browser (for browser-based projects)
- Clone the repository:
git clone https://github.com/akosikhada/javascript-algorithms-and-data-structures-freecodecamp.git cd javascript-algorithms-and-data-structures-freecodecamp - Navigate to a project directory:
- For example:
cd "#03 - ROLE PLAYING GAME"
- For example:
- Open the
index.htmlfile in your preferred browser. - Example:
cd "#06 - ROCK, PAPER, SCISSORS GAME" start index.html # On Windows # or open index.html # On macOS # or xdg-open index.html # On Linux
- Run the JavaScript file using Node.js:
- Example:
cd "#01 - PYRAMID GENERATOR" node script.js
A project that builds a text-based pyramid generator using fundamental JavaScript concepts like arrays, strings, functions, loops, and conditional statements. This project strengthens algorithmic thinking by requiring the creation of nested loops to generate patterns of increasing and decreasing width.
A mini-project reinforcing JavaScript fundamentals by building a gradebook application to manage and calculate student grades. This application processes student scores, computes averages, and assigns letter grades based on configurable grading scales.
An interactive RPG demonstrating object-oriented programming concepts, game logic implementation, and event handling. Players navigate through multiple locations, battle monsters with different abilities, manage inventory items, and track game statistics like health and gold.
A project focusing on debugging techniques while implementing a random background color generator with DOM manipulation. This application generates random RGB or hexadecimal color values and applies them to page elements, featuring a clean user interface with color preview.
An application for tracking calorie intake with form validation, calculations, and dynamic UI updates. Users can input meals and their caloric content, set daily budgets, and visualize their remaining calorie allowance with input validation using regular expressions.
A classic game implementation showcasing conditional logic and DOM manipulation. Players compete against the computer, which makes randomized choices. The interface displays game outcomes, tracks scores, and offers a responsive design with animated elements for enhanced user experience.
A functional audio player with playlist management capabilities using the Web Audio API. Features include play, pause, skip, and shuffle controls along with a visual representation of the current track. The application demonstrates array methods for playlist manipulation and dynamic content rendering.
A utility tool for handling and formatting dates in various international formats. This project explores the complexities of the JavaScript Date object, timezone handling, and string manipulation techniques to create a flexible date conversion system.
An interactive card display system for football team players. This application processes player datasets, implements filtering and sorting options, and demonstrates object destructuring techniques. The cards feature dynamic content updates and responsive layout adjustments.
A complete task management application with data persistence using browser local storage. Users can create, read, update, and delete tasks while organizing them by priority or completion status. The interface includes dynamic filtering capabilities and visual indicators for task status.
A project that converts decimal numbers to binary using recursive techniques. This application demonstrates the power of recursion by breaking down the conversion process into simpler sub-problems. Features include a step-by-step visualization of the recursion process, call stack exploration, and an animated interface showing how the binary representation is built through recursive function calls.
A text analysis tool utilizing regular expressions to identify potential spam content in messages. This project explores advanced regex techniques like capture groups and lookaheads to analyze patterns in text, with confidence scoring for potential spam detection.
A visualization tool for fundamental sorting algorithms including bubble sort, selection sort, and insertion sort. The application provides step-by-step animation of algorithm execution, comparative performance metrics, and interactive controls to adjust sort parameters.
A mathematical utility for performing statistical calculations on numerical datasets. Users can input collections of numbers to calculate mean, median, mode, variance, and standard deviation. The implementation showcases array methods like map, reduce, and filter with method chaining.
A simplified spreadsheet application with formula evaluation capabilities and cell references. This project demonstrates functional programming principles, expression parsing, and dynamic recalculation of dependent cells when values change.
An e-commerce cart system utilizing object-oriented programming principles. The application manages product catalogs, handles quantity adjustments, calculates totals with discounts, and simulates checkout processes while demonstrating class-based architecture.
A side-scrolling platform game showcasing inheritance and advanced OOP concepts. The game implements character movement, physics (gravity, collision detection), level design, and scoring mechanics, with reusable component designs for game elements.
A strategic dice game with complex scoring rules and turn management. Players roll dice, make decisions based on current results, and compete for high scores. The game manages state transitions, validates moves, and provides an engaging user interface with animations.
A web application that fetches and displays author data from an external API with pagination controls. This project demonstrates asynchronous JavaScript techniques, API interaction patterns, and dynamic content rendering with efficient data handling.
A real-time leaderboard displaying forum activity metrics fetched from external APIs. The implementation features asynchronous data retrieval, error handling with try/catch statements, and automated refresh capabilities to keep the display current.
Built with โค๏ธ while learning JavaScript at freeCodeCamp