Hand picked resources to teach myself computer science.
Credit:
-
The myth of the Genius Programmer (video)
Notes
- Don't try to be a genius
- Collaborate early and often
- Pay attention tou your tools
- Pay attention to timing
-
It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech (video)
Notes
- Be wary of both imposter syndrom and the dunning kruger effect.
-
Notes
- Growth mindset!
- Look at tough problems as challenges to conquer or a way to develop a skill.
-
Think you're not smart enough to work at Google? Well, think again (video)
Notes
- Be persistent
- Be ready to fail a lot
-
Retaining Computer Science Knowledge
Notes
- Mistake: Binge learning
- Solution: Spaced repetition
- Flash cards for CS knowledge
- Paper print outs for algorithms & data structures
-
Linux File System/Structure Explained! (video)
Notes
- Flash cards
- /bin - binaries or applications (ls, cat, etc)
- /sbin - system binaries
- /dev - where hardware devices lives as psuedofiles
- /etc - system configuration like for apt
- /home - stores personal files and documents
- /lib - libraries required by apps in bin or sbin
- /mnt - manually mounted drives
- /opt - manually installed software from vendors like printers, etc
- /proc - psuedofiles that contain information about system resources as PID folders
- /root - root user's home folder, location ensures it always has access to /home
- /run - (tempfs) runs in ram
- /snap - ubuntu self contained apps
- /srv - service directory for web servers or ftp
- /sys - system folder. way to interact with the kernel. similar to run.
- /tmp - temporarily stored used during session
- /usr - apps stored for specific user
- /var - variable files where file sizes can grow
- A Gentle Introduction to Algorithm Complexity Analysis
- Computational Complexity: Section 1
- Computational Complexity: Section 2
- Cheat sheet
- Orders of Growth (video)
- Asymptotics (video)
- Amortized Analysis (video)
- Harvard CS50 - Asymptotic Notation (video)
- Big O Notations (general quick tutorial) (video)
- Big O Notation (and Omega and Theta) - best mathematical explanation (video)
- Skiena Video
- UC Berkeley Big O (video)
- UC Berkeley Big Omega (video)
- Illustrating "Big O" (video)
- Arrays (video)
- UC Berkeley CS61B - Linear and Multi-Dim Arrays (video) (Start watching from 15m 32s)
- Basic Arrays (video)
- Multi-dim (video)
- Dynamic Arrays (video)
- Jagged Arrays (video)
- Jagged Arrays (video)
- Resizing arrays (video)
- Singly Linked Lists (video)
- CS 61B - Linked Lists 1 (video)
- CS 61B - Linked Lists 2 (video)
- C Code (video)
- Core Linked Lists Vs Arrays (video)
- In The Real World Linked Lists Vs Arrays (video)
- why you should avoid linked lists (video)
- Description (video)
- Hashing with Chaining (video)
- Table Doubling, Karp-Rabin (video)
- Open Addressing, Cryptographic Hashing (video)
- PyCon 2010: The Mighty Dictionary (video)
- (Advanced) Randomization: Universal & Perfect Hashing (video)
- (Advanced) Perfect hashing (video)
- Phone Book Problem (video)
- Instant Uploads And Storage Optimization In Dropbox (video)
- Series: Core Trees (video)
- Series: Trees (video)
- BFS(breadth-first search) and DFS(depth-first search) (video)
- Binary Search Tree: Introduction (video)
- Binary Search Tree Review (video)
- Heap
- Heap: Introduction (video)
- Naive Implementations (video)
- Binary Trees (video)
- Tree Height Remark (video)
- Basic Operations (video)
- Complete Binary Trees (video)
- Pseudocode (video)
- Heap Sort - jumps to start (video)
- Heap Sort (video)
- Building a heap (video)
- MIT: Heaps and Heap Sort (video)
- CS 61B Lecture 24: Priority Queues (video)
- Linear Time BuildHeap (max-heap)
- Sorting Algorithm Stability
- Stability In Sorting Algorithms
- Stability In Sorting Algorithms
- Sorting Algorithms - Stability
- Merge Sort For Linked List
- Sedgewick - Mergesort (5 videos)
- Sedgewick - Quicksort (4 videos)
- CS 61B Lecture 29: Sorting I (video)
- CS 61B Lecture 30: Sorting II (video)
- CS 61B Lecture 32: Sorting III (video)
- CS 61B Lecture 33: Sorting V (video) [ ] Bubble Sort (video)
- Analyzing Bubble Sort (video)
- Insertion Sort, Merge Sort (video)
- Insertion Sort (video)
- Merge Sort (video)
- Quicksort (video)
- Selection Sort (video)
- 15 sorting algorithms.
- Breadth-First Search
- Depth-First Search
- CSE373 2012 - Lecture 11 - Graph Data Structures (video)
- CSE373 2012 - Lecture 12 - Breadth-First Search (video)
- CSE373 2012 - Lecture 13 - Graph Algorithms (video)
- CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)
- CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)
- CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)
- 6.006 Single-Source Shortest Paths Problem (video)
- 6.006 Dijkstra (video)
- 6.006 Bellman-Ford (video)
- 6.006 Speeding Up Dijkstra (video)
- Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)
- Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)
- Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)
- Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)
- CS 61B 2014: Weighted graphs (video)
- Greedy Algorithms: Minimum Spanning Tree (video)
- Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)
- Lecture 8 | Programming Abstractions (video)
- Lecture 9 | Programming Abstractions (video)
- Lecture 10 | Programming Abstractions (video)
- Lecture 11 | Programming Abstractions (video)
- What Is Tail Recursion Why Is It So Bad?
- Tail Recursion (video)
- Quick UML review (video)
- Chapter 6 (Part 1) - Patterns (video)
- Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)
- Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)
- Series of videos (27 videos)
- Design patterns for humans
- Probability Explained (video)
- Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)
- Make School: Probability (video)
- Make School: More Probability and Markov Chains (video)
- Computational Complexity (video)
- Greedy Algs. II & Intro to NP Completeness (video)
- NP Completeness II & Reductions (video)
- NP Completeness III (Video)
- NP Completeness IV (video)
- CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (video)
- CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)
- CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)
- Complexity: P, NP, NP-completeness, Reductions (video)
- Complexity: Approximation Algorithms (video)
- Complexity: Fixed-Parameter Algorithms (video)
- The Magic of LRU Cache (100 Days of Google Dev) (video)
- Implementing LRU (video)
- LeetCode - 146 LRU Cache (C++) (video)
- MIT 6.004 L15: The Memory Hierarchy (video)
- MIT 6.004 L16: Cache Issues (video)
- Operating Systems and System Programming (video)
- What Is The Difference Between A Process And A Thread?
- Paging, segmentation and virtual memory (video)
- Interrupts (video)
- Scheduling (video)
- threads in C++ (series - 10 videos)
- Short series on threads
- David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015
- Agile Software Testing with James Bach (video)
- Open Lecture by James Bach on Software Testing (video)
- Steve Freeman - Test-Driven Development (that’s not what we meant) (video)
- TDD is dead. Long live testing.
- Is TDD dead? (video)
- Tao Of Testing
- How to write tests
- Sedgewick - Suffix Arrays (video)
- Sedgewick - Substring Search (videos)
- Search pattern in text (video)
- Introduction To Tries (video)
- Performance Of Tries (video)
- Implementing A Trie (video)
- The Trie: A Neglected Data Structure [ ] Sedgewick - Tries (3 videos)
- simple 8-bit: Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)
- 32 bit: IEEE754 32-bit floating point binary (video)
- The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets
- What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text
- Khan Academy
- UDP and TCP: Comparison of Transport Protocols (video)
- TCP/IP and the OSI Model Explained! (video)
- Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)
- HTTP (video)
- SSL and HTTPS (video)
- SSL/TLS (video)
- HTTP 2.0 (video)
- Subnetting Demystified - Part 5 CIDR Notation (video)
- Socket Programming (video)
- The System Design Primer
- How Do I Prepare To Answer Design Questions In A Technical Inverview?
- Algorithm design
- How long does it take to make a context switch?
- Scalability
- Pragmatic Programming Techniques
- Jeff Dean - Building Software Systems At Google and Lessons Learned (video)
- The Importance of Algorithms
- Scale at Facebook (2012), "Building for a Billion Users" (video)
- A Beginner's Guide To Scaling To 11 Million+ Users On Amazon's AWS
- What Powers Instagram: Hundreds of Instances, Dozens of Technologies
- Programming Interviews Exposed: Coding Your Way Through the Interview, 4nd Edition
- Cracking the Coding Interview, 6th Edition
- Write Great Code: Volume 1: Understanding the Machine
- Data Structures and Algorithms in Python
- The Unix Programming Environment
- The Linux Command Line: A Complete Introduction
- ABC: Always Be Coding
- Whiteboarding
- Effective Whiteboarding during Programming Interviews
- Demystifying Tech Recruiting
- Gayle L McDowell - Cracking The Coding Interview (video)
- Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)
- How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)
- Algorithm design canvas
- Cracking The Code Interview
- Cracking the Coding Interview - Fullstack Speaker Series
- Prep resume via Cracking The Coding Interview and back of Programming Interviews Exposed
- Why do you want this job?
- What's a tough problem you've solved?
- Biggest challenges faced?
- Best/worst designs seen?
- Ideas for improving an existing product.
- How do you work best, as an individual and as part of a team?
- Which of your skills or experiences would be assets in the role and why?
- What did you most enjoy at [job x / project y]?
- What was the biggest challenge you faced at [job x / project y]?
- What was the hardest bug you faced at [job x / project y]?
- What did you learn at [job x / project y]?
- What would you have done better at [job x / project y]?