|
@@ -164,7 +164,7 @@ I'm on the journey, too. Follow along on my blog at [GoogleyAsHeck.com](https://
|
|
|
|
|
|
## Don't feel you aren't smart enough
|
|
## Don't feel you aren't smart enough
|
|
- Google engineers are smart, but many have an insecurity that they aren't smart enough, even though they work at Google.
|
|
- Google engineers are smart, but many have an insecurity that they aren't smart enough, even though they work at Google.
|
|
-- The myth of the Genius Programmer: https://www.youtube.com/watch?v=0SARbwvhupQ
|
|
|
|
|
|
+- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ)
|
|
|
|
|
|
## About Video Resources
|
|
## About Video Resources
|
|
|
|
|
|
@@ -175,9 +175,9 @@ from public sources and replacing the online course videos over time. I like usi
|
|
## Interview Process & General Interview Prep
|
|
## Interview Process & General Interview Prep
|
|
|
|
|
|
- [x] Videos:
|
|
- [x] Videos:
|
|
- - [x] [How to Work at Google - Candidate Coaching Session](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be)
|
|
|
|
- - [x] [Google Recruiters Share Technical Interview Tips](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be)
|
|
|
|
- - [x] [How to Work at Google: Tech Resume Preparation](https://www.youtube.com/watch?v=8npJLXkcmu8)
|
|
|
|
|
|
+ - [x] [How to Work at Google - Candidate Coaching Session (video)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be)
|
|
|
|
+ - [x] [Google Recruiters Share Technical Interview Tips (video)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be)
|
|
|
|
+ - [x] [How to Work at Google: Tech Resume Preparation (video)](https://www.youtube.com/watch?v=8npJLXkcmu8)
|
|
|
|
|
|
- [x] Articles:
|
|
- [x] Articles:
|
|
- [x] [Becoming a Googler in Three Steps](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/)
|
|
- [x] [Becoming a Googler in Three Steps](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/)
|
|
@@ -193,10 +193,10 @@ from public sources and replacing the online course videos over time. I like usi
|
|
- [x] [How Google Thinks About Hiring, Management And Culture](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture)
|
|
- [x] [How Google Thinks About Hiring, Management And Culture](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture)
|
|
- [x] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/)
|
|
- [x] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/)
|
|
- [x] Cracking The Coding Interview Set 1:
|
|
- [x] Cracking The Coding Interview Set 1:
|
|
- - [x] [Gayle L McDowell - Cracking The Coding Interview](https://www.youtube.com/watch?v=rEJzOhC5ZtQ)
|
|
|
|
- - [x] [Cracking the Coding Interview with Author Gayle Laakmann McDowell](https://www.youtube.com/watch?v=aClxtDcdpsQ)
|
|
|
|
|
|
+ - [x] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ)
|
|
|
|
+ - [x] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ)
|
|
- [x] How to Get a Job at the Big 4:
|
|
- [x] How to Get a Job at the Big 4:
|
|
- - [x] ['How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft'](https://www.youtube.com/watch?v=YJZCUhxNCv8)
|
|
|
|
|
|
+ - [x] ['How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8)
|
|
- [x] [Failing at Google Interviews](http://alexbowe.com/failing-at-google-interviews/)
|
|
- [x] [Failing at Google Interviews](http://alexbowe.com/failing-at-google-interviews/)
|
|
|
|
|
|
|
|
|
|
@@ -216,13 +216,13 @@ You need to be very comfortable in the language, and be knowledgeable. Read more
|
|
You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom.
|
|
You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom.
|
|
|
|
|
|
- [x] **How computers process a program:**
|
|
- [x] **How computers process a program:**
|
|
- - [x] [How does CPU execute program](https://www.youtube.com/watch?v=42KTvGYQYnA)
|
|
|
|
- - [x] [Machine Code Instructions](https://www.youtube.com/watch?v=Mv2XQgpbTNE)
|
|
|
|
|
|
+ - [x] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA)
|
|
|
|
+ - [x] [Machine Code Instructions (video)](https://www.youtube.com/watch?v=Mv2XQgpbTNE)
|
|
|
|
|
|
- [x] **How floating point numbers are stored:**
|
|
- [x] **How floating point numbers are stored:**
|
|
- - [x] simple 8-bit: [Fractions in binary?](http://math.stackexchange.com/questions/301435/fractions-in-binary)
|
|
|
|
- - [x] 32 bit: [Representation of Floating Point Numbers - 1](https://www.youtube.com/watch?v=ji3SfClm8TU)
|
|
|
|
- - [x] 64 bit: https://www.youtube.com/watch?v=50ZYcZebIec
|
|
|
|
|
|
+ - [x] simple 8-bit: [Fractions in binary? (video)](http://math.stackexchange.com/questions/301435/fractions-in-binary)
|
|
|
|
+ - [x] 32 bit: [Representation of Floating Point Numbers - 1 (video)](https://www.youtube.com/watch?v=ji3SfClm8TU)
|
|
|
|
+ - [x] 64 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec)
|
|
|
|
|
|
- [x] **Computer Arch Intro:**
|
|
- [x] **Computer Arch Intro:**
|
|
(first video only - interesting but not required) [Introduction and Basics - Carnegie Mellon - Computer Architecture](https://www.youtube.com/watch?v=zLP_X4wyHbY&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq&index=1)
|
|
(first video only - interesting but not required) [Introduction and Basics - Carnegie Mellon - Computer Architecture](https://www.youtube.com/watch?v=zLP_X4wyHbY&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq&index=1)
|
|
@@ -230,11 +230,11 @@ You'll see some C, C++, and Python learning included below, because I'm learning
|
|
- [x] **C**
|
|
- [x] **C**
|
|
- [x] [ANSI C Cheat Sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/C%20Reference%20Card%20(ANSI)%202.2.pdf)
|
|
- [x] [ANSI C Cheat Sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/C%20Reference%20Card%20(ANSI)%202.2.pdf)
|
|
- [x] K&R C book (ANSI C)
|
|
- [x] K&R C book (ANSI C)
|
|
- - [x] [Make, Clang](https://www.youtube.com/watch?v=U3zCxnj2w8M)
|
|
|
|
|
|
+ - [x] [Make, Clang (video)](https://www.youtube.com/watch?v=U3zCxnj2w8M)
|
|
- [x] GDB:
|
|
- [x] GDB:
|
|
- https://www.youtube.com/watch?v=USPvePv1uzE
|
|
- https://www.youtube.com/watch?v=USPvePv1uzE
|
|
- https://www.youtube.com/watch?v=y5JmQItfFck
|
|
- https://www.youtube.com/watch?v=y5JmQItfFck
|
|
- - [Valgrind](https://www.youtube.com/watch?v=fvTsFjDuag8)
|
|
|
|
|
|
+ - [Valgrind (video)](https://www.youtube.com/watch?v=fvTsFjDuag8)
|
|
- [x] **C++**
|
|
- [x] **C++**
|
|
- [x] [C++ Cheat Sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/Cpp_reference.pdf)
|
|
- [x] [C++ Cheat Sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/Cpp_reference.pdf)
|
|
- [x] [STL Cheat Sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/STL%20Quick%20Reference%201.29.pdf)
|
|
- [x] [STL Cheat Sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/STL%20Quick%20Reference%201.29.pdf)
|
|
@@ -249,28 +249,26 @@ You'll see some C, C++, and Python learning included below, because I'm learning
|
|
- [x] OOP
|
|
- [x] OOP
|
|
- [x] STL
|
|
- [x] STL
|
|
- [x] [functors](http://www.cprogramming.com/tutorial/functors-function-objects-in-c++.html)
|
|
- [x] [functors](http://www.cprogramming.com/tutorial/functors-function-objects-in-c++.html)
|
|
- - [x] [C++ at Google](https://www.youtube.com/watch?v=NOCElcMcFik)
|
|
|
|
|
|
+ - [x] [C++ at Google (video)](https://www.youtube.com/watch?v=NOCElcMcFik)
|
|
- [x] [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html)
|
|
- [x] [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html)
|
|
- [x] Google uses clang-format (there is a command line "style" argument: -style=google)
|
|
- [x] Google uses clang-format (there is a command line "style" argument: -style=google)
|
|
- - [x] [Efficiency with Algorithms, Performance with Data Structures](https://youtu.be/fHNmRkzxHWs)
|
|
|
|
- - [x] [Review of C++ concepts](https://www.youtube.com/watch?v=Rub-JsjMhWY)
|
|
|
|
|
|
+ - [x] [Efficiency with Algorithms, Performance with Data Structures (video)](https://youtu.be/fHNmRkzxHWs)
|
|
|
|
+ - [x] [Review of C++ concepts (video)](https://www.youtube.com/watch?v=Rub-JsjMhWY)
|
|
|
|
|
|
- [x] **Python**
|
|
- [x] **Python**
|
|
- [x] [Python Cheat Sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/python-cheat-sheet-v1.pdf)
|
|
- [x] [Python Cheat Sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/python-cheat-sheet-v1.pdf)
|
|
- [x] [Python in One Video](https://www.youtube.com/watch?v=N4mEzFDjqtA)
|
|
- [x] [Python in One Video](https://www.youtube.com/watch?v=N4mEzFDjqtA)
|
|
- - [x] [Series on 3.4](https://www.youtube.com/playlist?list=PL6gx4Cwl9DGAcbMi1sH6oAMk4JHw91mC_)
|
|
|
|
- - [x] [Zero to Hero](https://www.youtube.com/watch?v=emY34tSKXc4)
|
|
|
|
- - [x] [Statistics for Hackers](https://www.youtube.com/watch?v=Iq9DzN6mvYA)
|
|
|
|
- - [x] [Faster Python](https://www.youtube.com/watch?v=JDSGVvMwNM8)
|
|
|
|
- - [x] [CPython Walk](https://www.youtube.com/watch?v=LhadeL7_EIU&list=PLzV58Zm8FuBL6OAv1Yu6AwXZrnsFbbR0S&index=6)
|
|
|
|
- - [x] [10 Tips for Pythonic Code](https://www.youtube.com/watch?v=_O23jIXsshs)
|
|
|
|
- - [x] [Beyond PEP 8 -- Best practices for beautiful intelligible code](https://www.youtube.com/watch?v=wf-BqAjZb8M)
|
|
|
|
|
|
+ - [x] [Series on 3.4 (video)](https://www.youtube.com/playlist?list=PL6gx4Cwl9DGAcbMi1sH6oAMk4JHw91mC_)
|
|
|
|
+ - [x] [Zero to Hero (video)](https://www.youtube.com/watch?v=emY34tSKXc4)
|
|
|
|
+ - [x] [Statistics for Hackers (video)](https://www.youtube.com/watch?v=Iq9DzN6mvYA)
|
|
|
|
+ - [x] [Faster Python (video)](https://www.youtube.com/watch?v=JDSGVvMwNM8)
|
|
|
|
+ - [x] [CPython Walk (video)](https://www.youtube.com/watch?v=LhadeL7_EIU&list=PLzV58Zm8FuBL6OAv1Yu6AwXZrnsFbbR0S&index=6)
|
|
|
|
+ - [x] [10 Tips for Pythonic Code (video)](https://www.youtube.com/watch?v=_O23jIXsshs)
|
|
|
|
+ - [x] [Beyond PEP 8 -- Best practices for beautiful intelligible code (video)](https://www.youtube.com/watch?v=wf-BqAjZb8M)
|
|
|
|
|
|
- [x] **Compilers**
|
|
- [x] **Compilers**
|
|
- - [x] https://class.coursera.org/compilers-004/lecture/1
|
|
|
|
- - [x] https://class.coursera.org/compilers-004/lecture/2
|
|
|
|
- - [x] C++: https://www.youtube.com/watch?v=twodd1KFfGk
|
|
|
|
- - [x] Understanding Compiler Optimization (C++): https://www.youtube.com/watch?v=FnGCDLhaxKU
|
|
|
|
|
|
+ - [x] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk)
|
|
|
|
+ - [x] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU)
|
|
|
|
|
|
## The Daily Plan
|
|
## The Daily Plan
|
|
|
|
|
|
@@ -303,19 +301,19 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
|
|
|
|
## Algorithmic complexity / Big-O / Asymptotic analysis
|
|
## Algorithmic complexity / Big-O / Asymptotic analysis
|
|
- nothing to implement
|
|
- nothing to implement
|
|
-- [x] [Harvard CS50 - Asymptotic Notation](https://www.youtube.com/watch?v=iOq5kSKqeR4)
|
|
|
|
-- [x] [Big O Notations (general quick tutorial)](https://www.youtube.com/watch?v=V6mKVRU1evU)
|
|
|
|
-- [x] [Big O Notation (and Omega and Theta) - best mathematical explanation](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN)
|
|
|
|
|
|
+- [x] [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4)
|
|
|
|
+- [x] [Big O Notations (general quick tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU)
|
|
|
|
+- [x] [Big O Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN)
|
|
- [x] Skiena:
|
|
- [x] Skiena:
|
|
- [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
- [video](https://www.youtube.com/watch?v=gSyDMtdPNpU&index=2&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
- [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf)
|
|
- [slides](http://www3.cs.stonybrook.edu/~algorith/video-lectures/2007/lecture2.pdf)
|
|
- [x] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/)
|
|
- [x] [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/)
|
|
-- [x] [Orders of Growth](https://class.coursera.org/algorithmicthink1-004/lecture/59)
|
|
|
|
-- [x] [Asymptotics](https://class.coursera.org/algorithmicthink1-004/lecture/61)
|
|
|
|
-- [x] [UC Berkeley Big O](https://youtu.be/VIS4YDpuP98)
|
|
|
|
-- [x] [UC Berkeley Big Omega](https://youtu.be/ca3e7UVmeUc)
|
|
|
|
-- [x] [Amortized Analysis](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN)
|
|
|
|
-- [x] [Illustrating "Big O"](https://class.coursera.org/algorithmicthink1-004/lecture/63)
|
|
|
|
|
|
+- [x] [Orders of Growth (video)](https://class.coursera.org/algorithmicthink1-004/lecture/59)
|
|
|
|
+- [x] [Asymptotics (video)](https://class.coursera.org/algorithmicthink1-004/lecture/61)
|
|
|
|
+- [x] [UC Berkeley Big O (video)](https://youtu.be/VIS4YDpuP98)
|
|
|
|
+- [x] [UC Berkeley Big Omega (video)](https://youtu.be/ca3e7UVmeUc)
|
|
|
|
+- [x] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN)
|
|
|
|
+- [x] [Illustrating "Big O" (video)](https://class.coursera.org/algorithmicthink1-004/lecture/63)
|
|
- [x] TopCoder (includes recurrence relations and master theorem):
|
|
- [x] 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/data-science/data-science-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/data-science/data-science-tutorials/computational-complexity-section-2/)
|
|
@@ -330,12 +328,12 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
- ### Arrays
|
|
- ### Arrays
|
|
- Implement an automatically resizing vector.
|
|
- Implement an automatically resizing vector.
|
|
- [x] Description:
|
|
- [x] Description:
|
|
- - [Arrays](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays)
|
|
|
|
- - [Arrays](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html)
|
|
|
|
- - [Multi-dim](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html)
|
|
|
|
- - [Dynamic Arrays](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays)
|
|
|
|
- - [Jagged](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Jagged-arrays/149042/177106-4.html)
|
|
|
|
- - [Resizing arrays](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Resizable-arrays/149042/177108-4.html)
|
|
|
|
|
|
+ - [Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays)
|
|
|
|
+ - [Basic Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Basic-arrays/149042/177104-4.html)
|
|
|
|
+ - [Multi-dim (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Multidimensional-arrays/149042/177105-4.html)
|
|
|
|
+ - [Dynamic Arrays (video)](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays)
|
|
|
|
+ - [Jagged Arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Jagged-arrays/149042/177106-4.html)
|
|
|
|
+ - [Resizing arrays (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Resizable-arrays/149042/177108-4.html)
|
|
- [x] Implement a vector (mutable array with automatic resizing):
|
|
- [x] Implement a vector (mutable array with automatic resizing):
|
|
- [x] Practice coding using arrays and pointers, and pointer math to jump to an index instead of using indexing.
|
|
- [x] Practice coding using arrays and pointers, and pointer math to jump to an index instead of using indexing.
|
|
- [x] new raw data array with allocated memory
|
|
- [x] new raw data array with allocated memory
|
|
@@ -364,19 +362,18 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
|
|
|
|
- ### Linked Lists
|
|
- ### Linked Lists
|
|
- [x] Description:
|
|
- [x] Description:
|
|
- - [x] [Singly Linked Lists](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists)
|
|
|
|
- - [x] [CS 61B - Linked lists](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5)
|
|
|
|
- - [x] [C Code](https://www.youtube.com/watch?v=QN6FPiD0Gzo)
|
|
|
|
|
|
+ - [x] [Singly Linked Lists (video)](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists)
|
|
|
|
+ - [x] [CS 61B - Linked Lists (video)](https://www.youtube.com/watch?v=sJtJOtXCW_M&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=5)
|
|
|
|
+ - [x] [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.
|
|
- [x] Linked List vs Arrays:
|
|
- [x] Linked List vs Arrays:
|
|
- - [Core Linked Lists Vs Arrays](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays)
|
|
|
|
- - [In The Real World Linked Lists Vs Arrays](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays)
|
|
|
|
- - [x] why you should avoid linked lists:
|
|
|
|
- - https://www.youtube.com/watch?v=YQs6IC-vgmo
|
|
|
|
|
|
+ - [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays)
|
|
|
|
+ - [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/QUaUd/in-the-real-world-lists-vs-arrays)
|
|
|
|
+ - [x] [why you should avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo)
|
|
- [x] Gotcha: you need pointer to pointer knowledge:
|
|
- [x] Gotcha: you need pointer to pointer knowledge:
|
|
(for when you pass a pointer to a function that may change the address where that pointer points)
|
|
(for when you pass a pointer to a function that may change the address where that pointer points)
|
|
This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness.
|
|
This page is just to get a grasp on ptr to ptr. I don't recommend this list traversal style. Readability and maintainability suffer due to cleverness.
|
|
- - https://www.eskimo.com/~scs/cclass/int/sx8.html
|
|
|
|
|
|
+ - [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html)
|
|
- [x] implement (I did with tail pointer & without):
|
|
- [x] implement (I did with tail pointer & without):
|
|
- [x] size() - returns number of data elements in list
|
|
- [x] size() - returns number of data elements in list
|
|
- [x] empty() - bool returns true if empty
|
|
- [x] empty() - bool returns true if empty
|
|
@@ -393,19 +390,19 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
- [x] reverse() - reverses the list
|
|
- [x] reverse() - reverses the list
|
|
- [x] remove_value(value) - removes the first item in the list with this value
|
|
- [x] remove_value(value) - removes the first item in the list with this value
|
|
- [x] Doubly-linked List
|
|
- [x] Doubly-linked List
|
|
- - Description: https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists
|
|
|
|
|
|
+ - [Description (video)](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists)
|
|
- No need to implement
|
|
- No need to implement
|
|
|
|
|
|
- ### Stack
|
|
- ### Stack
|
|
- - [x] [Stacks](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks)
|
|
|
|
- - [x] [Using Stacks Last-In First-Out](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html)
|
|
|
|
|
|
+ - [x] [Stacks (video)](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks)
|
|
|
|
+ - [x] [Using Stacks Last-In First-Out (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-stacks-last-first-out/149042/177120-4.html)
|
|
- [x] Will not implement. Implementing with array is trivial.
|
|
- [x] Will not implement. Implementing with array is trivial.
|
|
|
|
|
|
- ### Queue
|
|
- ### Queue
|
|
- - [x] [Using Queues First-In First-Out](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4.html)
|
|
|
|
- - [x] [Queue](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue)
|
|
|
|
|
|
+ - [x] [Using Queues First-In First-Out(video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-queues-first-first-out/149042/177122-4.html)
|
|
|
|
+ - [x] [Queue (video)](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue)
|
|
- [x] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer)
|
|
- [x] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer)
|
|
- - [x] [Priority Queues](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html)
|
|
|
|
|
|
+ - [x] [Priority Queues (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Priority-queues-deques/149042/177123-4.html)
|
|
- [x] Implement using linked-list, with tail pointer:
|
|
- [x] Implement using linked-list, with tail pointer:
|
|
- enqueue(value) - adds value at position at tail
|
|
- enqueue(value) - adds value at position at tail
|
|
- dequeue() - returns value and removes least recently added element (front)
|
|
- dequeue() - returns value and removes least recently added element (front)
|
|
@@ -424,24 +421,24 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
|
|
|
|
- ### Hash table
|
|
- ### Hash table
|
|
- [x] Videos:
|
|
- [x] Videos:
|
|
- - [x] Hashing with Chaining: https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8
|
|
|
|
- - [x] Table Doubling, Karp-Rabin: https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb
|
|
|
|
- - [x] Open Addressing, Cryptographic Hashing: https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb
|
|
|
|
- - [x] PyCon 2010: The Mighty Dictionary: https://www.youtube.com/watch?v=C4Kc8xzcA68
|
|
|
|
- - [x] (Advanced) Randomization: Universal & Perfect Hashing: https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11
|
|
|
|
- - [x] (Advanced) Perfect hashing: https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4
|
|
|
|
|
|
+ - [x] [Hashing with Chaining (video)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8)
|
|
|
|
+ - [x] [Table Doubling, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
|
|
|
|
+ - [x] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
|
|
|
|
+ - [x] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68)
|
|
|
|
+ - [x] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11)
|
|
|
|
+ - [x] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4)
|
|
|
|
|
|
- [x] Online Courses:
|
|
- [x] Online Courses:
|
|
- - [x] https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html
|
|
|
|
- - [x] https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html
|
|
|
|
- - [x] https://www.lynda.com/Developer-Programming-Foundations-tutorials/Supporting-hashing/149042/177128-4.html
|
|
|
|
- - [x] https://www.lynda.com/Developer-Programming-Foundations-tutorials/Language-support-hash-tables/149042/177129-4.html
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures/home/week/3
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem
|
|
|
|
|
|
+ - [x] [Understanding Hash Functions (video](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Understanding-hash-functions/149042/177126-4.html)
|
|
|
|
+ - [x] [Using Hash Tables (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Using-hash-tables/149042/177127-4.html)
|
|
|
|
+ - [x] [Supporting Hashing (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Supporting-hashing/149042/177128-4.html)
|
|
|
|
+ - [x] [Language SUpport Hash Tables (video)](https://www.lynda.com/Developer-Programming-Foundations-tutorials/Language-support-hash-tables/149042/177129-4.html)
|
|
|
|
+ - [x] [Core Hash Tables (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables)
|
|
|
|
+ - [x] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/3)
|
|
|
|
+ - [x] [Phone Book Problem (video)](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem)
|
|
- [x] distributed hash tables:
|
|
- [x] distributed hash tables:
|
|
- - https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox
|
|
|
|
- - https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables
|
|
|
|
|
|
+ - [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox)
|
|
|
|
+ - [Distributed Hash Tables (video)](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables)
|
|
|
|
|
|
- [x] implement with array using linear probing
|
|
- [x] implement with array using linear probing
|
|
- hash(k, m) - m is size of hash table
|
|
- hash(k, m) - m is size of hash table
|
|
@@ -453,16 +450,16 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
## More Knowledge
|
|
## More Knowledge
|
|
|
|
|
|
- ### Endianness
|
|
- ### Endianness
|
|
- - [x] https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html
|
|
|
|
- - [x] https://www.youtube.com/watch?v=JrNF0KRAlyo
|
|
|
|
- - [x] https://www.youtube.com/watch?v=oBSuXP-1Tc0
|
|
|
|
|
|
+ - [x] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html)
|
|
|
|
+ - [x] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo)
|
|
|
|
+ - [x] [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.
|
|
- Very technical talk for kernel devs. Don't worry if most is over your head.
|
|
- The first half is enough.
|
|
- The first half is enough.
|
|
|
|
|
|
- ### Binary search
|
|
- ### Binary search
|
|
- - [x] https://www.youtube.com/watch?v=D5SrAga1pno
|
|
|
|
- - [x] https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search
|
|
|
|
- - [x] detail: https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/
|
|
|
|
|
|
+ - [x] [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno)
|
|
|
|
+ - [x] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search)
|
|
|
|
+ - [x] [detail](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/)
|
|
- [x] Implement:
|
|
- [x] Implement:
|
|
- binary search (on sorted array of integers)
|
|
- binary search (on sorted array of integers)
|
|
- binary search using recursion
|
|
- binary search using recursion
|
|
@@ -470,45 +467,45 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
- ### Bitwise operations
|
|
- ### Bitwise operations
|
|
- [x] [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)
|
|
- [x] [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)
|
|
- [x] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, <<
|
|
- [x] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, <<
|
|
- - [x] words: https://en.wikipedia.org/wiki/Word_(computer_architecture)
|
|
|
|
|
|
+ - [x] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture)
|
|
- [x] Good intro:
|
|
- [x] Good intro:
|
|
- https://www.youtube.com/watch?v=7jkIUgLC29I
|
|
|
|
- - [x] https://www.youtube.com/watch?v=d0AwjSpNXR0
|
|
|
|
- - [x] https://en.wikipedia.org/wiki/Bit_manipulation
|
|
|
|
- - [x] https://en.wikipedia.org/wiki/Bitwise_operation
|
|
|
|
- - [x] https://graphics.stanford.edu/~seander/bithacks.html
|
|
|
|
- - [x] http://bits.stephan-brumme.com/
|
|
|
|
- - [x] http://bits.stephan-brumme.com/interactive.html
|
|
|
|
|
|
+ [Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I)
|
|
|
|
+ - [x] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0)
|
|
|
|
+ - [x] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation)
|
|
|
|
+ - [x] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation)
|
|
|
|
+ - [x] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html)
|
|
|
|
+ - [x] [The Bit Twiddler](http://bits.stephan-brumme.com/)
|
|
|
|
+ - [x] [The Bit Twiddler Interactive](http://bits.stephan-brumme.com/interactive.html)
|
|
- [x] 2s and 1s complement
|
|
- [x] 2s and 1s complement
|
|
- - https://www.youtube.com/watch?v=lKTsv6iVxV4
|
|
|
|
- - https://en.wikipedia.org/wiki/Ones%27_complement
|
|
|
|
- - https://en.wikipedia.org/wiki/Two%27s_complement
|
|
|
|
|
|
+ - [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)
|
|
|
|
+ - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement)
|
|
- [x] count set bits
|
|
- [x] count set bits
|
|
- - https://youtu.be/Hzuzo9NJrlc
|
|
|
|
- - https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan
|
|
|
|
- - http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer
|
|
|
|
|
|
+ - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc)
|
|
|
|
+ - [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)
|
|
- [x] round to next power of 2:
|
|
- [x] round to next power of 2:
|
|
- - http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html
|
|
|
|
|
|
+ - [Round Up To Next Power Of Two](http://bits.stephan-brumme.com/roundUpToNextPowerOfTwo.html)
|
|
- [x] swap values:
|
|
- [x] swap values:
|
|
- - http://bits.stephan-brumme.com/swap.html
|
|
|
|
|
|
+ - [Swap](http://bits.stephan-brumme.com/swap.html)
|
|
- [x] absolute value:
|
|
- [x] absolute value:
|
|
- - http://bits.stephan-brumme.com/absInteger.html
|
|
|
|
|
|
+ - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html)
|
|
|
|
|
|
## Trees
|
|
## Trees
|
|
|
|
|
|
- ### Trees - Notes & Background
|
|
- ### Trees - Notes & Background
|
|
- - [x] Series: https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees
|
|
|
|
- - [x] Series: https://www.coursera.org/learn/data-structures/lecture/95qda/trees
|
|
|
|
|
|
+ - [x] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees)
|
|
|
|
+ - [x] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees)
|
|
- basic tree construction
|
|
- basic tree construction
|
|
- traversal
|
|
- traversal
|
|
- manipulation algorithms
|
|
- manipulation algorithms
|
|
- BFS (breadth-first search)
|
|
- BFS (breadth-first search)
|
|
- - MIT: https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13
|
|
|
|
|
|
+ - [MIT (video)](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13)
|
|
- 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 (depth-first search)
|
|
- - MIT: https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14
|
|
|
|
|
|
+ - [MIT (video)](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14)
|
|
- notes:
|
|
- notes:
|
|
time complexity: O(n)
|
|
time complexity: O(n)
|
|
space complexity:
|
|
space complexity:
|
|
@@ -519,22 +516,22 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
- preorder (DFS: self, left, right)
|
|
- preorder (DFS: self, left, right)
|
|
|
|
|
|
- ### Binary search trees: BSTs
|
|
- ### Binary search trees: BSTs
|
|
- - [x] Binary Search Tree Review: https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
|
|
|
- - [x] Series: https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees
|
|
|
|
|
|
+ - [x] [Binary Search Tree Review (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6)
|
|
|
|
+ - [x] [Series (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees)
|
|
- starts with symbol table and goes through BST applications
|
|
- starts with symbol table and goes through BST applications
|
|
- - [x] https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction
|
|
|
|
- - [x] MIT: https://www.youtube.com/watch?v=9Jry5-82I68
|
|
|
|
|
|
+ - [x] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction)
|
|
|
|
+ - [x] [MIT (video)](https://www.youtube.com/watch?v=9Jry5-82I68)
|
|
- C/C++:
|
|
- C/C++:
|
|
- - [x] https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28
|
|
|
|
- - [x] https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29
|
|
|
|
- - [x] https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P
|
|
|
|
- - [x] https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31
|
|
|
|
- - [x] https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32
|
|
|
|
- - [x] https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P
|
|
|
|
- - [x] https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P
|
|
|
|
- - [x] https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P
|
|
|
|
- - [x] https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36
|
|
|
|
- - [x] https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P
|
|
|
|
|
|
+ - [x] [Binary search tree - Implementation in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28)
|
|
|
|
+ - [x] [BST implementation - memory allocation in stack and heap (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29)
|
|
|
|
+ - [x] [Find min and max element in a binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P)
|
|
|
|
+ - [x] [Find height of a binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31)
|
|
|
|
+ - [x] [Binary tree traversal - breadth-first and depth-first strategies (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32)
|
|
|
|
+ - [x] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P)
|
|
|
|
+ - [x] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P)
|
|
|
|
+ - [x] [Check if a binary tree is binary search tree or not (video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P)
|
|
|
|
+ - [x] [Delete a node from Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36)
|
|
|
|
+ - [x] [Inorder Successor in a binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P)
|
|
- [x] Implement:
|
|
- [x] Implement:
|
|
- [x] insert // insert value into tree
|
|
- [x] insert // insert value into tree
|
|
- [x] get_node_count // get count of values stored
|
|
- [x] get_node_count // get count of values stored
|
|
@@ -550,21 +547,20 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
|
|
|
|
- ### Heap / Priority Queue / Binary Heap
|
|
- ### Heap / Priority Queue / Binary Heap
|
|
- visualized as a tree, but is usually linear in storage (array, linked list)
|
|
- visualized as a tree, but is usually linear in storage (array, linked list)
|
|
- - [x] https://en.wikipedia.org/wiki/Heap_(data_structure)
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode
|
|
|
|
- - [x] Heap Sort - jumps to start: https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291
|
|
|
|
- - [x] Heap Sort: https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort
|
|
|
|
- - [x] Building a heap: https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap
|
|
|
|
- - [x] MIT: Heaps and Heap Sort: https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb
|
|
|
|
- - [x] CS 61B Lecture 24: Priority Queues: https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C
|
|
|
|
- - [x] Linear Time BuildHeap (max-heap): https://www.youtube.com/watch?v=MiyLo8adrWw
|
|
|
|
|
|
+ - [x] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure))
|
|
|
|
+ - [x] [Introduction (video)](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction)
|
|
|
|
+ - [x] [Naive Implementations (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations)
|
|
|
|
+ - [x] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees)
|
|
|
|
+ - [x] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark)
|
|
|
|
+ - [x] [Basic Operations (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations)
|
|
|
|
+ - [x] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees)
|
|
|
|
+ - [x] [Pseudocode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode)
|
|
|
|
+ - [x] [Heap Sort - jumps to start (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291)
|
|
|
|
+ - [x] [Heap Sort (video)](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort)
|
|
|
|
+ - [x] [Building a heap (video)](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap)
|
|
|
|
+ - [x] [MIT: Heaps and Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
|
|
|
|
+ - [x] [CS 61B Lecture 24: Priority Queues (video)](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C)
|
|
|
|
+ - [x] [Linear Time BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw)
|
|
- [x] Implement a max-heap:
|
|
- [x] Implement a max-heap:
|
|
- [x] insert
|
|
- [x] insert
|
|
- [x] sift_up - needed for insert
|
|
- [x] sift_up - needed for insert
|
|
@@ -582,15 +578,15 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
- Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits
|
|
- Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits
|
|
to track the path.
|
|
to track the path.
|
|
- I read through code, but will not implement.
|
|
- I read through code, but will not implement.
|
|
- - [x] http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries
|
|
|
|
|
|
+ - [x] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries)
|
|
- [x] Short course videos:
|
|
- [x] Short course videos:
|
|
- - [x] https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries
|
|
|
|
|
|
+ - [x] [Core Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries)
|
|
|
|
+ - [x] [Core Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries)
|
|
- [x] https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie
|
|
- [x] https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie
|
|
- - [x] The Trie: A Neglected Data Structure: https://www.toptal.com/java/the-trie-a-neglected-data-structure
|
|
|
|
- - [x] TopCoder - Using Tries: https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/
|
|
|
|
- - [x] Stanford Lecture (real world use case): https://www.youtube.com/watch?v=TJ8SkcUSdbU
|
|
|
|
- - [x] MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through): https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf
|
|
|
|
|
|
+ - [x] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure)
|
|
|
|
+ - [x] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/)
|
|
|
|
+ - [x] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU)
|
|
|
|
+ - [x] [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 least one type of balanced binary tree (and know how it's implemented):
|
|
@@ -604,7 +600,7 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
If you end up implementing red/black tree try just these:
|
|
If you end up implementing red/black tree try just these:
|
|
- search and insertion functions, skipping delete
|
|
- search and insertion functions, skipping delete
|
|
- I want to learn more about B-Tree since it's used so widely with very large data sets.
|
|
- I want to learn more about B-Tree since it's used so widely with very large data sets.
|
|
- - [x] Self-balancing binary search tree: https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree
|
|
|
|
|
|
+ - [x] [Self-balancing binary search tree](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree)
|
|
|
|
|
|
- [x] **AVL trees**
|
|
- [x] **AVL trees**
|
|
- In practice:
|
|
- In practice:
|
|
@@ -613,28 +609,28 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it
|
|
balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it
|
|
attractive for data structures that may be built once and loaded without reconstruction, such as language
|
|
attractive for data structures that may be built once and loaded without reconstruction, such as language
|
|
dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter).
|
|
dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter).
|
|
- - [x] MIT AVL Trees / AVL Sort: https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation
|
|
|
|
- - [x] https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge
|
|
|
|
|
|
+ - [x] [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6)
|
|
|
|
+ - [x] [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees)
|
|
|
|
+ - [x] [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation)
|
|
|
|
+ - [x] [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge)
|
|
|
|
|
|
- [x] **Splay trees**
|
|
- [x] **Splay trees**
|
|
- In practice:
|
|
- In practice:
|
|
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.
|
|
- - [x] CS 61B: Splay Trees: https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd
|
|
|
|
|
|
+ - [x] [CS 61B: Splay Trees (video)](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd)
|
|
- [x] MIT Lecture: Splay Trees:
|
|
- [x] 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.
|
|
- - https://www.youtube.com/watch?v=QnPl_Y6EqMo
|
|
|
|
|
|
+ - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo)
|
|
|
|
|
|
- [x] **2-3 search trees**
|
|
- [x] **2-3 search trees**
|
|
- In practice:
|
|
- In practice:
|
|
2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees).
|
|
2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees).
|
|
- You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees.
|
|
- You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees.
|
|
- - [x] 23-Tree Intuition and Definition: https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2
|
|
|
|
- - [x] Binary View of 23-Tree: https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
|
|
|
- - [x] 2-3 Trees (student recitation): https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp
|
|
|
|
|
|
+ - [x] [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2)
|
|
|
|
+ - [x] [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6)
|
|
|
|
+ - [x] [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
|
|
|
|
|
|
- [x] **2-3-4 Trees (aka 2-4 trees)**
|
|
- [x] **2-3-4 Trees (aka 2-4 trees)**
|
|
- In practice:
|
|
- In practice:
|
|
@@ -642,9 +638,9 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
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**.
|
|
- - [x] CS 61B Lecture 26: Balanced Search Trees: https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C
|
|
|
|
- - [x] Bottom Up 234-Trees: https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
|
|
|
- - [x] Top Down 234-Trees: https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5
|
|
|
|
|
|
+ - [x] [CS 61B Lecture 26: Balanced Search Trees (video)](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C)
|
|
|
|
+ - [x] [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6)
|
|
|
|
+ - [x] [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5)
|
|
|
|
|
|
- [x] **B-Trees**
|
|
- [x] **B-Trees**
|
|
- fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor)
|
|
- fun fact: it's a mystery, but the B could stand for Boeing, Balanced, or Bayer (co-inventor)
|
|
@@ -653,11 +649,11 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary
|
|
its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary
|
|
block in a particular file. The basic problem is turning the file block i address into a disk block
|
|
block in a particular file. The basic problem is turning the file block i address into a disk block
|
|
(or perhaps to a cylinder-head-sector) address.
|
|
(or perhaps to a cylinder-head-sector) address.
|
|
- - [x] B-Tree: https://en.wikipedia.org/wiki/B-tree
|
|
|
|
- - [x] Introduction to B-Trees: https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6
|
|
|
|
- - [x] B-Tree Definition and Insertion: https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
|
|
|
- - [x] B-Tree Deletion: https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6
|
|
|
|
- - [x] MIT 6.851 - Memory Hierarchy Models: https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf
|
|
|
|
|
|
+ - [x] [B-Tree](https://en.wikipedia.org/wiki/B-tree)
|
|
|
|
+ - [x] [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6)
|
|
|
|
+ - [x] [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6)
|
|
|
|
+ - [x] [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6)
|
|
|
|
+ - [x] [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf)
|
|
- covers cache-oblivious B-Trees, very interesting data structures
|
|
- covers cache-oblivious B-Trees, very interesting data structures
|
|
- 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)
|
|
|
|
|
|
@@ -671,17 +667,16 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor
|
|
the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor
|
|
hashcodes, a Red-Black tree is used.
|
|
hashcodes, a Red-Black tree is used.
|
|
- [x] Aduni - Algorithms - Lecture 4
|
|
- [x] Aduni - Algorithms - Lecture 4
|
|
- link jumps to starting point:
|
|
|
|
- https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871
|
|
|
|
- - [x] Aduni - Algorithms - Lecture 5: https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5
|
|
|
|
- - [x] https://en.wikipedia.org/wiki/Red%E2%80%93black_tree
|
|
|
|
- - [x] https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/
|
|
|
|
|
|
+ [link jumps to starting point (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871)
|
|
|
|
+ - [x] [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5)
|
|
|
|
+ - [x] [Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree)
|
|
|
|
+ - [x] [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/)
|
|
|
|
|
|
- ### N-ary (K-ary, M-ary) trees
|
|
- ### N-ary (K-ary, M-ary) trees
|
|
- note: the N or K is the branching factor (max branches)
|
|
- note: the N or K is the branching factor (max branches)
|
|
- binary trees are a 2-ary tree, with branching factor = 2
|
|
- binary trees are a 2-ary tree, with branching factor = 2
|
|
- 2-3 trees are 3-ary
|
|
- 2-3 trees are 3-ary
|
|
- - [x] https://en.wikipedia.org/wiki/K-ary_tree
|
|
|
|
|
|
+ - [x] [K-Ary Tree](https://en.wikipedia.org/wiki/K-ary_tree)
|
|
|
|
|
|
## Sorting
|
|
## Sorting
|
|
|
|
|
|
@@ -689,50 +684,50 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
- Implement sorts & know best case/worst case, average complexity of each:
|
|
- Implement sorts & know best case/worst case, average complexity of each:
|
|
- no bubble sort - it's terrible - O(n^2), except when n <= 16
|
|
- no bubble sort - it's terrible - O(n^2), except when n <= 16
|
|
- [x] stability in sorting algorithms ("Is Quicksort stable?")
|
|
- [x] stability in sorting algorithms ("Is Quicksort stable?")
|
|
- - https://en.wikipedia.org/wiki/Sorting_algorithm#Stability
|
|
|
|
- - http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms
|
|
|
|
- - http://www.geeksforgeeks.org/stability-in-sorting-algorithms/
|
|
|
|
- - http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf
|
|
|
|
|
|
+ - [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability)
|
|
|
|
+ - [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms)
|
|
|
|
+ - [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/)
|
|
|
|
+ - [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf)
|
|
- [x] Which algorithms can be used on linked lists? Which on arrays? Which on both?
|
|
- [x] Which algorithms can be used on linked lists? Which on arrays? Which on both?
|
|
- I wouldn't recommend sorting a linked list, but merge sort is doable.
|
|
- I wouldn't recommend sorting a linked list, but merge sort is doable.
|
|
- - http://www.geeksforgeeks.org/merge-sort-for-linked-list/
|
|
|
|
|
|
+ - [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/)
|
|
|
|
|
|
- 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.
|
|
|
|
|
|
-- [x] Bubble Sort: https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB
|
|
|
|
-- [x] Analyzing Bubble Sort: https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB
|
|
|
|
-- [x] Insertion Sort, Merge Sort: https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb
|
|
|
|
-- [x] Insertion Sort: https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB
|
|
|
|
-- [x] Merge Sort: https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB
|
|
|
|
-- [x] Quicksort: https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB
|
|
|
|
-- [x] Selection Sort: https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB
|
|
|
|
|
|
+- [x] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB)
|
|
|
|
+- [x] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB)
|
|
|
|
+- [x] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
|
|
|
|
+- [x] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB)
|
|
|
|
+- [x] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB)
|
|
|
|
+- [x] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB)
|
|
|
|
+- [x] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB)
|
|
|
|
|
|
- [x] Stanford lectures on sorting:
|
|
- [x] Stanford lectures on sorting:
|
|
- - [x] https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69
|
|
|
|
- - [x] https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69
|
|
|
|
|
|
+ - [x] [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69)
|
|
|
|
+ - [x] [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69)
|
|
|
|
|
|
- [x] Shai Simonson, [Aduni.org](http://www.aduni.org/):
|
|
- [x] Shai Simonson, [Aduni.org](http://www.aduni.org/):
|
|
- - [x] https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2
|
|
|
|
- - [x] https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3
|
|
|
|
|
|
+ - [x] [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2)
|
|
|
|
+ - [x] [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3)
|
|
|
|
|
|
- [x] Steven Skiena lectures on sorting:
|
|
- [x] Steven Skiena lectures on sorting:
|
|
- - [x] lecture begins at 26:46: https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600
|
|
|
|
- - [x] lecture begins at 27:40: https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b
|
|
|
|
- - [x] lecture begins at 35:00: https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b
|
|
|
|
- - [x] lecture begins at 23:50: https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10
|
|
|
|
|
|
+ - [x] [lecture begins at 26:46 (video)](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600)
|
|
|
|
+ - [x] [lecture begins at 27:40 (video)](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
|
+ - [x] [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
|
+ - [x] [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10)
|
|
|
|
|
|
- [x] UC Berkeley:
|
|
- [x] UC Berkeley:
|
|
- - [x] CS 61B Lecture 29: Sorting I: https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29
|
|
|
|
- - [x] CS 61B Lecture 30: Sorting II: https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30
|
|
|
|
- - [x] CS 61B Lecture 32: Sorting III: https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C
|
|
|
|
- - [x] CS 61B Lecture 33: Sorting V: https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C
|
|
|
|
|
|
+ - [x] [CS 61B Lecture 29: Sorting I (video)](https://www.youtube.com/watch?v=EiUvYS2DT6I&list=PL4BBB74C7D2A1049C&index=29)
|
|
|
|
+ - [x] [CS 61B Lecture 30: Sorting II (video)](https://www.youtube.com/watch?v=2hTY3t80Qsk&list=PL4BBB74C7D2A1049C&index=30)
|
|
|
|
+ - [x] [CS 61B Lecture 32: Sorting III (video)](https://www.youtube.com/watch?v=Y6LOLpxg6Dc&index=32&list=PL4BBB74C7D2A1049C)
|
|
|
|
+ - [x] [CS 61B Lecture 33: Sorting V (video)](https://www.youtube.com/watch?v=qNMQ4ly43p4&index=33&list=PL4BBB74C7D2A1049C)
|
|
|
|
|
|
- [x] - Merge sort code:
|
|
- [x] - Merge sort code:
|
|
- - [x] Using output array: http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c
|
|
|
|
- - [x] In-place: https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc
|
|
|
|
|
|
+ - [x] [Using output array](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c)
|
|
|
|
+ - [x] [In-place](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc)
|
|
- [x] - Quick sort code:
|
|
- [x] - Quick sort code:
|
|
- - [x] http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c
|
|
|
|
- - [x] https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c
|
|
|
|
|
|
+ - [x] [Implementation](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c)
|
|
|
|
+ - [x] [Implementation](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c)
|
|
|
|
|
|
- [x] Implement:
|
|
- [x] Implement:
|
|
- [x] Mergesort: O(n log n) average and worst case
|
|
- [x] Mergesort: O(n log n) average and worst case
|
|
@@ -741,11 +736,11 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
- For heapsort, see Heap data structure above.
|
|
- For heapsort, see Heap data structure above.
|
|
|
|
|
|
- [x] For curiosity - not required:
|
|
- [x] For curiosity - not required:
|
|
- - [x] Radix Sort: http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort
|
|
|
|
- - [x] Radix Sort: https://www.youtube.com/watch?v=xhr26ia4k38
|
|
|
|
- - [x] Radix Sort, Counting Sort (linear time given constraints): https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb
|
|
|
|
- - [x] Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm: https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp
|
|
|
|
- - [x] Sorting in Linear Time: https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14
|
|
|
|
|
|
+ - [x] [Radix Sort]http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort
|
|
|
|
+ - [x] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38)
|
|
|
|
+ - [x] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
|
|
|
|
+ - [x] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
|
|
|
|
+ - [x] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14)
|
|
|
|
|
|
## Graphs
|
|
## Graphs
|
|
|
|
|
|
@@ -761,37 +756,37 @@ Graphs can be used to represent many problems in computer science, so this secti
|
|
- When asked a question, look for a graph-based solution first, then move on if none.
|
|
- When asked a question, look for a graph-based solution first, then move on if none.
|
|
|
|
|
|
- [x] Skiena Lectures - great intro:
|
|
- [x] Skiena Lectures - great intro:
|
|
- - [x] CSE373 2012 - Lecture 11 - Graph Data Structures: https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11
|
|
|
|
- - [x] CSE373 2012 - Lecture 12 - Breadth-First Search: https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12
|
|
|
|
- - [x] CSE373 2012 - Lecture 13 - Graph Algorithms: https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13
|
|
|
|
- - [x] CSE373 2012 - Lecture 14 - Graph Algorithms (con't): https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b
|
|
|
|
- - [x] CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2): https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b
|
|
|
|
- - [x] CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3): https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b
|
|
|
|
|
|
+ - [x] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11)
|
|
|
|
+ - [x] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12)
|
|
|
|
+ - [x] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13)
|
|
|
|
+ - [x] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
|
+ - [x] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
|
+ - [x] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
|
|
|
- [x] Graphs (review and more):
|
|
- [x] Graphs (review and more):
|
|
|
|
|
|
- - [x] 6.006 Single-Source Shortest Paths Problem: https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb
|
|
|
|
- - [x] 6.006 Dijkstra: https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb
|
|
|
|
- - [x] 6.006 Bellman-Ford: https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17
|
|
|
|
- - [x] 6.006 Speeding Up Dijkstra: https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18
|
|
|
|
- - [x] Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6: https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm
|
|
|
|
- - [x] Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7: https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7
|
|
|
|
- - [x] Aduni: Graph Algorithms III: Shortest Path - Lecture 8: https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8
|
|
|
|
- - [x] Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9: https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9
|
|
|
|
- - [x] CS 61B 2014 (starting at 58:09): https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489
|
|
|
|
- - [x] CS 61B 2014: Weighted graphs: https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19
|
|
|
|
- - [x] Greedy Algorithms: Minimum Spanning Tree: https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp
|
|
|
|
- - [x] Strongly Connected Components Kosaraju's Algorithm Graph Algorithm: https://www.youtube.com/watch?v=RpgcYiky7uw
|
|
|
|
|
|
+ - [x] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
|
|
|
|
+ - [x] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
|
|
|
|
+ - [x] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17)
|
|
|
|
+ - [x] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18)
|
|
|
|
+ - [x] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
|
|
|
|
+ - [x] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7)
|
|
|
|
+ - [x] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8)
|
|
|
|
+ - [x] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9)
|
|
|
|
+ - [x] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489)
|
|
|
|
+ - [x] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19)
|
|
|
|
+ - [x] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
|
|
|
|
+ - [x] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw)
|
|
|
|
|
|
- Full Coursera Course:
|
|
- Full Coursera Course:
|
|
- - [x] Algorithms on Graphs: https://www.coursera.org/learn/algorithms-on-graphs/home/welcome
|
|
|
|
|
|
+ - [x] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome)
|
|
|
|
|
|
- Yegge: If you get a chance, try to study up on fancier algorithms:
|
|
- Yegge: If you get a chance, try to study up on fancier algorithms:
|
|
- [x] Dijkstra's algorithm - see above - 6.006
|
|
- [x] Dijkstra's algorithm - see above - 6.006
|
|
- [x] A*
|
|
- [x] A*
|
|
- - [x] https://en.wikipedia.org/wiki/A*_search_algorithm
|
|
|
|
- - [x] A* Pathfinding Tutorial: https://www.youtube.com/watch?v=KNXfSOx4eEE
|
|
|
|
- - [x] A* Pathfinding (E01: algorithm explanation): https://www.youtube.com/watch?v=-L-WgKMFuhE
|
|
|
|
|
|
+ - [x] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm)
|
|
|
|
+ - [x] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE)
|
|
|
|
+ - [x] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE)
|
|
|
|
|
|
- I'll implement:
|
|
- I'll implement:
|
|
- [x] DFS with adjacency list (recursive)
|
|
- [x] DFS with adjacency list (recursive)
|
|
@@ -815,92 +810,92 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
|
|
|
|
- ### Recursion
|
|
- ### Recursion
|
|
- [x] Stanford lectures on recursion & backtracking:
|
|
- [x] Stanford lectures on recursion & backtracking:
|
|
- - [x] https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8
|
|
|
|
- - [x] https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9
|
|
|
|
- - [x] https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69
|
|
|
|
- - [x] https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11
|
|
|
|
|
|
+ - [x] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8)
|
|
|
|
+ - [x] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9)
|
|
|
|
+ - [x] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69)
|
|
|
|
+ - [x] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11)
|
|
- when it is appropriate to use it
|
|
- when it is appropriate to use it
|
|
- how is tail recursion better than not?
|
|
- how is tail recursion better than not?
|
|
- - [x] https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad
|
|
|
|
- - [x] https://www.youtube.com/watch?v=L1jjXGfxozc
|
|
|
|
|
|
+ - [x] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad)
|
|
|
|
+ - [x] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc)
|
|
|
|
|
|
- ### Dynamic Programming
|
|
- ### 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.
|
|
- [x] Videos:
|
|
- [x] 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
|
|
- - [x] Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming: https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718
|
|
|
|
- - [x] Skiena: CSE373 2012 - Lecture 20 - Edit Distance: https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749
|
|
|
|
- - [x] Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples: https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406
|
|
|
|
- - [x] Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming: https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22
|
|
|
|
- - [x] Simonson: Dynamic Programming 0 (starts at 59:18): https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558
|
|
|
|
- - [x] Simonson: Dynamic Programming I - Lecture 11: https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm
|
|
|
|
- - [x] Simonson: Dynamic programming II - Lecture 12: https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12
|
|
|
|
|
|
+ - [x] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718)
|
|
|
|
+ - [x] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749)
|
|
|
|
+ - [x] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406)
|
|
|
|
+ - [x] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22)
|
|
|
|
+ - [x] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558)
|
|
|
|
+ - [x] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
|
|
|
|
+ - [x] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12)
|
|
- [x] List of individual DP problems (each is short):
|
|
- [x] List of individual DP problems (each is short):
|
|
- https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr
|
|
|
|
|
|
+ [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr)
|
|
- [x] Yale Lecture notes:
|
|
- [x] Yale Lecture notes:
|
|
- - [x] http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming
|
|
|
|
|
|
+ - [x] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming)
|
|
- [x] Coursera:
|
|
- [x] Coursera:
|
|
- - [x] The RNA secondary structure problem: https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem
|
|
|
|
- - [x] A dynamic programming algorithm: https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm
|
|
|
|
- - [x] Illustrating the DP algorithm: https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm
|
|
|
|
- - [x] Running time of the DP algorithm: https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm
|
|
|
|
- - [x] DP vs. recursive implementation: https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation
|
|
|
|
- - [x] Global pairwise sequence alignment: https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment
|
|
|
|
- - [x] Local pairwise sequence alignment: https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment
|
|
|
|
|
|
+ - [x] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem)
|
|
|
|
+ - [x] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm)
|
|
|
|
+ - [x] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm)
|
|
|
|
+ - [x] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm)
|
|
|
|
+ - [x] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation)
|
|
|
|
+ - [x] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment)
|
|
|
|
+ - [x] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment)
|
|
|
|
|
|
- ### Combinatorics (n choose k) & Probability
|
|
- ### Combinatorics (n choose k) & Probability
|
|
- - [x] Math Skills: How to find Factorial, Permutation and Combination (Choose): https://www.youtube.com/watch?v=8RRo6Ti9d0U
|
|
|
|
- - [x] Make School: Probability: https://www.youtube.com/watch?v=sZkAAk9Wwa4
|
|
|
|
- - [x] Make School: More Probability and Markov Chains: https://www.youtube.com/watch?v=dNaJg-mLobQ
|
|
|
|
|
|
+ - [x] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U)
|
|
|
|
+ - [x] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4)
|
|
|
|
+ - [x] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ)
|
|
- [x] Khan Academy:
|
|
- [x] Khan Academy:
|
|
- Course layout:
|
|
- Course layout:
|
|
- - [x] https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic
|
|
|
|
|
|
+ - [x] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic)
|
|
- Just the videos - 41 (each are simple and each are short):
|
|
- Just the videos - 41 (each are simple and each are short):
|
|
- - [x] https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19
|
|
|
|
|
|
+ - [x] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19)
|
|
|
|
|
|
- ### NP, NP-Complete and Approximation Algorithms
|
|
- ### NP, NP-Complete and Approximation Algorithms
|
|
- Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem,
|
|
- Know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem,
|
|
and be able to recognize them when an interviewer asks you them in disguise.
|
|
and be able to recognize them when an interviewer asks you them in disguise.
|
|
- Know what NP-complete means.
|
|
- Know what NP-complete means.
|
|
- - [x] Computational Complexity: https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23
|
|
|
|
|
|
+ - [x] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23)
|
|
- [ ] Simonson:
|
|
- [ ] Simonson:
|
|
- - [x] https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939
|
|
|
|
- - [x] https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm
|
|
|
|
- - [ ] https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm
|
|
|
|
- - [ ] https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18
|
|
|
|
|
|
+ - [x] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939)
|
|
|
|
+ - [x] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
|
|
|
|
+ - [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
|
|
|
|
+ - [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18)
|
|
- [ ] Skiena:
|
|
- [ ] Skiena:
|
|
- - [x] CSE373 2012 - Lecture 23 - Introduction to NP-Completeness: https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508
|
|
|
|
- - [ ] CSE373 2012 - Lecture 24 - NP-Completeness Proofs: https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b
|
|
|
|
- - [ ] CSE373 2012 - Lecture 25 - NP-Completeness Challenge: https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b
|
|
|
|
- - [x] Complexity: P, NP, NP-completeness, Reductions: https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22
|
|
|
|
- - [x] Complexity: Approximation Algorithms: https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24
|
|
|
|
- - [ ] Complexity: Fixed-Parameter Algorithms: https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp
|
|
|
|
|
|
+ - [x] [CSE373 2012 - Lecture 23 - Introduction to NP-CompletenessNP Completeness IV (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508)
|
|
|
|
+ - [ ] [CSE373 2012 - Lecture 24 - NP-Completeness Proofs (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
|
+ - [ ] [CSE373 2012 - Lecture 25 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
|
+ - [x] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22)
|
|
|
|
+ - [x] [Complexity: Approximation Algorithms (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24)
|
|
|
|
+ - [ ] [Complexity: Fixed-Parameter Algorithms (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
|
|
- Peter Norvik discusses near-optimal solutions to traveling salesman problem:
|
|
- Peter Norvik discusses near-optimal solutions to traveling salesman problem:
|
|
- - http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb
|
|
|
|
|
|
+ - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb)
|
|
- Pages 1048 - 1140 in CLRS if you have it.
|
|
- Pages 1048 - 1140 in CLRS if you have it.
|
|
|
|
|
|
- ### Garbage collection
|
|
- ### Garbage collection
|
|
- - [x] Garbage collection (Java); Augmenting data str: https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25
|
|
|
|
- - [x] Compilers: https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff
|
|
|
|
- - [x] GC in Python: https://www.youtube.com/watch?v=iHVs_HkjdmI
|
|
|
|
- - [x] Deep Dive Java: Garbage Collection is Good!: https://www.infoq.com/presentations/garbage-collection-benefits
|
|
|
|
- - [x] Deep Dive Python: Garbage Collection in CPython: https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3
|
|
|
|
|
|
+ - [x] [Garbage collection (Java); Augmenting data str (video)](https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25)
|
|
|
|
+ - [x] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff)
|
|
|
|
+ - [x] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI)
|
|
|
|
+ - [x] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits)
|
|
|
|
+ - [x] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3)
|
|
|
|
|
|
- ### Caches
|
|
- ### Caches
|
|
- [x] LRU cache:
|
|
- [x] LRU cache:
|
|
- - [x] The Magic of LRU Cache (100 Days of Google Dev): https://www.youtube.com/watch?v=R5ON3iwx78M
|
|
|
|
- - [x] Implementing LRU: https://www.youtube.com/watch?v=bq6N7Ym81iI
|
|
|
|
- - [x] LeetCode - 146 LRU Cache (C++): https://www.youtube.com/watch?v=8-FZRAjR7qU
|
|
|
|
|
|
+ - [x] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M)
|
|
|
|
+ - [x] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI)
|
|
|
|
+ - [x] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU)
|
|
- [x] CPU cache:
|
|
- [x] CPU cache:
|
|
- - [x] MIT 6.004 L15: The Memory Hierarchy: https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24
|
|
|
|
- - [x] MIT 6.004 L16: Cache Issues: https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-
|
|
|
|
|
|
+ - [x] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24)
|
|
|
|
+ - [x] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-)
|
|
|
|
|
|
- ### Processes and Threads
|
|
- ### Processes and Threads
|
|
- [x] Computer Science 162 - Operating Systems (25 videos):
|
|
- [x] Computer Science 162 - Operating Systems (25 videos):
|
|
- for precesses and threads see videos 1-11
|
|
- for precesses and threads see videos 1-11
|
|
- - https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c
|
|
|
|
- - https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread
|
|
|
|
|
|
+ - [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=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)
|
|
- Covers:
|
|
- Covers:
|
|
- Processes, Threads, Concurrency issues
|
|
- Processes, Threads, Concurrency issues
|
|
- difference between processes and threads
|
|
- difference between processes and threads
|
|
@@ -920,15 +915,15 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
- 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.
|
|
- Context switching
|
|
- Context switching
|
|
- How context switching is initiated by the operating system and underlying hardware
|
|
- How context switching is initiated by the operating system and underlying hardware
|
|
- - [x] threads in C++ (series - 10 videos): https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M
|
|
|
|
- - [x] concurrency in Python:
|
|
|
|
- - [x] Short series on threads: https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1
|
|
|
|
- - [x] Python Threads: https://www.youtube.com/watch?v=Bs7vPNbB9JM
|
|
|
|
- - [x] Understanding the Python GIL (2010): https://www.youtube.com/watch?v=Obt-vMVdM8s
|
|
|
|
- - reference: http://www.dabeaz.com/GIL
|
|
|
|
- - [x] David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015: https://www.youtube.com/watch?v=MCs5OvhV9S4
|
|
|
|
- - [x] Keynote David Beazley - Topics of Interest (Python Asyncio): https://www.youtube.com/watch?v=ZzfHjytDceU
|
|
|
|
- - [x] Mutex in Python: https://www.youtube.com/watch?v=0zaPs8OtyKY
|
|
|
|
|
|
+ - [x] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M)
|
|
|
|
+ - [x] concurrency in Python (videos):
|
|
|
|
+ - [x] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1)
|
|
|
|
+ - [x] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM)
|
|
|
|
+ - [x] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s)
|
|
|
|
+ - [reference](http://www.dabeaz.com/GIL)
|
|
|
|
+ - [x] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4)
|
|
|
|
+ - [x] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU)
|
|
|
|
+ - [x] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY)
|
|
|
|
|
|
|
|
|
|
Scalability and System Design are very large topics with many topics and resources, since there is a lot to consider
|
|
Scalability and System Design are very large topics with many topics and resources, since there is a lot to consider
|
|
@@ -948,76 +943,68 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
- simplicity and robustness
|
|
- simplicity and robustness
|
|
- tradeoffs
|
|
- tradeoffs
|
|
- performance analysis and optimization
|
|
- performance analysis and optimization
|
|
- - [x] **START HERE**: System Design from HiredInTech: http://www.hiredintech.com/system-design/
|
|
|
|
- - [x] https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023
|
|
|
|
- - [x] 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/
|
|
|
|
- - [x] Algorithm design: http://www.hiredintech.com/algorithm-design/
|
|
|
|
- - [x] Database Normalization - 1NF, 2NF, 3NF and 4NF: https://www.youtube.com/watch?v=UrYLYV7WSHM
|
|
|
|
- - [x] https://github.com/checkcheckzz/system-design-interview - There are a lot of resources in this one. Look through the articles and examples. I put some of them below.
|
|
|
|
- - [x] How to ace a systems design interview: http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/
|
|
|
|
- - [x] Numbers Everyone Should Know: http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/
|
|
|
|
- - [x] How long does it take to make a context switch?: http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html
|
|
|
|
- - [x] Transactions Across Datacenters: https://www.youtube.com/watch?v=srOgpXECblk
|
|
|
|
- - [x] A plain english introduction to CAP Theorem: http://ksat.me/a-plain-english-introduction-to-cap-theorem/
|
|
|
|
|
|
+ - [x] **START HERE**: [System Design from HiredInTech](http://www.hiredintech.com/system-design/)
|
|
|
|
+ - [x] [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)
|
|
|
|
+ - [x] [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/)
|
|
|
|
+ - [x] [Algorithm design](http://www.hiredintech.com/algorithm-design/)
|
|
|
|
+ - [x] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM)
|
|
|
|
+ - [x] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below.
|
|
|
|
+ - [x] [How to ace a systems design interview](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/)
|
|
|
|
+ - [x] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/)
|
|
|
|
+ - [x] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html)
|
|
|
|
+ - [x] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk)
|
|
|
|
+ - [x] [A plain english introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem/)
|
|
- [x] Paxos Consensus algorithm:
|
|
- [x] Paxos Consensus algorithm:
|
|
- - short video: https://www.youtube.com/watch?v=s8JqcZtvnsM
|
|
|
|
- - extended video with use case and multi-paxos: https://www.youtube.com/watch?v=JEpsBg0AO6o
|
|
|
|
- - paper: http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf
|
|
|
|
- - [x] Consistent Hashing: http://www.tom-e-white.com/2007/11/consistent-hashing.html
|
|
|
|
- - [x] NoSQL Patterns: http://horicky.blogspot.com/2009/11/nosql-patterns.html
|
|
|
|
- - [x] Optional: UML 2.0 Series: https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc
|
|
|
|
|
|
+ - [short video](https://www.youtube.com/watch?v=s8JqcZtvnsM)
|
|
|
|
+ - [extended video with use case and multi-paxos](https://www.youtube.com/watch?v=JEpsBg0AO6o)
|
|
|
|
+ - [paper])http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf)
|
|
|
|
+ - [x] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html)
|
|
|
|
+ - [x] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html)
|
|
|
|
+ - [x] [Optional: UML 2.0 Series (vido)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc)
|
|
- [x] OOSE: Software Dev Using UML and Java (21 videos):
|
|
- [x] OOSE: Software Dev Using UML and Java (21 videos):
|
|
- Can skip this if you have a great grasp of OO and OO design practices.
|
|
- Can skip this if you have a great grasp of OO and OO design practices.
|
|
- - 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)
|
|
- [x] SOLID OOP Principles:
|
|
- [x] SOLID OOP Principles:
|
|
- - [x] Bob Martin SOLID Principles of Object Oriented and Agile Design: https://www.youtube.com/watch?v=TMuno5RZNeE
|
|
|
|
- - [x] SOLID Design Patterns in C#: https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ
|
|
|
|
- - [x] SOLID Principles: https://www.youtube.com/playlist?list=PL4CE9F710017EA77A
|
|
|
|
- - [x] S - Single Responsibility Principle | Single responsibility to each Object
|
|
|
|
- - http://www.oodesign.com/single-responsibility-principle.html
|
|
|
|
- - http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html
|
|
|
|
- - more flavor: https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk
|
|
|
|
- - [x] O - Open/Closed Principal | On production level Objects are ready for extension for not for modification
|
|
|
|
- - http://www.oodesign.com/open-close-principle.html
|
|
|
|
- - https://en.wikipedia.org/wiki/Open/closed_principle
|
|
|
|
- - more flavor: http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en
|
|
|
|
- - [x] L - Liskov Substitution Principal | Base Class and Derived class follow ‘IS A’ principal
|
|
|
|
- - http://www.oodesign.com/liskov-s-substitution-principle.html
|
|
|
|
- - http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle
|
|
|
|
- - more flavor: http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en
|
|
|
|
- - [x] I - Interface segregation principle | clients should not be forced to implement interfaces they don't use
|
|
|
|
- - http://www.oodesign.com/interface-segregation-principle.html
|
|
|
|
- - Interface Segregation Principle in 5 minutes: https://www.youtube.com/watch?v=3CtAfl7aXAQ
|
|
|
|
- - more flavor: http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en
|
|
|
|
- - [x] D - Dependency Inversion principle | Reduce the dependency In composition of objects.
|
|
|
|
- - http://www.oodesign.com/dependency-inversion-principle.html
|
|
|
|
- - http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important
|
|
|
|
- - more flavor: http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en
|
|
|
|
|
|
+ - [x] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE)
|
|
|
|
+ - [x] [SOLID Design Patterns in C# (video)](https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ)
|
|
|
|
+ - [x] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A)
|
|
|
|
+ - [x] 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)
|
|
|
|
+ - [x] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension for not for modification](https://en.wikipedia.org/wiki/Open/closed_principle)
|
|
|
|
+ - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en)
|
|
|
|
+ - [x] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle)
|
|
|
|
+ - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en)
|
|
|
|
+ - [x] I - [Interface segregation principle](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use
|
|
|
|
+ - [Interface Segregation Principle in 5 minutes (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ)
|
|
|
|
+ - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en)
|
|
|
|
+ - [x] D -[Dependency Inversion principle(http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects.
|
|
|
|
+ - [Why Is The Dependency Inversion Principle And Why Is It Important](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important)
|
|
|
|
+ - [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en)
|
|
- [x] Scalability:
|
|
- [x] Scalability:
|
|
- - [x] Great overview: https://www.youtube.com/watch?v=-W9F__D3oY4
|
|
|
|
|
|
+ - [x] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4)
|
|
- [x] Short series:
|
|
- [x] Short series:
|
|
- - http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones
|
|
|
|
- - http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database
|
|
|
|
- - http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache
|
|
|
|
- - http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism
|
|
|
|
- - [x] Scalable Web Architecture and Distributed Systems: http://www.aosabook.org/en/distsys.html
|
|
|
|
- - [x] Fallacies of Distributed Computing Explained: https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf
|
|
|
|
- - [x] Pragmatic Programming Techniques: http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html
|
|
|
|
- - extra: Google Pregel Graph Processing: http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html
|
|
|
|
- - [x] Jeff Dean - Building Software Systems At Google and Lessons Learned: https://www.youtube.com/watch?v=modXC5IWTJI
|
|
|
|
- - [x] Introduction to Architecting Systems for Scale: http://lethain.com/introduction-to-architecting-systems-for-scale/
|
|
|
|
- - [x] Scaling mobile games to a global audience using App Engine and Cloud Datastore: https://www.youtube.com/watch?v=9nWyWwY2Onc
|
|
|
|
- - [x] How Google Does Planet-Scale Engineering for Planet-Scale Infra: https://www.youtube.com/watch?v=H4vMcD7zKM0
|
|
|
|
- - [x] The Importance of Algorithms: https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/
|
|
|
|
- - [x] Sharding: http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html
|
|
|
|
- - [x] Scale at Facebook (2009): https://www.infoq.com/presentations/Scale-at-Facebook
|
|
|
|
- - [x] Scale at Facebook (2012), "Building for a Billion Users": https://www.youtube.com/watch?v=oodS71YtkGU
|
|
|
|
- - [x] Engineering for the Long Game - Astrid Atkinson Keynote: https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4
|
|
|
|
- - [x] 7 Years Of YouTube Scalability Lessons In 30 Minutes: http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html
|
|
|
|
- - video: https://www.youtube.com/watch?v=G-lGCC4KKok
|
|
|
|
- - [x] How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs: http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html
|
|
|
|
- - [x] How to Remove Duplicates in Large Datasets: https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/
|
|
|
|
- - [x] A look inside Etsy's scale and engineering culture with Jon Cowie: https://www.youtube.com/watch?v=3vV4YiqKm1o
|
|
|
|
|
|
+ - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones)
|
|
|
|
+ - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database)
|
|
|
|
+ - [Cache](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache)
|
|
|
|
+ - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism)
|
|
|
|
+ - [x] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html)
|
|
|
|
+ - [x] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf)
|
|
|
|
+ - [x] [Pragmatic Programming Techniques](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html)
|
|
|
|
+ - [extra: Google Pregel Graph Processing](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html)
|
|
|
|
+ - [x] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI)
|
|
|
|
+ - [x] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/)
|
|
|
|
+ - [x] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc)
|
|
|
|
+ - [x] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0)
|
|
|
|
+ - [x] [The Importance of Algorithms](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/)
|
|
|
|
+ - [x] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html)
|
|
|
|
+ - [x] [Scale at Facebook (2009)](https://www.infoq.com/presentations/Scale-at-Facebook)
|
|
|
|
+ - [x] [Scale at Facebook (2012), "Building for a Billion Users" (video)](https://www.youtube.com/watch?v=oodS71YtkGU)
|
|
|
|
+ - [x] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4)
|
|
|
|
+ - [x] [7 Years Of YouTube Scalability Lessons In 30 Minutes](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html)
|
|
|
|
+ - [video](https://www.youtube.com/watch?v=G-lGCC4KKok)
|
|
|
|
+ - [x] [How PayPal Scaled To Billions Of Transactions Daily Using Just 8VMs](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html)
|
|
|
|
+ - [x] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/)
|
|
|
|
+ - [x] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o)
|
|
- [x] What Led Amazon to its Own Microservices Architecture: http://thenewstack.io/led-amazon-microservices-architecture/
|
|
- [x] What Led Amazon to its Own Microservices Architecture: http://thenewstack.io/led-amazon-microservices-architecture/
|
|
- [x] To Compress Or Not To Compress, That Was Uber's Question: https://eng.uber.com/trip-data-squeeze/
|
|
- [x] To Compress Or Not To Compress, That Was Uber's Question: https://eng.uber.com/trip-data-squeeze/
|
|
- [x] Asyncio Tarantool Queue, Get In The Queue: http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html
|
|
- [x] Asyncio Tarantool Queue, Get In The Queue: http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html
|