Fixed all broken links (sync with master)
This commit is contained in:
		| @@ -332,9 +332,12 @@ | |||||||
| <details> | <details> | ||||||
| <summary>만일 당신이 많은 여유 시간이 있다면:</summary> | <summary>만일 당신이 많은 여유 시간이 있다면:</summary> | ||||||
|  |  | ||||||
| - [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) | - [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) | ||||||
|     - 모든 코드가 C++로 되어있다, 만일 당신의 인터뷰에서 C++를 사용하길 고려한다면 정말 좋은 책이다. |     - 모든 코드가 C++로 되어있다, 만일 당신의 인터뷰에서 C++를 사용하길 고려한다면 정말 좋은 책이다. | ||||||
|     - 일반적인 문제들을 해결하기 위해 좋은 책이다. |     - 일반적인 문제들을 해결하기 위해 좋은 책이다. | ||||||
|  | - [ ] Elements of Programming Interviews (Java version) | ||||||
|  |     - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/) | ||||||
|  |     - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews) | ||||||
|  |  | ||||||
| </details> | </details> | ||||||
|  |  | ||||||
| @@ -400,9 +403,9 @@ C++에 대한 더 나은 추천 책이 있다면 알려주십시오. 포괄적 | |||||||
| <summary>Java</summary> | <summary>Java</summary> | ||||||
|  |  | ||||||
| - [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) | - [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) | ||||||
|     - videos with book content (and Sedgewick!): |     - videos with book content (and Sedgewick!) on coursera: | ||||||
|         - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) |         - [Algorithms I](https://www.coursera.org/learn/algorithms-part1) | ||||||
|         - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) |         - [Algorithms II](https://www.coursera.org/learn/algorithms-part2) | ||||||
|  |  | ||||||
| OR: | OR: | ||||||
|  |  | ||||||
| @@ -573,8 +576,11 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info | |||||||
|  |  | ||||||
|  |  | ||||||
| - [ ] **How computers process a program:** | - [ ] **How computers process a program:** | ||||||
|     - [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA) |     - [ ] [How CPU executes a program](https://www.youtube.com/watch?v=XM4lGflQFvA) | ||||||
|     - [ ] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE) |     - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) | ||||||
|  |     - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) | ||||||
|  |     - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) | ||||||
|  |     - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) | ||||||
|  |  | ||||||
| </details> | </details> | ||||||
|  |  | ||||||
| @@ -593,13 +599,13 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info | |||||||
| - [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) | - [ ] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) | ||||||
| - [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) | - [ ] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59) | ||||||
| - [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) | - [ ] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61) | ||||||
| - [ ] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98) | - [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98) | ||||||
| - [ ] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc) | - [ ] [UC Berkeley Big Omega (video)](https://archive.org/details/ucberkeley_webcast_ca3e7UVmeUc) | ||||||
| - [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) | - [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN) | ||||||
| - [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) | - [ ] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63) | ||||||
| - [ ] TopCoder (includes recurrence relations and master theorem): | - [ ] TopCoder (includes recurrence relations and master theorem): | ||||||
|     - [Computational Complexity: Section 1](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-1/) |     - [Computational Complexity: Section 1](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-1/) | ||||||
|     - [Computational Complexity: Section 2](https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/) |     - [Computational Complexity: Section 2](https://www.topcoder.com/community/competitive-programming/tutorials/computational-complexity-section-2/) | ||||||
| - [ ] [Cheat sheet](http://bigocheatsheet.com/) | - [ ] [Cheat sheet](http://bigocheatsheet.com/) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -653,7 +659,8 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info | |||||||
| - ### 링크드 리스트 | - ### 링크드 리스트 | ||||||
|     - [ ] Description: |     - [ ] Description: | ||||||
|         - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) |         - [ ] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists) | ||||||
|         - [ ] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5) |         - [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) | ||||||
|  |         - [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) | ||||||
|     - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) |     - [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) | ||||||
|             - not the whole video, just portions about Node struct and memory allocation. |             - not the whole video, just portions about Node struct and memory allocation. | ||||||
|     - [ ] Linked List vs Arrays: |     - [ ] Linked List vs Arrays: | ||||||
| @@ -690,7 +697,7 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info | |||||||
|  |  | ||||||
| - ### 큐 | - ### 큐 | ||||||
|     - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) |     - [ ] [Using Queues First-In First-Out(video)](https://archive.org/details/0102WhatYouShouldKnow/05_03-usingQueuesForFirst-inFirst-out.mp4) | ||||||
|     - [ ] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue) |     - [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq) | ||||||
|     - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) |     - [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) | ||||||
|     - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) |     - [ ] [Priority Queues (video)](https://archive.org/details/0102WhatYouShouldKnow/05_04-priorityQueuesAndDeques.mp4) | ||||||
|     - [ ] Implement using linked-list, with tail pointer: |     - [ ] Implement using linked-list, with tail pointer: | ||||||
| @@ -747,13 +754,13 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info | |||||||
| - ### Binary search | - ### Binary search | ||||||
|     - [ ] [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno) |     - [ ] [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno) | ||||||
|     - [ ] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) |     - [ ] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) | ||||||
|     - [ ] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) |     - [ ] [detail](https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/) | ||||||
|     - [ ] Implement: |     - [ ] Implement: | ||||||
|         - binary search (on sorted array of integers) |         - binary search (on sorted array of integers) | ||||||
|         - binary search using recursion |         - binary search using recursion | ||||||
|  |  | ||||||
| - ### Bitwise operations | - ### Bitwise operations | ||||||
|     - [ ] [Bits cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) |     - [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32) | ||||||
|     - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << |     - [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, << | ||||||
|         - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) |         - [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)) | ||||||
|         - [ ] Good intro: |         - [ ] Good intro: | ||||||
| @@ -762,8 +769,8 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info | |||||||
|         - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) |         - [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation) | ||||||
|         - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) |         - [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation) | ||||||
|         - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) |         - [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html) | ||||||
|         - [ ] [The Bit Twiddler](http://bits.stephan-brumme.com/) |         - [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/) | ||||||
|         - [ ] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html) |         - [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html) | ||||||
|     - [ ] 2s and 1s complement |     - [ ] 2s and 1s complement | ||||||
|         - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) |         - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) | ||||||
|         - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) |         - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) | ||||||
| @@ -773,11 +780,11 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info | |||||||
|         - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) |         - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) | ||||||
|         - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) |         - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) | ||||||
|     - [ ] round to next power of 2: |     - [ ] round to next power of 2: | ||||||
|         - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) |         - [Round Up To Next Power Of Two](https://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html) | ||||||
|     - [ ] swap values: |     - [ ] swap values: | ||||||
|         - [Swap](http://bits.stephan-brumme.com/swap.html) |         - [Swap](https://bits.stephan-brumme.com/swap.html) | ||||||
|     - [ ] absolute value: |     - [ ] absolute value: | ||||||
|         - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html) |         - [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html) | ||||||
|  |  | ||||||
| </details> | </details> | ||||||
|  |  | ||||||
| @@ -792,21 +799,19 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info | |||||||
|     - basic tree construction |     - basic tree construction | ||||||
|     - traversal |     - traversal | ||||||
|     - manipulation algorithms |     - manipulation algorithms | ||||||
|     - BFS (breadth-first search) |     - [ ] [BFS(breadth-first search) and DFS(depth-first search)](https://www.youtube.com/watch?v=uWL6FJhq5fM) | ||||||
|         - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13) |         - BFS notes: | ||||||
|         - level order (BFS, using queue) |            - level order (BFS, using queue) | ||||||
|             time complexity: O(n) |            - time complexity: O(n) | ||||||
|             space complexity: best: O(1), worst: O(n/2)=O(n) |            - space complexity: best: O(1), worst: O(n/2)=O(n) | ||||||
|     - DFS (depth-first search) |         - DFS notes: | ||||||
|         - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14) |             - time complexity: O(n) | ||||||
|         - notes: |             - space complexity: | ||||||
|             time complexity: O(n) |  | ||||||
|             space complexity: |  | ||||||
|                 best: O(log n) - avg. height of tree |                 best: O(log n) - avg. height of tree | ||||||
|                 worst: O(n) |                 worst: O(n) | ||||||
|         - inorder (DFS: left, self, right) |             - inorder (DFS: left, self, right) | ||||||
|         - postorder (DFS: left, right, self) |             - postorder (DFS: left, right, self) | ||||||
|         - preorder (DFS: self, left, right) |             - preorder (DFS: self, left, right) | ||||||
|  |  | ||||||
| - ### Binary search trees: BSTs | - ### Binary search trees: BSTs | ||||||
|     - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) |     - [ ] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) | ||||||
| @@ -852,7 +857,7 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info | |||||||
|     - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) |     - [ ] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort) | ||||||
|     - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) |     - [ ] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap) | ||||||
|     - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) |     - [ ] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) | ||||||
|     - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C) |     - [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) | ||||||
|     - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) |     - [ ] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw) | ||||||
|     - [ ] Implement a max-heap: |     - [ ] Implement a max-heap: | ||||||
|         - [ ] insert |         - [ ] insert | ||||||
| @@ -888,24 +893,24 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info | |||||||
|  |  | ||||||
| - For heapsort, see Heap data structure above. Heap sort is great, but not stable. | - For heapsort, see Heap data structure above. Heap sort is great, but not stable. | ||||||
|  |  | ||||||
| - [ ] [Sedgewick - Mergesort (5 videos)](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) | - [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) | ||||||
|     - [ ] [1. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=1) |     - [ ] [1. Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/ARWDq/mergesort) | ||||||
|     - [ ] [2. Bottom up Mergesort](https://www.youtube.com/watch?v=HGOIGUYjeyk&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9&index=2) |     - [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) | ||||||
|     - [ ] [3. Sorting Complexity](https://www.youtube.com/watch?v=WvU_mIWo0Ac&index=3&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) |     - [ ] [3. Sorting Complexity](https://www.coursera.org/learn/algorithms-part1/lecture/xAltF/sorting-complexity) | ||||||
|     - [ ] [4. Comparators](https://www.youtube.com/watch?v=7MvC1kmBza0&index=4&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) |     - [ ] [4. Comparators](https://www.coursera.org/learn/algorithms-part1/lecture/9FYhS/comparators) | ||||||
|     - [ ] [5. Stability](https://www.youtube.com/watch?v=XD_5iINB5GI&index=5&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) |     - [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) | ||||||
|  |  | ||||||
| - [ ] [Sedgewick - Quicksort (4 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) | - [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3) | ||||||
|     - [ ] [1. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&index=1&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) |     - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) | ||||||
|     - [ ] [2. Selection](https://www.youtube.com/watch?v=CgVYfSyct_M&index=2&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) |     - [ ] [2. Selection](https://www.coursera.org/learn/algorithms-part1/lecture/UQxFT/selection) | ||||||
|     - [ ] [3. Duplicate Keys](https://www.youtube.com/watch?v=WBFzOYJ5ybM&index=3&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) |     - [ ] [3. Duplicate Keys](https://www.coursera.org/learn/algorithms-part1/lecture/XvjPd/duplicate-keys) | ||||||
|     - [ ] [4. System Sorts](https://www.youtube.com/watch?v=rejpZ2htBjE&index=4&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) |     - [ ] [4. System Sorts](https://www.coursera.org/learn/algorithms-part1/lecture/QBNZ7/system-sorts) | ||||||
|  |  | ||||||
| - [ ] UC Berkeley: | - [ ] UC Berkeley: | ||||||
|     - [ ] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29) |     - [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) | ||||||
|     - [ ] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30) |     - [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) | ||||||
|     - [ ] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C) |     - [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) | ||||||
|     - [ ] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C) |     - [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) | ||||||
|  |  | ||||||
| - [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) | - [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB) | ||||||
| - [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) | - [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB) | ||||||
| @@ -931,13 +936,13 @@ Anki format의 내 flashcard 데이터베이스: https://ankiweb.net/shared/info | |||||||
|     - For heapsort, see Heap data structure above. |     - For heapsort, see Heap data structure above. | ||||||
|  |  | ||||||
| - [ ] Not required, but I recommended them: | - [ ] Not required, but I recommended them: | ||||||
|     - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) |     - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) | ||||||
|         - [ ] [1. Strings in Java](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6) |         - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) | ||||||
|         - [ ] [2. Key Indexed Counting](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5) |         - [ ] [2. Key Indexed Counting](https://www.coursera.org/learn/algorithms-part2/lecture/2pi1Z/key-indexed-counting) | ||||||
|         - [ ] [3. Least Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4) |         - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) | ||||||
|         - [ ] [4. Most Significant Digit First String Radix Sort](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) |         - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) | ||||||
|         - [ ] [5. 3 Way Radix Quicksort](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) |         - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/learn/algorithms-part2/lecture/crkd5/3-way-radix-quicksort) | ||||||
|         - [ ] [6. Suffix Arrays](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1) |         - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) | ||||||
|     - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) |     - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) | ||||||
|     - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) |     - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) | ||||||
|     - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) |     - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) | ||||||
| @@ -1031,9 +1036,8 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
|         - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) |         - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) | ||||||
|         - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) |         - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc) | ||||||
|  |  | ||||||
| - ### Dynamic Programming |  | ||||||
|     - **NOTE:** DP is a valuable technique, but it is not mentioned on any of the prep material Google provides. But you could get a problem where DP provides an optimal solution. So I'm including it. | - ### Dynamic Programming    - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. | ||||||
|     - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. |  | ||||||
|     - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. |     - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. | ||||||
|     - [ ] Videos: |     - [ ] Videos: | ||||||
|         - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see |         - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see | ||||||
| @@ -1064,7 +1068,6 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
|         - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) |         - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) | ||||||
|     - [ ] SOLID OOP Principles: |     - [ ] SOLID OOP Principles: | ||||||
|         - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) |         - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) | ||||||
|         - [ ] [SOLID Design Patterns in C# (video)](https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ) |  | ||||||
|         - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) |         - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A) | ||||||
|         - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) |         - [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html) | ||||||
|             - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) |             - [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk) | ||||||
| @@ -1106,6 +1109,8 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
|     - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) |     - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) | ||||||
|         - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. |         - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO. | ||||||
|     - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) |     - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips) | ||||||
|  |     - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) | ||||||
|  |  | ||||||
|  |  | ||||||
| - ### Combinatorics (n choose k) & Probability | - ### Combinatorics (n choose k) & Probability | ||||||
|     - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) |     - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) | ||||||
| @@ -1150,7 +1155,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
| - ### Processes and Threads | - ### Processes and Threads | ||||||
|     - [ ] Computer Science 162 - Operating Systems (25 videos): |     - [ ] Computer Science 162 - Operating Systems (25 videos): | ||||||
|         - for processes and threads see videos 1-11 |         - for processes and threads see videos 1-11 | ||||||
|         - [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) |         - [Operating Systems and System Programming (video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) | ||||||
|     - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) |     - [What Is The Difference Between A Process And A Thread?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread) | ||||||
|     - Covers: |     - Covers: | ||||||
|         - Processes, Threads, Concurrency issues |         - Processes, Threads, Concurrency issues | ||||||
| @@ -1166,6 +1171,9 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
|             - livelock |             - livelock | ||||||
|         - CPU activity, interrupts, context switching |         - CPU activity, interrupts, context switching | ||||||
|         - Modern concurrency constructs with multicore processors |         - Modern concurrency constructs with multicore processors | ||||||
|  |         - [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2) | ||||||
|  |         - [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3) | ||||||
|  |         - [Scheduling (video)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8) | ||||||
|         - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) |         - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o) | ||||||
|         - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) |         - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack) | ||||||
|         - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. |         - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy. | ||||||
| @@ -1183,9 +1191,9 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
|  |  | ||||||
| - ### Papers | - ### Papers | ||||||
|     - Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections. |     - Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections. | ||||||
|  |     - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) | ||||||
|     - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) |     - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf) | ||||||
|         - [implemented in Go](https://godoc.org/github.com/thomas11/csp) |         - [implemented in Go](https://godoc.org/github.com/thomas11/csp) | ||||||
|         - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/) |  | ||||||
|     - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) |     - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf) | ||||||
|         - replaced by Colossus in 2012 |         - replaced by Colossus in 2012 | ||||||
|     - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) |     - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) | ||||||
| @@ -1193,6 +1201,8 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
|     - [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) |     - [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) | ||||||
|         - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) |         - [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf) | ||||||
|     - [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) |     - [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf) | ||||||
|  |     - [ ] [2007: Dynamo: Amazon’s Highly Available Key-value Store](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) | ||||||
|  |         - The Dynamo paper kicked off the NoSQL revolution | ||||||
|     - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) |     - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf) | ||||||
|     - [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) |     - [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf) | ||||||
|     - [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) |     - [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf) | ||||||
| @@ -1239,13 +1249,13 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
|     - can you implement them? |     - can you implement them? | ||||||
|  |  | ||||||
| - ### String searching & manipulations | - ### String searching & manipulations | ||||||
|     - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg) |     - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) | ||||||
|     - [ ] [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) |     - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) | ||||||
|         - [ ] [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5) |         - [ ] [1. Introduction to Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/n3ZpG/introduction-to-substring-search) | ||||||
|         - [ ] [2. Brute-Force Substring Search](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4) |         - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) | ||||||
|         - [ ] [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) |         - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) | ||||||
|         - [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2) |         - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) | ||||||
|         - [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) |         - [ ] [5. Rabin-Karp](https://www.coursera.org/learn/algorithms-part2/lecture/3KiqT/rabin-karp) | ||||||
|     - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) |     - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) | ||||||
|  |  | ||||||
|     If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) |     If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) | ||||||
| @@ -1324,7 +1334,8 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
|         - simplicity and robustness |         - simplicity and robustness | ||||||
|         - tradeoffs |         - tradeoffs | ||||||
|         - performance analysis and optimization |         - performance analysis and optimization | ||||||
| - [ ] **START HERE**: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) | - [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer) | ||||||
|  | - [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) | ||||||
| - [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) | - [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) | ||||||
| - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) | - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) | ||||||
| - [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) | - [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/) | ||||||
| @@ -1356,7 +1367,7 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
|     - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) |     - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) | ||||||
|     - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) |     - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) | ||||||
|     - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) |     - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) | ||||||
|     - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/) |     - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) | ||||||
|     - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) |     - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) | ||||||
|     - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) |     - [ ] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook) | ||||||
|     - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) |     - [ ] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU) | ||||||
| @@ -1397,10 +1408,11 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
|     - [ ] Twitter: |     - [ ] Twitter: | ||||||
|         - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) |         - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) | ||||||
|         - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) |         - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) | ||||||
|     - For even more, see "Mining Massive Datasets" video series in the Video Series section. |     - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section. | ||||||
| - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: | - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: | ||||||
|     - review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/) |     - review: [The System Design Primer](https://github.com/donnemartin/system-design-primer) | ||||||
|     - [cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) |     - [System Design from HiredInTech](http://www.hiredintech.com/system-design/) | ||||||
|  |     - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf) | ||||||
|     - flow: |     - flow: | ||||||
|         1. Understand the problem and scope: |         1. Understand the problem and scope: | ||||||
|             - define the use cases, with interviewer's help |             - define the use cases, with interviewer's help | ||||||
| @@ -1446,32 +1458,8 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
|     - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) |     - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) | ||||||
| - [ ] 2-5분 분량의 주제별 짧은 영상 시리즈 - Michael Sambol (18 videos): | - [ ] 2-5분 분량의 주제별 짧은 영상 시리즈 - Michael Sambol (18 videos): | ||||||
|     - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) |     - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) | ||||||
| - [ ] [Sedgewick Videos - Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=2&view=50&sort=dd) | - [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) | ||||||
|     - [ ] [01. Union-Find](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) | - [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) | ||||||
|     - [ ] [02. Analysis of Algorithms](https://www.youtube.com/watch?v=ZN-nFW0mEpg&list=PLe-ggMe31CTf0_bkOhh7sa5uqeppp3Sr0) |  | ||||||
|     - [ ] [03. Stacks and Queues](https://www.youtube.com/watch?v=TIC1gappbP8&list=PLe-ggMe31CTe-9jhnj3P_3mmrCh0A7iHh) |  | ||||||
|     - [ ] [04. Elementary Sorts](https://www.youtube.com/watch?v=CD2AL6VO0ak&list=PLe-ggMe31CTe_5WhGV0F--7CK8MoRUqBd) |  | ||||||
|     - [ ] [05. Mergesort](https://www.youtube.com/watch?v=4nKwesx_c8E&list=PLe-ggMe31CTeunC6GZHFBmQx7EKtjbGf9) |  | ||||||
|     - [ ] [06. Quicksort](https://www.youtube.com/watch?v=5M5A7qPWk84&list=PLe-ggMe31CTeE3x2-nF1-toca1QpuXwE1) |  | ||||||
|     - [ ] [07. Priority Queues](https://www.youtube.com/watch?v=G9TMe0KC0w0&list=PLe-ggMe31CTducy9LDiGVkdSv0NfiRwn5) |  | ||||||
|     - [ ] [08. Elementary Symbol Tables](https://www.youtube.com/watch?v=up_nlilw3ac&list=PLe-ggMe31CTc3a8nKRDxFZZrWrBvkc9SG) |  | ||||||
|     - [ ] [09. Balanced Search Trees](https://www.youtube.com/watch?v=qC1BLLPK_5w&list=PLe-ggMe31CTf7jHH_mFT50kayjCEA6Rhu) |  | ||||||
|     - [ ] [10. Geometric Applications of BST](https://www.youtube.com/watch?v=Wl30aGAp6TY&list=PLe-ggMe31CTdBsRIw0hXln0hilRs-DqAx) |  | ||||||
|     - [ ] [11. Hash Tables](https://www.youtube.com/watch?v=QA8fJGO-i9o&list=PLe-ggMe31CTcKxIRGqqThMts2eHtSrf11) |  | ||||||
| - [ ] [Sedgewick Videos - Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?flow=list&shelf_id=3&view=50) |  | ||||||
|     - [ ] [01. Undirected Graphs](https://www.youtube.com/watch?v=GmVhD-mmMBg&list=PLe-ggMe31CTc0zDzANxl4I2MhMoRVlbRM) |  | ||||||
|     - [ ] [02. Directed Graphs](https://www.youtube.com/watch?v=_z-JsVaUS40&list=PLe-ggMe31CTcEwaU8a1P1Gd95A77HV85K) |  | ||||||
|     - [ ] [03. Minimum Spanning Trees](https://www.youtube.com/watch?v=t8fNk9tfVYY&list=PLe-ggMe31CTceUZxDesGfHGLE7kcSafqj) |  | ||||||
|     - [ ] [04. Shortest Paths](https://www.youtube.com/watch?v=HoGSiB7tSeI&list=PLe-ggMe31CTePpG3jbeOTsnGUGZDKxgZD) |  | ||||||
|     - [ ] [05. Maximum Flow](https://www.youtube.com/watch?v=rYIKlFstBqE&list=PLe-ggMe31CTduQ68XQ-sVj32wYJIspTma) |  | ||||||
|     - [ ] [06. Radix Sorts](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53) |  | ||||||
|     - [ ] [07. Tries](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) |  | ||||||
|     - [ ] [08. Substring Search](https://www.youtube.com/watch?v=QzI0p6zDjK4&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66) |  | ||||||
|     - [ ] [09. Regular Expressions](https://www.youtube.com/watch?v=TQWNQsJSPnk&list=PLe-ggMe31CTetTlJWouM42fyttyKPgSDh) |  | ||||||
|     - [ ] [10. Data Compression](https://www.youtube.com/watch?v=at9tjpxcBh8&list=PLe-ggMe31CTciifRRo6yY0Yt0mzgIXXVZ) |  | ||||||
|     - [ ] [11. Reductions](https://www.youtube.com/watch?v=Ow5x-ooMGv8&list=PLe-ggMe31CTe_yliW5vc3yO-dj1LSSDyF) |  | ||||||
|     - [ ] [12. Linear Programming](https://www.youtube.com/watch?v=rWhcLyiLZLA&list=PLe-ggMe31CTdy6dKzMgkWFuTTN1H8B-E1) |  | ||||||
|     - [ ] [13. Intractability](https://www.youtube.com/watch?v=6qcaaDp4cdQ&list=PLe-ggMe31CTcZCjluBHw53e_ek2k9Kn-S) |  | ||||||
|  |  | ||||||
| </details> | </details> | ||||||
|  |  | ||||||
| @@ -1506,8 +1494,8 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
|  |  | ||||||
| 보충: | 보충: | ||||||
|  |  | ||||||
| - [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/) | - [Mathematics for Topcoders](https://www.topcoder.com/community/competitive-programming/tutorials/mathematics-for-topcoders/) | ||||||
| - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/) | - [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/) | ||||||
| - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) | - [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php) | ||||||
| - [Exercises for getting better at a given language](http://exercism.io/languages) | - [Exercises for getting better at a given language](http://exercism.io/languages) | ||||||
|  |  | ||||||
| @@ -1530,22 +1518,34 @@ Skiena의 책(아래의 책 섹션 참조)과 인터뷰 책에서 더 많은 그 | |||||||
| Once you've learned your brains out, put those brains to work. | Once you've learned your brains out, put those brains to work. | ||||||
| Take coding challenges every day, as many as you can. | Take coding challenges every day, as many as you can. | ||||||
|  |  | ||||||
| - [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/) | - [ ] [How to Find a Solution](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-find-a-solution/) | ||||||
| - [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/) | - [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/competitive-programming/tutorials/how-to-dissect-a-topcoder-problem-statement/) | ||||||
|  |  | ||||||
|  | Coding Interview Question Videos: | ||||||
|  | - [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI) | ||||||
|  | - [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd) | ||||||
|  |  | ||||||
| Challenge sites: | Challenge sites: | ||||||
| - [LeetCode](https://leetcode.com/) | - [LeetCode](https://leetcode.com/) | ||||||
| - [TopCoder](https://www.topcoder.com/) | - [TopCoder](https://www.topcoder.com/) | ||||||
| - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) | - [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems) | ||||||
| - [Codewars](http://www.codewars.com) | - [Codewars](http://www.codewars.com) | ||||||
|  | - [HackerEarth](https://www.hackerearth.com/) | ||||||
| - [HackerRank](https://www.hackerrank.com/) | - [HackerRank](https://www.hackerrank.com/) | ||||||
| - [Codility](https://codility.com/programmers/) | - [Codility](https://codility.com/programmers/) | ||||||
| - [InterviewCake](https://www.interviewcake.com/) | - [InterviewCake](https://www.interviewcake.com/) | ||||||
| - [Geeks for Geeks](http://www.geeksforgeeks.org/) | - [Geeks for Geeks](http://www.geeksforgeeks.org/) | ||||||
| - [InterviewBit](https://www.interviewbit.com/invite/icjf) | - [InterviewBit](https://www.interviewbit.com/invite/icjf) | ||||||
|  | - [Sphere Online Judge (spoj)](http://www.spoj.com/) | ||||||
|  | - [Codechef](https://www.codechef.com/) | ||||||
|  |  | ||||||
| Maybe: | Challenge repos: | ||||||
| - [Mock interviewers from big companies](http://www.gainlo.co/) | - [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges) | ||||||
|  |  | ||||||
|  | Mock Interviews: | ||||||
|  | - [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/) - I used this and it helped me relax for the phone screen and on-site interview. | ||||||
|  | - [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews | ||||||
|  | - [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies. | ||||||
|  |  | ||||||
| </details> | </details> | ||||||
|  |  | ||||||
| @@ -1554,11 +1554,9 @@ Maybe: | |||||||
| - [ ] Cracking The Coding Interview Set 2 (videos): | - [ ] Cracking The Coding Interview Set 2 (videos): | ||||||
|     - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) |     - [Cracking The Code Interview](https://www.youtube.com/watch?v=4NIb9l3imAo) | ||||||
|     - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) |     - [Cracking the Coding Interview - Fullstack Speaker Series](https://www.youtube.com/watch?v=Eg5-tdAwclo) | ||||||
|     - [Ask Me Anything: Gayle Laakmann McDowell (author of Cracking the Coding Interview)](https://www.youtube.com/watch?v=1fqxMuPmGak) |  | ||||||
|  |  | ||||||
| ## Your Resume | ## Your Resume | ||||||
|  |  | ||||||
| - [Ten Tips for a (Slightly) Less Awful Resume](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html) |  | ||||||
| - See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed | - See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -1598,8 +1596,6 @@ Maybe: | |||||||
|  |  | ||||||
| Congratulations! | Congratulations! | ||||||
|  |  | ||||||
| - [10 things I wish I knew on my first day at Google](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw) |  | ||||||
|  |  | ||||||
| Keep learning. | Keep learning. | ||||||
|  |  | ||||||
| You're never really done. | You're never really done. | ||||||
| @@ -1634,9 +1630,7 @@ You're never really done. | |||||||
| - [ ] [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) | - [ ] [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) | ||||||
|     - aka the "Gang Of Four" book, or GOF |     - aka the "Gang Of Four" book, or GOF | ||||||
|     - the canonical design patterns book |     - the canonical design patterns book | ||||||
| - [ ] [Site Reliability Engineering](https://landing.google.com/sre/book.html) | - [ ] [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/) | ||||||
|     - [Site Reliability Engineering: How Google Runs Production Systems](https://landing.google.com/sre/) |  | ||||||
| - [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/) |  | ||||||
|  |  | ||||||
| </details> | </details> | ||||||
|  |  | ||||||
| @@ -1645,29 +1639,17 @@ You're never really done. | |||||||
| <details> | <details> | ||||||
| <summary>Additional Learning</summary> | <summary>Additional Learning</summary> | ||||||
|  |  | ||||||
|  | These topics will likely not come up in an interview, but I added them to help you become a well-rounded | ||||||
|  | software engineer, and to be aware of certain technologies and algorithms, so you'll have a bigger toolbox. | ||||||
|  |  | ||||||
| - ### Compilers | - ### Compilers | ||||||
|     - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) |     - [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) | ||||||
|     - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) |     - [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) | ||||||
|     - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) |     - [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) | ||||||
|     - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) |     - [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) | ||||||
|  |  | ||||||
| - ### Floating Point Numbers |  | ||||||
|     - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) |  | ||||||
|     - [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec) |  | ||||||
|  |  | ||||||
| - ### Unicode |  | ||||||
|     - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) |  | ||||||
|     - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) |  | ||||||
|  |  | ||||||
| - ### Endianness |  | ||||||
|     - [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) |  | ||||||
|     - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) |  | ||||||
|     - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) |  | ||||||
|         - Very technical talk for kernel devs. Don't worry if most is over your head. |  | ||||||
|         - The first half is enough. |  | ||||||
|  |  | ||||||
| - ### Emacs and vi(m) | - ### Emacs and vi(m) | ||||||
|     - suggested by Yegge, from an old Amazon recruiting post: Familiarize yourself with a unix-based code editor |     - Familiarize yourself with a unix-based code editor | ||||||
|     - vi(m): |     - vi(m): | ||||||
|         - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) |         - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) | ||||||
|         - [VIM Adventures](http://vim-adventures.com/) |         - [VIM Adventures](http://vim-adventures.com/) | ||||||
| @@ -1688,7 +1670,7 @@ You're never really done. | |||||||
|         - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) |         - [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk) | ||||||
|  |  | ||||||
| - ### Unix command line tools | - ### Unix command line tools | ||||||
|     - suggested by Yegge, from an old Amazon recruiting post. I filled in the list below from good tools. |     - I filled in the list below from good tools. | ||||||
|     - [ ] bash |     - [ ] bash | ||||||
|     - [ ] cat |     - [ ] cat | ||||||
|     - [ ] grep |     - [ ] grep | ||||||
| @@ -1741,20 +1723,6 @@ You're never really done. | |||||||
|     - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) |     - [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) | ||||||
|     - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) |     - [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) | ||||||
|  |  | ||||||
| - ### Networking |  | ||||||
|     - **if you have networking experience or want to be a systems engineer, expect questions** |  | ||||||
|     - otherwise, this is just good to know |  | ||||||
|     - [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro) |  | ||||||
|     - [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8) |  | ||||||
|     - [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) |  | ||||||
|     - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM) |  | ||||||
|     - [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As) |  | ||||||
|     - [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0) |  | ||||||
|     - [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM) |  | ||||||
|     - [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8) |  | ||||||
|     - [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) |  | ||||||
|     - [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4) |  | ||||||
|  |  | ||||||
| - ### Computer Security | - ### Computer Security | ||||||
|     - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) |     - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) | ||||||
|         - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) |         - [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) | ||||||
| @@ -1771,7 +1739,6 @@ You're never really done. | |||||||
|         - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) |         - [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) | ||||||
|  |  | ||||||
| - ### Garbage collection | - ### Garbage collection | ||||||
|     - [ ] [Garbage collection (Java); Augmenting data str (video)](https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25) |  | ||||||
|     - [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) |     - [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff) | ||||||
|     - [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) |     - [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) | ||||||
|     - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) |     - [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) | ||||||
| @@ -1835,28 +1802,10 @@ You're never really done. | |||||||
|     - [ ] [MIT Lecture Notes](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/lecture-notes/MIT6_046JS12_lec15.pdf) |     - [ ] [MIT Lecture Notes](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/lecture-notes/MIT6_046JS12_lec15.pdf) | ||||||
|  |  | ||||||
| - ### Augmented Data Structures | - ### Augmented Data Structures | ||||||
|     - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950) |     - [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) | ||||||
|  |  | ||||||
| - ### Tries |  | ||||||
|     - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits |  | ||||||
|         to track the path. |  | ||||||
|     - I read through code, but will not implement. |  | ||||||
|     - [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) |  | ||||||
|         - [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) |  | ||||||
|         - [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ) |  | ||||||
|         - [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1) |  | ||||||
|     - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) |  | ||||||
|     - [ ] Short course videos: |  | ||||||
|         - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) |  | ||||||
|         - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) |  | ||||||
|         - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) |  | ||||||
|     - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) |  | ||||||
|     - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/) |  | ||||||
|     - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) |  | ||||||
|     - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) |  | ||||||
|  |  | ||||||
| - ### Balanced search trees | - ### Balanced search trees | ||||||
|     - Know least one type of balanced binary tree (and know how it's implemented): |     - Know at least one type of balanced binary tree (and know how it's implemented): | ||||||
|     - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. |     - "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular. | ||||||
|         A particularly interesting self-organizing data structure is the splay tree, which uses rotations |         A particularly interesting self-organizing data structure is the splay tree, which uses rotations | ||||||
|         to move any accessed key to the root." - Skiena |         to move any accessed key to the root." - Skiena | ||||||
| @@ -1886,7 +1835,7 @@ You're never really done. | |||||||
|             Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, |             Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, | ||||||
|             data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, |             data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, | ||||||
|             networking and file system code) etc. |             networking and file system code) etc. | ||||||
|         - [ ] [CS 61B: Splay Trees (video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) |         - [ ] [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) | ||||||
|         - [ ] MIT Lecture: Splay Trees: |         - [ ] MIT Lecture: Splay Trees: | ||||||
|             - Gets very mathy, but watch the last 10 minutes for sure. |             - Gets very mathy, but watch the last 10 minutes for sure. | ||||||
|             - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) |             - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) | ||||||
| @@ -1903,8 +1852,8 @@ You're never really done. | |||||||
|             hashcodes, a Red-Black tree is used. |             hashcodes, a Red-Black tree is used. | ||||||
|         - [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) |         - [ ] [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) | ||||||
|         - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) |         - [ ] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) | ||||||
|         - [ ] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) |         - [ ] [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) | ||||||
|         - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/) |         - [ ] [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-binary-search-and-red-black-trees/) | ||||||
|  |  | ||||||
|     - [ ] **2-3 search trees** |     - [ ] **2-3 search trees** | ||||||
|         - In practice: |         - In practice: | ||||||
| @@ -1920,7 +1869,7 @@ You're never really done. | |||||||
|             operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an |             operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an | ||||||
|             important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce |             important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce | ||||||
|             2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. |             2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. | ||||||
|         - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C) |         - [ ] [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) | ||||||
|         - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) |         - [ ] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) | ||||||
|         - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) |         - [ ] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) | ||||||
|  |  | ||||||
| @@ -1946,7 +1895,6 @@ You're never really done. | |||||||
|                 - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) |                 - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| - ### k-D Trees | - ### k-D Trees | ||||||
|     - great for finding number of points in a rectangle or higher dimension object |     - great for finding number of points in a rectangle or higher dimension object | ||||||
|     - a good fit for k-nearest neighbors |     - a good fit for k-nearest neighbors | ||||||
| @@ -1959,13 +1907,13 @@ You're never really done. | |||||||
|     - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) |     - [ ] [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) | ||||||
|  |  | ||||||
| - ### Network Flows | - ### Network Flows | ||||||
|     - [ ] [Ford-Fulkerson in 5 minutes (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) |     - [ ] [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) | ||||||
|     - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) |     - [ ] [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) | ||||||
|     - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) |     - [ ] [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) | ||||||
|  |  | ||||||
| - ### Disjoint Sets & Union Find | - ### Disjoint Sets & Union Find | ||||||
|     - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://www.youtube.com/watch?v=MAEGXTwmUsI&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=21) |     - [ ] [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) | ||||||
|     - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.youtube.com/watch?v=8mYfZeHtdNc&list=PLe-ggMe31CTexoNYnMhbHaWhQ0dvcy43t) |     - [ ] [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) | ||||||
|  |  | ||||||
| - ### Math for Fast Processing | - ### Math for Fast Processing | ||||||
|     - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) |     - [ ] [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) | ||||||
| @@ -2112,7 +2060,7 @@ Sit back and enjoy. "Netflix and skill" :P | |||||||
|  |  | ||||||
| - [ ] [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) | - [ ] [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) | ||||||
|  |  | ||||||
| - [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy) | - [ ] [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) | ||||||
|  |  | ||||||
| - [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) | - [ ] [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PL3o9D4Dl2FJ9q0_gtFXPh_H4POI5dK0yG) | ||||||
|  |  | ||||||
| @@ -2121,15 +2069,15 @@ Sit back and enjoy. "Netflix and skill" :P | |||||||
| - [ ] CSE373 - Analysis of Algorithms (25 videos) | - [ ] CSE373 - Analysis of Algorithms (25 videos) | ||||||
|     - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) |     - [Skiena lectures from Algorithm Design Manual](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1) | ||||||
|  |  | ||||||
| - [ ] [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) | - [ ] [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) | ||||||
|  |  | ||||||
| - [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C) | - [ ] [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) | ||||||
|  |  | ||||||
| - [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://www.youtube.com/watch?v=gJJeUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) | - [ ] [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) | ||||||
|  |  | ||||||
| - [ ] [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) | - [ ] [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) | ||||||
|  |  | ||||||
| - [ ] [UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr) | - [ ] ~~[UC Berkeley CS 152: Computer Architecture and Engineering (20 videos)](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr)~~ | ||||||
|  |  | ||||||
| - [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) | - [ ] [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user