|
@@ -202,9 +202,6 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
|
- 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] 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
|
|
|
- [x] Skiena:
|
|
@@ -217,6 +214,9 @@ Then test it out on a computer to make sure it's not buggy from syntax.
|
|
|
- [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] 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 2: https://www.topcoder.com/community/data-science/data-science-tutorials/computational-complexity-section-2/
|
|
|
- [x] Cheat sheet: http://bigocheatsheet.com/
|
|
|
|
|
|
|
|
@@ -828,13 +828,71 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
|
- [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] **Scalability & Data Handling:**
|
|
|
- - Distill large data sets to single values
|
|
|
- - Transform one data set to another
|
|
|
- - Handling obscenely large amounts of data
|
|
|
- - [x] Articles & Videos:
|
|
|
+
|
|
|
+ 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. Expect to spend quite a bit of time on this.
|
|
|
+
|
|
|
+- [x] **System Design, Scalability, Data Handling:**
|
|
|
+ - Considerations from Yegge:
|
|
|
+ - scalability
|
|
|
+ - Distill large data sets to single values
|
|
|
+ - Transform one data set to another
|
|
|
+ - Handling obscenely large amounts of data
|
|
|
+ - system design
|
|
|
+ - features sets
|
|
|
+ - interfaces
|
|
|
+ - class hierarchies
|
|
|
+ - designing a system under certain constraints
|
|
|
+ - simplicity and robustness
|
|
|
+ - tradeoffs
|
|
|
+ - 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] 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.
|
|
|
+ - [ ] http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/
|
|
|
+ - [ ] Software Design 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 2 (Part 1) - Basics of Object-Orientation: https://www.youtube.com/watch?v=noe17Sg5Uas
|
|
|
+ - [ ] Chapter 2 (Part 2) - Inheritance, polymorphism and review of key Java concepts: https://www.youtube.com/watch?v=NSJ0zNQ2Ilk
|
|
|
+ - [ ] Chapter 3 (Part 1) - Reuse, Frameworks, and Basic Client-Server Concepts: https://www.youtube.com/watch?v=H7kLteC0vJY
|
|
|
+ - [ ] Chapter 3 (Part 2) - Client-Server Architecture, Network Concepts, and Networking in Java: https://www.youtube.com/watch?v=0W4iYsHjhlY
|
|
|
+ - [ ] Chapter 4 (Part 1) - Simplechat and Requirements: https://www.youtube.com/watch?v=_c-lYobWpjc
|
|
|
+ - [ ] Chapter 4 (Part 2) - Developing Requirements: https://www.youtube.com/watch?v=JDbZa5q4NzM
|
|
|
+ - [ ] Chapter 5 (Part 1) - Class Diagrams: https://www.youtube.com/watch?v=_c-lYobWpjc
|
|
|
+ - [ ] Chapter 5 (Part 2) - Aggregation, OCL, Genealogy Example, Process for Developing Diagrams: https://www.youtube.com/watch?v=ozHk4LEaBJs
|
|
|
+ - [ ] Chapter 5 (Part 3) - Developing a Class Diagram for the Bank Account Management System: https://www.youtube.com/watch?v=Kg1hL-etRwE
|
|
|
+ - [ ] Chapter 6 (Part 1) - Patterns: https://www.youtube.com/watch?v=LAP2A80Ajrg
|
|
|
+ - [ ] Chapter 6 (Part 2) - General Hierarchy, Player-Role, Singleton, Observer, Delegation: https://www.youtube.com/watch?v=U8-PGsjvZc4
|
|
|
+ - [ ] Chapter 6 (Part 3) - Adapter, Facade, Read-Only Interface, Proxy: https://www.youtube.com/watch?v=7sduBHuex4c
|
|
|
+ - [ ] Chapter 7 (Part 1) - Users, Use Cases, User Interface Design: https://www.youtube.com/watch?v=zoANpUOLCn0
|
|
|
+ - [ ] Chapter 7 (Part 2) - Evaluating a UI, Implementing a UI in Java: https://www.youtube.com/watch?v=Ip18LJdy6UY
|
|
|
+ - [ ] Chapter 8 - State and Activity Diagrams: https://www.youtube.com/watch?v=5IQgKtRuyiY
|
|
|
+ - [ ] Chapter 9 (Part 1) - Software Architecture and Design: https://www.youtube.com/watch?v=FMKv8Vozf5c
|
|
|
+ - [ ] Chapter 9 (Part 2) - Design Principles, Software Architecture: https://www.youtube.com/watch?v=XQnytAeZrWE
|
|
|
+ - [ ] Chapter 9 (Part 3) - Pipe-and-Filter Architecture and Design Documents: https://www.youtube.com/watch?v=ZmsUizg6gPY
|
|
|
+ - [ ] Chapter 10 and 11 - Testing process, Inspection, Process Models, Cost Estimation, Team Building: https://www.youtube.com/watch?v=L8x3OuZcEsc
|
|
|
+ - [ ] SOLID OOP Principles:
|
|
|
+ - [ ] 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
|
|
|
+ - [ ] O– Open/Closed Principal | On production level Objects are ready for extension for not for modification
|
|
|
+ - https://en.wikipedia.org/wiki/Open/closed_principle
|
|
|
+ - http://www.oodesign.com/open-close-principle.html
|
|
|
+ - [ ] L– Liskov Substitution Principal | Base Class and Derived class follow ‘IS A’ principal
|
|
|
+ - http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle
|
|
|
+ - http://www.oodesign.com/liskov-s-substitution-principle.html
|
|
|
+ - [ ] I – Interface segregation principle | If an implementation don’t require then don’t implement it.
|
|
|
+ - http://efectivejava.blogspot.in/2013/09/interface-segregation-principleisp-java.html
|
|
|
+ - [ ] D-Dependency Inversion principle | Reduce the dependency In composition of objects.
|
|
|
+ - http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important
|
|
|
+ - [x] Scalability:
|
|
|
- [x] Great overview: https://www.youtube.com/watch?v=-W9F__D3oY4
|
|
|
- - [ ] 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
|
|
@@ -842,7 +900,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
|
- [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/
|
|
|
- - [ ] Sharding: http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html
|
|
|
+ - [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
|
|
@@ -870,6 +928,17 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
|
- [x] A 360 Degree View Of The Entire Netflix Stack: http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html
|
|
|
- [x] Latency Is Everywhere And It Costs You Sales - How To Crush It: http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it
|
|
|
- [x] Serverless (very long, just need the gist): http://martinfowler.com/articles/serverless.html
|
|
|
+ - [x] What Powers Instagram: Hundreds of Instances, Dozens of Technologies: http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances
|
|
|
+ - [x] Cinchcast Architecture - Producing 1,500 Hours Of Audio Every Day: http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html
|
|
|
+ - [x] Justin.Tv's Live Video Broadcasting Architecture: http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html
|
|
|
+ - [x] Playfish's Social Gaming Architecture - 50 Million Monthly Users And Growing: http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html
|
|
|
+ - [x] TripAdvisor Architecture - 40M Visitors, 200M Dynamic Page Views, 30TB Data: http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html
|
|
|
+ - [x] PlentyOfFish Architecture: http://highscalability.com/plentyoffish-architecture
|
|
|
+ - [x] Salesforce Architecture - How They Handle 1.3 Billion Transactions A Day: http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html
|
|
|
+ - [x] ESPN's Architecture At Scale - Operating At 100,000 Duh Nuh Nuhs Per Second: http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html
|
|
|
+ - [x] Twitter
|
|
|
+ - O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter": https://www.youtube.com/watch?v=5cKTP36HVgI
|
|
|
+ - Timelines at Scale: https://www.infoq.com/presentations/Twitter-Timeline-Scalability
|
|
|
|
|
|
- [ ] **About Google**:
|
|
|
- [ ] How Search Works:
|
|
@@ -903,59 +972,6 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
|
- [x] The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets: http://www.joelonsoftware.com/articles/Unicode.html
|
|
|
- [x] What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text: http://kunststube.net/encoding/
|
|
|
|
|
|
-- [ ] **System design**
|
|
|
- There are subjects here that overlap with scalability. So some of this is software design and some is systems design.
|
|
|
- I moved the scalability stuff to the Scalability section.
|
|
|
- - features sets
|
|
|
- - interfaces
|
|
|
- - class hierarchies
|
|
|
- - designing a system under certain constraints
|
|
|
- - simplicity and robustness
|
|
|
- - tradeoffs
|
|
|
- - 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] System Design: http://www.hiredintech.com/system-design/
|
|
|
- - [x] Algorithm design: http://www.hiredintech.com/algorithm-design/
|
|
|
- - [ ] Database normalization: http://www.studytonight.com/dbms/database-normalization
|
|
|
- - [ ] https://github.com/checkcheckzz/system-design-interview
|
|
|
- - [ ] 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
|
|
|
- - [ ] Chapter 1 - Software and Software Engineering: https://www.youtube.com/watch?v=maE3PxV4mk0
|
|
|
- - [ ] Chapter 2 (Part 1) - Basics of Object-Orientation: https://www.youtube.com/watch?v=noe17Sg5Uas
|
|
|
- - [ ] Chapter 2 (Part 2) - Inheritance, polymorphism and review of key Java concepts: https://www.youtube.com/watch?v=NSJ0zNQ2Ilk
|
|
|
- - [ ] Chapter 3 (Part 1) - Reuse, Frameworks, and Basic Client-Server Concepts: https://www.youtube.com/watch?v=H7kLteC0vJY
|
|
|
- - [ ] Chapter 3 (Part 2) - Client-Server Architecture, Network Concepts, and Networking in Java: https://www.youtube.com/watch?v=0W4iYsHjhlY
|
|
|
- - [ ] Chapter 4 (Part 1) - Simplechat and Requirements: https://www.youtube.com/watch?v=_c-lYobWpjc
|
|
|
- - [ ] Chapter 4 (Part 2) - Developing Requirements: https://www.youtube.com/watch?v=JDbZa5q4NzM
|
|
|
- - [ ] Chapter 5 (Part 1) - Class Diagrams: https://www.youtube.com/watch?v=_c-lYobWpjc
|
|
|
- - [ ] Chapter 5 (Part 2) - Aggregation, OCL, Genealogy Example, Process for Developing Diagrams: https://www.youtube.com/watch?v=ozHk4LEaBJs
|
|
|
- - [ ] Chapter 5 (Part 3) - Developing a Class Diagram for the Bank Account Management System: https://www.youtube.com/watch?v=Kg1hL-etRwE
|
|
|
- - [ ] Chapter 6 (Part 1) - Patterns: https://www.youtube.com/watch?v=LAP2A80Ajrg
|
|
|
- - [ ] Chapter 6 (Part 2) - General Hierarchy, Player-Role, Singleton, Observer, Delegation: https://www.youtube.com/watch?v=U8-PGsjvZc4
|
|
|
- - [ ] Chapter 6 (Part 3) - Adapter, Facade, Read-Only Interface, Proxy: https://www.youtube.com/watch?v=7sduBHuex4c
|
|
|
- - [ ] Chapter 7 (Part 1) - Users, Use Cases, User Interface Design: https://www.youtube.com/watch?v=zoANpUOLCn0
|
|
|
- - [ ] Chapter 7 (Part 2) - Evaluating a UI, Implementing a UI in Java: https://www.youtube.com/watch?v=Ip18LJdy6UY
|
|
|
- - [ ] Chapter 8 - State and Activity Diagrams: https://www.youtube.com/watch?v=5IQgKtRuyiY
|
|
|
- - [ ] Chapter 9 (Part 1) - Software Architecture and Design: https://www.youtube.com/watch?v=FMKv8Vozf5c
|
|
|
- - [ ] Chapter 9 (Part 2) - Design Principles, Software Architecture: https://www.youtube.com/watch?v=XQnytAeZrWE
|
|
|
- - [ ] Chapter 9 (Part 3) - Pipe-and-Filter Architecture and Design Documents: https://www.youtube.com/watch?v=ZmsUizg6gPY
|
|
|
- - [ ] Chapter 10 and 11 - Testing process, Inspection, Process Models, Cost Estimation, Team Building: https://www.youtube.com/watch?v=L8x3OuZcEsc
|
|
|
- - [ ] SOLID OOP Principles:
|
|
|
- - [ ] 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
|
|
|
- - [ ] O– Open/Closed Principal | On production level Objects are ready for extension for not for modification
|
|
|
- - https://en.wikipedia.org/wiki/Open/closed_principle
|
|
|
- - http://www.oodesign.com/open-close-principle.html
|
|
|
- - [ ] L– Liskov Substitution Principal | Base Class and Derived class follow ‘IS A’ principal
|
|
|
- - http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle
|
|
|
- - http://www.oodesign.com/liskov-s-substitution-principle.html
|
|
|
- - [ ] I – Interface segregation principle | If an implementation don’t require then don’t implement it.
|
|
|
- - http://efectivejava.blogspot.in/2013/09/interface-segregation-principleisp-java.html
|
|
|
- - [ ] D-Dependency Inversion principle | Reduce the dependency In composition of objects.
|
|
|
- - http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important
|
|
|
-
|
|
|
-
|
|
|
- [ ] **Familiarize yourself with a unix-based code editor: emacs & vi(m)**
|
|
|
- suggested by Yegge, from an old Amazon recruiting post
|
|
|
- vi(m):
|
|
@@ -1322,7 +1338,6 @@ Some of mine (I already may know answer to but want their opinion or team perspe
|
|
|
- [x] Coursera (Scala): https://www.coursera.org/learn/parprog1/home/week/1
|
|
|
- [x] Efficient Python for High Performance Parallel Computing: https://www.youtube.com/watch?v=uY85GkaYzBk
|
|
|
|
|
|
-
|
|
|
- [ ] Discrete math (see videos below)
|
|
|
|
|
|
- [ ] Go:
|