humanwhocodes/computer-science-in-javascript
humanwhocodes/computer-science-in-javascript has 9,112 GitHub stars and 1,168 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-07 13:33 UTC. Last push 2026-01-08.
Collection of classic computer science paradigms, algorithms, and approaches written in JavaScript.
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalComputer Science in JavaScript
If you find this useful, please consider supporting my work with a donation.
Description
Collection of classic computer science paradigms, algorithms, and approaches written in JavaScript. This is the source code for the series of blog posts on my website.
Folder Structure
The most recent packages are found in these directories:
src- the implementation source codetests- tests for the implementation source code
These directories contain old implementations that will be replaced eventually, they are just here to avoid confusing people who find this repo through the old blog posts:
data-structures- data structure implementations that have not been updated yetencodings- encoding implementations that have not been updated yetalgorithms- miscellanous algorithm implementations that have not been updated yet
As I update these, implementations will move from these folders into src.
Branches
- 2009 - the branch containing all of the original implementations as reflected in my 2009 blog post series.
- master - the branch where I'm updating the original implementations to use ECMAScript 2018 and later features.
Installing
You must be using Node.js v8 or later.
First, clone the repo:
$ git clone git://github.com/humanwhocodes/computer-science-in-javascript.git
$ cd computer-science-in-javascript
Then install the dependencies:
$ npm install
You can then run tests like this:
$ npm test
Updated Blog Posts (2019)
These are the most recent blog posts covering the most recent version of the code.
Data Structures
Original Blog Posts
At some point I will update these blog posts for the new implementations. For now, they still refer only to the 2009 version of this code.
Data Structures
- Binary Search Tree: Part 1, Part 2
- Doubly Linked List
- Linked List
Sorting Algorithms
Other Algorithms
Note on Code Style
You may find the code style of this module to be overly verbose with a lot of comments. That is intentional, as the primary use of this module is intended to be for educational purposes. There are frequently more concise ways of implementing the details of this class, but the more concise ways are difficult for newcomers who are unfamiliar with linked lists as a concept or JavaScript as a whole.
Issues and Pull Requests
As this is part of series of tutorials I'm writing, only bug fixes will be accepted. No new functionality will be added to this module.
License
MIT
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
560,875 starspublic-apis/public-apis
A collective list of free APIs
497,120 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
441,926 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,168 stars