# General Learning Resources

## A

### Apple

#### Developer resources

- Downloadable resources for developers (e.g., XCode tools, etc.)

### Array (data structure)

- Arrays: Discussion on coursera
- What is the array data structure?: Discussion about the array data structure on guru99.

## B

### Bit manipulation

- Algorithms: Bit Manipulation: Video on bit manipulation by the author of the
*Cracking the Coding Interview*book.

### Blogs

#### Career

##### Handbooks

- Front End Interview Handbook: By Yangshun Tay, this is similar to the Tech Interview Handbook by the same author.

##### Interviewing

- interviewing.io blog: better interviewing (and hiring) through data

#### Computer science

##### Basecs

The basecs blog is on Medium with the following tagline: "Exploring the basics of computer science, every Monday, for a year." Below are some of the contents.

- Fundamentals
- Data Structures
- Algorithms
- Theory in Practice

- What's a Linked List, Anyway? [Part 1]
- What's a Linked List, Anyway? [Part 2]
- Stacks and Overflows
- To Queue Or Not To Queue
- How To Not Be Stumped By Trees
- Leaf It Up To Binary Trees
- A Gentle Introduction To Graph Theory
- Taking Hash Tables Off The Shelf
- Hashing Out Hash Functions
- Set Theory: the Method To Database Madness
- Learning to Love Heaps
- Trying to Understand Tries
- Compressing Radix Trees Without (Too Many) Tears
- The Little AVL Tree That Could
- Finding Fibonacci In Golden Trees
- Painting Nodes Black With Red-Black Trees
- Busying Oneself With B-Trees
- From Theory To Practice: Representing Graphs
- Going Broad In A Graph: BFS Traversal
- Deep Dive Through A Graph: DFS Traversal
- Spinning Around In Cycles With Directed Acyclic Graphs
- Finding The Shortest Path, With A Little Help From Dijkstra
- Less Repetition, More Dynamic Programming
- Grammatically Rooting Oneself With Parse Trees
- Leveling Up One's Parsing Game With ASTs

- Leaf It Up To Binary Trees
- Looking For The Logic Behind Logarithms
- Königsberg: Seven Small Bridges, One Giant Graph Problem
- Demystifying Depth-First Search
- Breaking Down Breadth-First Search
- Sorting Out The Basics Behind Sorting Algorithms
- Exponentially Easy Selection Sort
- Bubbling Up With Bubble Sorts
- Inching Towards Insertion Sort
- Making Sense of Merge Sort [Part 1]
- Making Sense of Merge Sort [Part 2]
- Pivoting To Understand Quicksort [Part 1]
- Pivoting To Understand Quicksort [Part 2]
- Heapify All The Things With Heap Sort
- Counting Linearly With Counting Sort
- Getting To The Root Of Sorting With Radix Sort
- Going Broad In A Graph: BFS Traversal
- Deep Dive Through A Graph: DFS Traversal
- Spinning Around In Cycles With Directed Acyclic Graphs
- Finding The Shortest Path, With A Little Help From Dijkstra
- Less Repetition, More Dynamic Programming
- The Trials And Tribulations Of The Traveling Salesman
- Speeding Up The Traveling Salesman Using Dynamic Programming

- Königsberg: Seven Small Bridges, One Giant Graph Problem
- Getting To The Root Of Sorting With Radix Sort
- Finding Fibonacci In Golden Trees
- The Trials And Tribulations Of The Traveling Salesman
- Speeding Up The Traveling Salesman Using Dynamic Programming
- Grammatically Rooting Oneself With Parse Trees
- Reading Code Right, With Some Help From The Lexer

### Personal

#### Axel Rauschmayer (2ality)

#### Laurent Luce

#### Maciej Ceglowski (Idle Words)

#### Robin Wieruch

## C

### Career

#### Interviewing

- Interview.io recordings: Watch mock interviews with engineers from Google, Facebook, Netflix and more

#### Practice materials

##### Bit operations

- Practice with bit operations: This quiz provides practice with bit operations. This web page gives you an opportunity to practice with applying these operators to positive integers. In some cases, you'll need to convert the integers to binary first before applying the operation.

#### Preparatory resources

##### AlgoMonster

- Dashboard: User dashboard.
- AlgoMonster coding interview problem frequency analysis: Breakdown of different problems and their frequencies in top tech companies

##### interview.io

- Homepage: Anonymous technical mock interviews with engineers from Google, Facebook, and other top companies

##### Tech Interview Handbook

- Book beginning: Start of book
- Resume checklist

##### TryExponent

- Dashboard: User dashboard.

### Classes

- CPSC 223 at Yale University: Notes on Data Structures and Programming Techniques
- JSNAD and JSNSD: User dashboard
- CSS for JavaScript Developers (Josh Comeau)
- Teach Yourself Computer Science: If you're a self-taught engineer or bootcamp grad, you owe it to yourself to learn computer science. Thankfully, you can give yourself a world-class CS education without investing years and a small fortune in a degree program.

### Comprehensive (front-end, back-end, etc.)

### Computer science

tbd

## D

### DNS

- The website is unknown - how DNS works: Fun way of learning how DNS works.

### Docusaurus

#### Helpful links

- Stack Overflow: Top questions tagged with
`docusaurus`

. - Jamstack: All about the jamstack, which Docusaurus is based on.
- MDX: Markdown for the component era that Docusaurus uses.
- Front Matter: Details about the front matter used in Markdown (helpful for authoring posts on Docusaurus-powered sites).
- Markdown syntax: Helpful notes on Markdown syntax.
- KaTeX: Helpful reference to see what can be used on Docusaurus-powered sites.
- Documentation Made Easy: Discussion on YouTube about what Docusaurus offers out of the box.

#### Example sites

### Dynamic programming

- Demystifying Dynamic Programming: In-depth guide on freeCodeCamp for better understanding dynamic programming.
- Dynamic Programming - 7 Steps to Solve any DP Interview Problem: This post on dev.to is all about identifying DP problems and then working out a way to a solution, namely via a 7-step process: how to recognize a DP problem, identify problem variables, clearly express the recurrence relation, identify the base cases, decide if you want to implement the solution iteratively or recursively, add memoization, and finally determine time complexity.
- Less Repetition, More Dynamic Programming: Down-to-earth article from the basecs blog.
- Yale CS notes on dynamic programming: DP excerpts from a course at Yale.

## E

tbd

## F

tbd

## G

### Graph (data structure)

- From Theory To Practice: Representing Graphs: Article from the basecs blog.
- Going Broad In A Graph: BFS Traversal: Article from the basecs blog.
- Deep Dive Through A Graph: DFS Traversal: Article from the basecs blog.
- Spinning Around In Cycles With Directed Acyclic Graphs: Article from the basecs blog.
- Finding The Shortest Path, With A Little Help From Dijkstra: Article from the basecs blog.

## H

### Hash table (data structure)

- Hash tables: Discussion on coursera.
- Hashing Out Hash Functions: Article from the basecs blog.
- Taking Hash Tables Off The Shelf: Article from the basecs blog.

### Heap (data structure)

- Yale CS notes on heaps: From the CS 223 class.
- Heapify All The Things With Heap Sort: An article from the basecs blog.
- Learning to Love Heaps: An article from the basecs blog.

## I

tbd

## J

tbd

## K

tbd

## L

### LeetCode

#### Practice guides

- How to practice for 2200+ rating in LC: A user's guide concerning what they did over several years to achieve a 2200+ contest rating.

#### Templates

- Sliding window template: A template for solving most "substring" problems by using the sliding window technique.

#### Linked list (data structure)

- Singly-linked lists: Introduction on coursera
- Doubly-linked lists: Introduction on coursera
- What's a Linked List, Anyway? [Part 1]: Article from the basecs blog.
- What's a Linked List, Anyway? [Part 2]: Article from the basecs blog.

## M

### Material-UI

- Material SVG Icons
- Material icons (visual list): Visual listing of icons available via Material-UI
- Color: Colors available via Material-UI

## N

### Namecheap

#### Setting up private email with custom domain on Netlify

How to Add DKIM Record in Namecheap: Namecheap DKIM Setup Guide

`Namecheap -> Dashboard -> Domain List`

:*To be able to activate your Private Email subscription to receive mail and create mailboxes, you must first set up these important DNS records from the table below.*(Something like what appears below -- these details need to be added to Netlify if you are using Netlify DNS.)Hostname Record type Priority Value `@`

`MX`

`10`

`mx1.privateemail.com`

`@`

`MX`

`10`

`mx2.privateemail.com`

`@`

`TXT`

`v=spf1 include:spf.privateemail.com ~all`

### Newsletters

- Serverless Status
- Golang Weekly
- JavaScript Weekly
- React Status
- Node Weekly
- Ruby Weekly
- Frontend Focus
- Deno Weekly
- JAMStacked
- Postgres Weekly
- MongoDB Memo
- StatusCode Weekly
- Awesome Newsletters

## O

tbd

## P

### Python

#### Managing versions

#### Real Python

##### Guides

- Common Python Data Structures (Guide): In this tutorial, you'll learn: Which common abstract data types are built into the Python standard library. How the most common abstract data types map to Python's naming scheme. How to put abstract data types to practical use in various algorithms.

##### Tutorials

## Q

### Queue (data structure)

- To Queue Or Not To Queue: Article from the basecs blog.
- Queues: coursera introduction.

## R

### Recursion

- Tail recursion: Analysis from section on coursera.
- Utah notes on recursion: Topical notes on recursion from University of Utah.

## S

### Sorting and searching

- Algorithms: Algorithms unit on KhanAcademy.
- Making Sense of Merge Sort [Part 1]: Article from basecs blog.
- Making Sense of Merge Sort [Part 2]: Article from basecs blog.
- Pivoting To Understand Quicksort [Part 1]: Article from basecs blog.
- Pivoting To Understand Quicksort [Part 2]: Article from basecs blog.
- Exponentially Easy Selection Sort: Article from basecs blog.
- Bubbling Up With Bubble Sorts: Article from basecs blog.
- Inching Towards Insertion Sort: Article from basecs blog.
- Counting Linearly With Counting Sort: Article from basecs blog.
- Getting To The Root Of Sorting With Radix Sort: Article from basecs blog.
- Sorting Out The Basics Behind Sorting Algorithms: Article from basecs blog.

### Stack (data structure)

- Stacks and Overflows: Article from the basecs blog.
- Stacks: Simple introduction from the coursera blog.

### Teach Yourself CS

#### Programming

- SICP book
- SICP MIT Video Lectures
- Brian Harvey's SICP Lectures
- Composing Programs: In the SICP tradition but with Python.
- How to Design Programs, 2nd Ed.

#### Computer Architecture

- Computer Systems: A Programmer's Perspective: See a sample course.
- The Elements of Computing Systems: This is an ambitious book attempting to give you a cohesive understanding of how everything in a computer works. Each chapter involves building a small piece of the overall system, from writing elementary logic gates in HDL, through a CPU and assembler, all the way to an application the size of a Tetris game. See the nand2tetris companion site for more. See the TED talk as well. A free coursera course is available also.
- Computer Organization and Design
- CS61C: Berkeley course that specifies readings from the
*Computer Organization and Design*book (see above). See the Internet Archive for more.

#### Algorithms and Data Structures

- Algorithm Design Manual (ADM)
- ADM Videos
- Algorithms Specialization: coursera class by Tim Roughgarden (see additional related resources)
- Leetcode
- How to Solve It

#### Mathematics for Computer Science

- Lecture Notes by Laszlo Lovasz: Good starting point for discrete mathematics.
- Mathematics for Computer Science: Book-length lecture notes by Eric Lehman et al. Video lectures also available.
- Essence of linear algebra: Good series by 3Blue1Brown.
- Introduction to Linear Algebra: Book by Gilbert Strang. See video lectures for more.

#### Operating Sytems

- Operating System Concepts
- Modern Operating Systems
- Operating Systems: Three Easy Pieces
- Lion's Commentary on Unix
- Design and Implementation of the FreeBSD Operating System
- MAC OS X Internals: A Systems Approach
- Linux Kernel Development
- Xv6
- Xv6 labs

#### Computer Networking

- Computer Networking: A Top-Down Approach
- Wireshark labs
- Introduction to Computer Networking course (Stanford)

#### Languages and Compilers

#### Databases

- CS186 (Berkeley)
- Architecture of a Database System
- Readings in Database Systems
- Database Management Systems
- Transaction Processing: Concepts and Techniques
- Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World

#### Distributed Systems

- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
- Distributed Systems, 3rd Edition
- MIT 6.824: See the readings
- Distributed Systems Papers
- Papers We Love

### Tree (data structure)

- Trees: Simple introduction on coursera.
- Binary search tree traversal - inorder, preorder, post order for BST: freeCodeCamp article that's down to earth
- How To Not Be Stumped By Trees: Article on the basecs blog.
- Leaf It Up To Binary Trees: Article on the basecs blog.
- The Little AVL Tree That Could: Article on the basecs blog.
- Painting Nodes Black With Red-Black Trees: Article on the basecs blog.
- Busying Oneself With B-Trees: Article on the basecs blog.

### Trie (data structure)

- Trying to Understand Tries: Article on tries from the basecs blog.
- Implement trie (prefix tree) on LeetCode: Solution for problem about implementing a trie.
- Compressing Radix Trees Without (Too Many) Tears: Article on tries from the basecs blog.

## U

tbd

## V

tbd

## W

tbd

## X

tbd

## Y

### YouTube channels

#### JavaScript

- Minimal API Surface Area - Sebastian Markbage: I'll explain how React is moving towards a minimal API surface area. Instead of providing many framework features, React is trying to utilize patterns, paradigms and JavaScript language features to accomplish the same tasks that other frameworks have dedicated APIs for. We start out with higher order runtime features and then backport them to use ES6 language features and syntax. How does the JSX syntax extension fits into this model? I will also touch on the syntax proposals we and other framework authors are making to ES7 and future versions of JavaScript.

#### System design

- ByteByteGo: From the author of the system design interview books (Alex Xu).

## Z

tbd