
 Software Principles 1/5: Software Principles
Four Principles of Software Development: People, Effectiveness, Efficiency, and Relevancy
 JS Library 7/7: Pre-Releases and Nightly Releases
Learn how to setup pre-releases and nightly releases in your JavaScript library with semantic-release and github actions.
 JS Library 6/7: Maintenance Branches
Learn how to maintain multiple versions of your JavaScript library with maintenance branches.
 JS Library 5/7: Continuous Deployment
Learn how to continuous deployment to your JavaScript library with semantic-release and github actions.
 JS Library 4/7: Continuous Integration
Learn how to add continuous integration to your JavaScrit library with eslint, jasmine, and github actions.
 JS Library 3/7: Enforce Commit Message Conventions
Learn how to enforce commit message conventions in your JavaScript library with commitlint, husky, and commitizen.
 JS Library 2/7: Commit Message Conventions
Learn how to practice conventional and consistent commit messages in your JavaScript library.
 JS Library 1/7: Creating a JavaScript Library
Learn how to create and publish a public JavaScript library.
 Data Structures 7/7: Binary Search Trees
Learn how to implement binary search trees and see how they compare to other data structures.
 Data Structures 6/7: Binary Heaps
Learn how to implement min and max binary heaps and see how they compare to other data structures.
 Data Structures 5/7: Hash Tables
Learn how to implement hash tables and see how they compare to other data structures.
 Data Structures 4/7: Linked Lists
Learn how to implement linked lists and see how they compare to other data structures.
 Data Structures 3/7: Stacks and Queues
Learn how to implement stacks and queues and see how they compare to other data structures.
 Data Structures 2/7: Dynamic Arrays
Learn the most ubiquitous data structure in programming today, the dynamic array.
 Data Structures 1/7: Introduction
Learn the fundamental data structures of computer science. See a comparison of popular data structures. Learn the pros and cons...
 Analyzing Algorithms 6/6: Determinism
An explanation of deterministic vs nondeterministic problems and an introduction to P, NP, NP-Hard, NP-Complete, and the P versus NP...
 Analyzing Algorithms 5/6: Choosing the Best Alg...
Examples of analyzing algorithms with big O and asymptotic notation to choose the best one for a given situation.
 Analyzing Algorithms 4/6: Common Patterns of Gr...
An explanation of many common and recognizable patterns of growth that come up time and time again in analyzing algorithms....
 Analyzing Algorithms 3/6: Asymptotic Notation
An explanation of asymptotic notation: big O, little o, theta, big omega, and little omega.