feat: collapsible sections
This commit is contained in:
		
							
								
								
									
										132
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										132
									
								
								README.md
									
									
									
									
									
								
							@@ -196,6 +196,9 @@ It's a long plan. It may take you months. If you are familiar with a lot of this
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## How to use it
 | 
					## How to use it
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>How to use it</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Everything below is an outline, and you should tackle the items in order from top to bottom.
 | 
					Everything below is an outline, and you should tackle the items in order from top to bottom.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
I'm using Github's special markdown flavor, including tasks lists to check progress.
 | 
					I'm using Github's special markdown flavor, including tasks lists to check progress.
 | 
				
			||||||
@@ -223,6 +226,8 @@ I'm using Github's special markdown flavor, including tasks lists to check progr
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown)
 | 
					[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Don't feel you aren't smart enough
 | 
					## Don't feel you aren't smart enough
 | 
				
			||||||
- Successful software engineers are smart, but many have an insecurity that they aren't smart enough.
 | 
					- Successful software engineers are smart, but many have an insecurity that they aren't smart enough.
 | 
				
			||||||
- [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)
 | 
				
			||||||
@@ -297,21 +302,25 @@ This is a shorter list than what I used. This is abbreviated to save you time.
 | 
				
			|||||||
- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/)
 | 
					- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/)
 | 
				
			||||||
    - answers in Java
 | 
					    - answers in Java
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you have tons of extra time:
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>If you have tons of extra time:</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836)
 | 
					- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836)
 | 
				
			||||||
- [ ] Elements of Programming Interviews (Java version)
 | 
					- [ ] Elements of Programming Interviews (Java version)
 | 
				
			||||||
    - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/)
 | 
					    - [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/)
 | 
				
			||||||
    - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews)
 | 
					    - [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Computer Architecture
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If short on time:
 | 
					### Computer Architecture
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038)
 | 
					- [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038)
 | 
				
			||||||
    - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief.
 | 
					    - The book was published in 2004, and is somewhat outdated, but it's a terrific resource for understanding a computer in brief.
 | 
				
			||||||
    - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like.
 | 
					    - The author invented [HLA](https://en.wikipedia.org/wiki/High_Level_Assembly), so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like.
 | 
				
			||||||
    - These chapters are worth the read to give you a nice foundation:
 | 
					    - These chapters are worth the read to give you a nice foundation:
 | 
				
			||||||
 | 
					      <details>
 | 
				
			||||||
 | 
					      <summary>......</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        - Chapter 2 - Numeric Representation
 | 
					        - Chapter 2 - Numeric Representation
 | 
				
			||||||
        - Chapter 3 - Binary Arithmetic and Bit Operations
 | 
					        - Chapter 3 - Binary Arithmetic and Bit Operations
 | 
				
			||||||
        - Chapter 4 - Floating-Point Representation
 | 
					        - Chapter 4 - Floating-Point Representation
 | 
				
			||||||
@@ -322,11 +331,15 @@ If short on time:
 | 
				
			|||||||
        - Chapter 10 - Instruction Set Architecture
 | 
					        - Chapter 10 - Instruction Set Architecture
 | 
				
			||||||
        - Chapter 11 - Memory Architecture and Organization
 | 
					        - Chapter 11 - Memory Architecture and Organization
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you have more time (I want this book):
 | 
					      </details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>If you have more time (I want this book):</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055)
 | 
					- [ ] [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055)
 | 
				
			||||||
    - For a richer, more up-to-date (2017), but longer treatment
 | 
					    - For a richer, more up-to-date (2017), but longer treatment
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Language Specific
 | 
					### Language Specific
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -339,6 +352,9 @@ If you read though one of these, you should have all the data structures and alg
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
### C++
 | 
					### C++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>C++</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome.
 | 
					I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/)
 | 
					- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/)
 | 
				
			||||||
@@ -346,8 +362,13 @@ I haven't read these two, but they are highly rated and written by Sedgewick. He
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource.
 | 
					If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Java
 | 
					### Java
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Java</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/)
 | 
					- [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/)
 | 
				
			||||||
    - videos with book content (and Sedgewick!) on coursera:
 | 
					    - videos with book content (and Sedgewick!) on coursera:
 | 
				
			||||||
        - [Algorithms I](https://www.coursera.org/learn/algorithms-part1)
 | 
					        - [Algorithms I](https://www.coursera.org/learn/algorithms-part1)
 | 
				
			||||||
@@ -360,19 +381,28 @@ OR:
 | 
				
			|||||||
    - used as optional text for CS intro course at UC Berkeley
 | 
					    - used as optional text for CS intro course at UC Berkeley
 | 
				
			||||||
    - see my book report on the Python version below. This book covers the same topics.
 | 
					    - see my book report on the Python version below. This book covers the same topics.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Python
 | 
					### Python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Python</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/)
 | 
					- [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/)
 | 
				
			||||||
    - by Goodrich, Tamassia, Goldwasser
 | 
					    - by Goodrich, Tamassia, Goldwasser
 | 
				
			||||||
    - I loved this book. It covered everything and more.
 | 
					    - I loved this book. It covered everything and more.
 | 
				
			||||||
    - Pythonic code
 | 
					    - Pythonic code
 | 
				
			||||||
    - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/
 | 
					    - my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Optional Books
 | 
					### Optional Books
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Some people recommend these, but I think it's going overboard, unless you have many years of software engineering experience and expect a much harder interview:**
 | 
					**Some people recommend these, but I think it's going overboard, unless you have many years of software engineering experience and expect a much harder interview:**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Optional Books</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena)
 | 
					- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena)
 | 
				
			||||||
    - As a review and problem recognition
 | 
					    - As a review and problem recognition
 | 
				
			||||||
    - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview.
 | 
					    - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview.
 | 
				
			||||||
@@ -407,6 +437,7 @@ OR:
 | 
				
			|||||||
    - A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results.
 | 
					    - A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results.
 | 
				
			||||||
    - Would rather spend time on coding problems from another book or online coding problems.
 | 
					    - Would rather spend time on coding problems from another book or online coding problems.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Before you Get Started
 | 
					## Before you Get Started
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -497,6 +528,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## Prerequisite Knowledge
 | 
					## Prerequisite Knowledge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Prerequisite Knowledge</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] **Learn C**
 | 
					- [ ] **Learn C**
 | 
				
			||||||
    - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying.
 | 
					    - C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying.
 | 
				
			||||||
    - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)
 | 
					    - [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)
 | 
				
			||||||
@@ -511,7 +545,13 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
 | 
				
			|||||||
    - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60)
 | 
					    - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60)
 | 
				
			||||||
    - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k)
 | 
					    - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Algorithmic complexity / Big-O / Asymptotic analysis
 | 
					## Algorithmic complexity / Big-O / Asymptotic analysis
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Algorithmic complexity / Big-O / Asymptotic analysis</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- nothing to implement
 | 
					- nothing to implement
 | 
				
			||||||
- [ ] [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4)
 | 
					- [ ] [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4)
 | 
				
			||||||
- [ ] [Big O Notations (general quick tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU)
 | 
					- [ ] [Big O Notations (general quick tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU)
 | 
				
			||||||
@@ -535,8 +575,13 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
 | 
				
			|||||||
    If some of the lectures are too mathy, you can jump down to the bottom and
 | 
					    If some of the lectures are too mathy, you can jump down to the bottom and
 | 
				
			||||||
    watch the discrete mathematics videos to get the background knowledge.
 | 
					    watch the discrete mathematics videos to get the background knowledge.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Data Structures
 | 
					## Data Structures
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Data Structures</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- ### Arrays
 | 
					- ### Arrays
 | 
				
			||||||
    - Implement an automatically resizing vector.
 | 
					    - Implement an automatically resizing vector.
 | 
				
			||||||
    - [ ] Description:
 | 
					    - [ ] Description:
 | 
				
			||||||
@@ -662,8 +707,13 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
 | 
				
			|||||||
        - get(key)
 | 
					        - get(key)
 | 
				
			||||||
        - remove(key)
 | 
					        - remove(key)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## More Knowledge
 | 
					## More Knowledge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>More Knowledge</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- ### Binary search
 | 
					- ### Binary search
 | 
				
			||||||
    - [ ] [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno)
 | 
					    - [ ] [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno)
 | 
				
			||||||
    - [ ] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search)
 | 
					    - [ ] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search)
 | 
				
			||||||
@@ -699,8 +749,13 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
 | 
				
			|||||||
    - [ ] absolute value:
 | 
					    - [ ] absolute value:
 | 
				
			||||||
        - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html)
 | 
					        - [Absolute Integer](http://bits.stephan-brumme.com/absInteger.html)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Trees
 | 
					## Trees
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Trees</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- ### Trees - Notes & Background
 | 
					- ### Trees - Notes & Background
 | 
				
			||||||
    - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees)
 | 
					    - [ ] [Series: Core Trees (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees)
 | 
				
			||||||
    - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees)
 | 
					    - [ ] [Series: Trees (video)](https://www.coursera.org/learn/data-structures/lecture/95qda/trees)
 | 
				
			||||||
@@ -780,8 +835,13 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
 | 
				
			|||||||
        - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap
 | 
					        - [ ] heap_sort() - take an unsorted array and turn it into a sorted array in-place using a max heap
 | 
				
			||||||
            - note: using a min heap instead would save operations, but double the space needed (cannot do in-place).
 | 
					            - note: using a min heap instead would save operations, but double the space needed (cannot do in-place).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Sorting
 | 
					## Sorting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Sorting</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] Notes:
 | 
					- [ ] Notes:
 | 
				
			||||||
    - 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
 | 
				
			||||||
@@ -855,8 +915,13 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
 | 
				
			|||||||
As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg).
 | 
					As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg).
 | 
				
			||||||
If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
 | 
					If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Graphs
 | 
					## Graphs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Graphs</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were.
 | 
					Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Notes:
 | 
					- Notes:
 | 
				
			||||||
@@ -917,8 +982,13 @@ Graphs can be used to represent many problems in computer science, so this secti
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
You'll get more graph practice in Skiena's book (see Books section below) and the interview books
 | 
					You'll get more graph practice in Skiena's book (see Books section below) and the interview books
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Even More Knowledge
 | 
					## Even More Knowledge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Even More Knowledge</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- ### Recursion
 | 
					- ### Recursion
 | 
				
			||||||
    - [ ] Stanford lectures on recursion & backtracking:
 | 
					    - [ ] Stanford lectures on recursion & backtracking:
 | 
				
			||||||
        - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8)
 | 
					        - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8)
 | 
				
			||||||
@@ -1204,7 +1274,13 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
 | 
				
			|||||||
        - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s)
 | 
					        - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s)
 | 
				
			||||||
        - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ)
 | 
					        - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## System Design, Scalability, Data Handling
 | 
					## System Design, Scalability, Data Handling
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>System Design, Scalability, Data Handling</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- **You can expect system design questions if you have 4+ years of experience.**
 | 
					- **You can expect system design questions if you have 4+ years of experience.**
 | 
				
			||||||
- Scalability and System Design are very large topics with many topics and resources, since
 | 
					- Scalability and System Design are very large topics with many topics and resources, since
 | 
				
			||||||
      there is a lot to consider when designing a software/hardware system that can scale.
 | 
					      there is a lot to consider when designing a software/hardware system that can scale.
 | 
				
			||||||
@@ -1330,10 +1406,15 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
 | 
				
			|||||||
        - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/)
 | 
					        - [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/)
 | 
				
			||||||
        - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/)
 | 
					        - [Design a cache system](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Final Review
 | 
					## Final Review
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Final Review</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    This section will have shorter videos that you can watch pretty quickly to review most of the important concepts.
 | 
					    This section will have shorter videos that you can watch pretty quickly to review most of the important concepts.
 | 
				
			||||||
    It's nice if you want a refresher often.
 | 
					    It's nice if you want a refresher often.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1344,10 +1425,15 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
 | 
				
			|||||||
- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1)
 | 
					- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1)
 | 
				
			||||||
- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2)
 | 
					- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Coding Question Practice
 | 
					## Coding Question Practice
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Coding Question Practice</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Now that you know all the computer science topics above, it's time to practice answering coding problems.
 | 
					Now that you know all the computer science topics above, it's time to practice answering coding problems.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Coding question practice is not about memorizing answers to programming problems.**
 | 
					**Coding question practice is not about memorizing answers to programming problems.**
 | 
				
			||||||
@@ -1386,8 +1472,13 @@ Supplemental:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
See [Book List above](#book-list)
 | 
					See [Book List above](#book-list)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Coding exercises/challenges
 | 
					## Coding exercises/challenges
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Coding Question Practice</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Once you've learned your brains out, put those brains to work.
 | 
					Once you've learned your brains out, put those brains to work.
 | 
				
			||||||
Take coding challenges every day, as many as you can.
 | 
					Take coding challenges every day, as many as you can.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1420,6 +1511,8 @@ Mock Interviews:
 | 
				
			|||||||
- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews
 | 
					- [Pramp: Mock interviews from/with peers](https://www.pramp.com/) - peer-to-peer model of practice interviews
 | 
				
			||||||
- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies.
 | 
					- [Refdash: Mock interviews and expedited interviews](https://refdash.com/) - also help candidates fast track by skipping multiple interviews with tech companies.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Once you're closer to the interview
 | 
					## Once you're closer to the interview
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] Cracking The Coding Interview Set 2 (videos):
 | 
					- [ ] Cracking The Coding Interview Set 2 (videos):
 | 
				
			||||||
@@ -1487,6 +1580,9 @@ You're never really done.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## Additional Books
 | 
					## Additional Books
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Additional Books</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] [The Unix Programming Environment](https://www.amazon.com/dp/013937681X)
 | 
					- [ ] [The Unix Programming Environment](https://www.amazon.com/dp/013937681X)
 | 
				
			||||||
    - an oldie but a goodie
 | 
					    - an oldie but a goodie
 | 
				
			||||||
- [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/)
 | 
					- [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/)
 | 
				
			||||||
@@ -1499,8 +1595,13 @@ You're never really done.
 | 
				
			|||||||
    - the canonical design patterns book
 | 
					    - the canonical design patterns book
 | 
				
			||||||
- [ ] [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/)
 | 
					- [ ] [UNIX and Linux System Administration Handbook, 5th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Additional Learning
 | 
					## Additional Learning
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Additional Learning</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
These topics will likely not come up in an interview, but I added them to help you become a well-rounded
 | 
					These topics will likely not come up in an interview, but I added them to help you become a well-rounded
 | 
				
			||||||
software engineer, and to be aware of certain technologies and algorithms, so you'll have a bigger toolbox.
 | 
					software engineer, and to be aware of certain technologies and algorithms, so you'll have a bigger toolbox.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1828,10 +1929,15 @@ software engineer, and to be aware of certain technologies and algorithms, so yo
 | 
				
			|||||||
        - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers)
 | 
					        - [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers)
 | 
				
			||||||
        - Data School: http://www.dataschool.io/
 | 
					        - Data School: http://www.dataschool.io/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
--
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Additional Detail on Some Subjects
 | 
					## Additional Detail on Some Subjects
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Additional Detail on Some Subjects</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    I added these to reinforce some ideas already presented above, but didn't want to include them
 | 
					    I added these to reinforce some ideas already presented above, but didn't want to include them
 | 
				
			||||||
    above because it's just too much. It's easy to overdo it on a subject.
 | 
					    above because it's just too much. It's easy to overdo it on a subject.
 | 
				
			||||||
    You want to get hired in this century, right?
 | 
					    You want to get hired in this century, right?
 | 
				
			||||||
@@ -1900,10 +2006,15 @@ software engineer, and to be aware of certain technologies and algorithms, so yo
 | 
				
			|||||||
        - [ ] [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
 | 
					        - [ ] [lecture begins at 35:00 (video)](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
 | 
				
			||||||
        - [ ] [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10)
 | 
					        - [ ] [lecture begins at 23:50 (video)](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Video Series
 | 
					## Video Series
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Sit back and enjoy. "Netflix and skill" :P
 | 
					Sit back and enjoy. "Netflix and skill" :P
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Video Series</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr)
 | 
					- [ ] [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [ ] [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0)
 | 
					- [ ] [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0)
 | 
				
			||||||
@@ -1964,7 +2075,18 @@ Sit back and enjoy. "Netflix and skill" :P
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
- [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd)
 | 
					- [ ] [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Computer Science Courses
 | 
					## Computer Science Courses
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<details>
 | 
				
			||||||
 | 
					<summary>Computer Science Courses</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science)
 | 
					- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science)
 | 
				
			||||||
- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses)
 | 
					- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## LICENSE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[CC-BY-SA-4.0](./LICENSE.txt)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user