Added a few more things for asymptotic notation, scalability, and system design.

This commit is contained in:
John Washam 2016-09-04 12:02:02 -07:00
parent c40405d96f
commit f6ef966773

View File

@ -198,23 +198,26 @@ Then test it out on a computer to make sure it's not buggy from syntax.
- 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
- Google engineers are smart, but many have an insecurity that they aren't smart enough. - Google engineers are smart, but many have an insecurity that they aren't smart enough.
- [x] **Algorithmic complexity / Big O / Asymptotic analysis** - [x] **Algorithmic complexity / Big-O / Asymptotic analysis**
- nothing to implement - [x] nothing to implement
- Harvard CS50 - Asymptotic Notation: https://www.youtube.com/watch?v=iOq5kSKqeR4 - [x] Harvard CS50 - Asymptotic Notation: https://www.youtube.com/watch?v=iOq5kSKqeR4
- Big O Notations (general quick tutorial) - https://www.youtube.com/watch?v=V6mKVRU1evU - [x] Big O Notations (general quick tutorial) - https://www.youtube.com/watch?v=V6mKVRU1evU
- Big O Notation (and Omega and Theta) - best mathematical explanation: - [ ] TopCoder:
- 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-2/
- [x] Big O Notation (and Omega and Theta) - best mathematical explanation:
- https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN - https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN
- 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
- A Gentle Introduction to Algorithm Complexity Analysis: http://discrete.gr/complexity/ - [x] A Gentle Introduction to Algorithm Complexity Analysis: http://discrete.gr/complexity/
- Orders of Growth: https://class.coursera.org/algorithmicthink1-004/lecture/59 - [x] Orders of Growth: https://class.coursera.org/algorithmicthink1-004/lecture/59
- Asymptotics: https://class.coursera.org/algorithmicthink1-004/lecture/61 - [x] Asymptotics: https://class.coursera.org/algorithmicthink1-004/lecture/61
- UC Berkeley Big O: https://youtu.be/VIS4YDpuP98 - [x] UC Berkeley Big O: https://youtu.be/VIS4YDpuP98
- UC Berkeley Big Omega: https://youtu.be/ca3e7UVmeUc - [x] UC Berkeley Big Omega: https://youtu.be/ca3e7UVmeUc
- Amortized Analysis: https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN - [x] Amortized Analysis: https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN
- Illustrating "Big O": https://class.coursera.org/algorithmicthink1-004/lecture/63 - [x] Illustrating "Big O": https://class.coursera.org/algorithmicthink1-004/lecture/63
- Cheat sheet: http://bigocheatsheet.com/ - [x] Cheat sheet: http://bigocheatsheet.com/
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
@ -830,12 +833,19 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- Transform one data set to another - Transform one data set to another
- Handling obscenely large amounts of data - Handling obscenely large amounts of data
- [x] Articles & Videos: - [x] Articles & Videos:
- [x] Great overview: https://www.youtube.com/watch?v=-W9F__D3oY4
- [ ] 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] Scaling mobile games to a global audience using App Engine and Cloud Datastore: https://www.youtube.com/watch?v=9nWyWwY2Onc - [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] 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] The Importance of Algorithms: https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/
- [ ] Scale at Facebook: https://www.infoq.com/presentations/Scale-at-Facebook - [ ] Sharding: http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html
- [ ] Velocity 2012: Jay Parikh, "Building for a Billion Users": https://www.youtube.com/watch?v=oodS71YtkGU - [x] Scale at Facebook (2009): https://www.infoq.com/presentations/Scale-at-Facebook
- [ ] Engineering for the Long Game - Astrid Atkinson Keynote: https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4 - [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 - [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 - 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 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
@ -895,7 +905,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- [ ] **System design** - [ ] **System design**
There are subjects here that overlap with scalability. So some of this is software design and some is systems design. There are subjects here that overlap with scalability. So some of this is software design and some is systems design.
I moved the scalabilty stuff to the Scalability section. I moved the scalability stuff to the Scalability section.
- features sets - features sets
- interfaces - interfaces
- class hierarchies - class hierarchies
@ -904,10 +914,9 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
- tradeoffs - tradeoffs
- performance analysis and optimization - performance analysis and optimization
- [x] https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023 - [x] https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023
- [ ] System Design: http://www.hiredintech.com/system-design/ - [x] System Design: http://www.hiredintech.com/system-design/
- [ ] Algorithm design: http://www.hiredintech.com/algorithm-design/ - [x] Algorithm design: http://www.hiredintech.com/algorithm-design/
- [ ] https://github.com/checkcheckzz/system-design-interview - [ ] https://github.com/checkcheckzz/system-design-interview
- [ ] http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones
- [ ] http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/ - [ ] http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/
- [ ] Lecture Videos - can skip through some if you already have a good OO background - [ ] Lecture Videos - can skip through some if you already have a good OO background
- [ ] Chapter 1 - Software and Software Engineering: https://www.youtube.com/watch?v=maE3PxV4mk0 - [ ] Chapter 1 - Software and Software Engineering: https://www.youtube.com/watch?v=maE3PxV4mk0
@ -1102,17 +1111,17 @@ If you have time:
Once you've learned your brains out, put those brains to work. Once you've learned your brains out, put those brains to work.
Take coding challenges every day, as many as you can. Take coding challenges every day, as many as you can.
- How to Find a Solution: https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/ - [ ] Great intro (copied from System Design section): Algorithm design: http://www.hiredintech.com/algorithm-design/
- How to Dissect a Topcoder Problem Statement: https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/ - [ ] How to Find a Solution: https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/
- Mathematics for Topcoders: https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/ - [ ] How to Dissect a Topcoder Problem Statement: https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/
- Dynamic Programming From Novice to Advanced: https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/ - [ ] Mathematics for Topcoders: https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/
- [ ] Dynamic Programming From Novice to Advanced: https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/
- https://courses.csail.mit.edu/iap/interview/materials.php - https://courses.csail.mit.edu/iap/interview/materials.php
- LeetCode: https://leetcode.com/ - LeetCode: https://leetcode.com/
- Project Euler: https://projecteuler.net/index.php?section=problems
- TopCoder: https://www.topcoder.com/ - TopCoder: https://www.topcoder.com/
- Project Euler (math-focused): https://projecteuler.net/index.php?section=problems
- HackerRank: https://www.hackerrank.com/ - HackerRank: https://www.hackerrank.com/
- Codility: https://codility.com/programmers/ - Codility: https://codility.com/programmers/
- InterviewCake: https://www.interviewcake.com/ - InterviewCake: https://www.interviewcake.com/