|
@@ -145,7 +145,7 @@ Si lo que quieres es ser ingeniero de escalabilidad / seguridad o ingeniero de s
|
|
|
- [Discrete math](#discrete-math)
|
|
|
- [Machine Learning](#machine-learning)
|
|
|
- [Go](#go)
|
|
|
-- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
|
|
+- [Información adicional en algunos temas](#informacion-adicional-en-algunos-temas)
|
|
|
- [Video Series](#video-series)
|
|
|
- [Computer Science Courses](#computer-science-courses)
|
|
|
|
|
@@ -891,7 +891,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
|
|
|
- [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
|
|
|
- [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14)
|
|
|
|
|
|
-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 [Información adicional en algunos temas](#informacion-adicional-en-algunos-temas)
|
|
|
|
|
|
## Graphs
|
|
|
|
|
@@ -957,44 +957,44 @@ 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
|
|
|
|
|
|
-## Even More Knowledge
|
|
|
-
|
|
|
-- ### Recursion
|
|
|
- - [ ] Stanford lectures on recursion & backtracking:
|
|
|
- - [ ] [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8)
|
|
|
- - [ ] [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9)
|
|
|
- - [ ] [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69)
|
|
|
- - [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11)
|
|
|
- - when it is appropriate to use it
|
|
|
- - how is tail recursion better than not?
|
|
|
- - [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad)
|
|
|
- - [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc)
|
|
|
-
|
|
|
-- ### Object-Oriented Programming
|
|
|
- - [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc)
|
|
|
- - [ ] Object-Oriented Software Engineering: Software Dev Using UML and Java (21 videos):
|
|
|
- - Can skip this if you have a great grasp of OO and OO design practices.
|
|
|
- - [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO)
|
|
|
- - [ ] SOLID OOP Principles:
|
|
|
- - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE)
|
|
|
- - [ ] [SOLID Design Patterns in C# (video)](https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ)
|
|
|
- - [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A)
|
|
|
- - [ ] 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)
|
|
|
- - [ ] 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)
|
|
|
- - [ ] 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)
|
|
|
- - [ ] 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)
|
|
|
- - [ ] 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)
|
|
|
-
|
|
|
-- ### Design patterns
|
|
|
- - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3)
|
|
|
- - [ ] Learn these patterns:
|
|
|
+## Aún más conocimiento
|
|
|
+
|
|
|
+- ### Recursividad
|
|
|
+ - [ ] Artículos de Stanford acerca de recursividad y backtracking:
|
|
|
+ - [ ] [Artículo 8 | Abstracciones en Programación (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8)
|
|
|
+ - [ ] [Artículo 9 | Abstracciones en Programación (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9)
|
|
|
+ - [ ] [Artículo 10 | Abstracciones en Programación (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69)
|
|
|
+ - [ ] [Artículo 11 | Abstracciones en Programación (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11)
|
|
|
+ - Cuando es apropiado usarla
|
|
|
+ - Recursividad de cola
|
|
|
+ - [ ] [Que es recursividad de cola Por qué es tan mala?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad)
|
|
|
+ - [ ] [Recursividad de cola (video)](https://www.youtube.com/watch?v=L1jjXGfxozc)
|
|
|
+
|
|
|
+- ### Programacion orientada a objetos
|
|
|
+ - [ ] [Opcional: UML 2.0 (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc)
|
|
|
+ - [ ] Ingeniería de Software orientada a objetos (OOSE): Desarrollo de Software usando UML y Java (21 videos):
|
|
|
+ - Puedes obviar esto si tienes un buen conocimiento de prácticas de diseño de POO.
|
|
|
+ - [OOSE: Desarrollo de Software usando UML y Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO)
|
|
|
+ - [ ] Principios SOLID de Desarrollo de Software:
|
|
|
+ - [ ] [Principios SOLID en diseño ágil y orientado a objetos, por Bob Martin (video)](https://www.youtube.com/watch?v=TMuno5RZNeE)
|
|
|
+ - [ ] [Patrones de diseño SOLID en C# (video)](https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ)
|
|
|
+ - [ ] [Principios SOLID (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A)
|
|
|
+ - [ ] S - [Single Responsibility Principle (Principio de responsabilidad única)](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html)
|
|
|
+ - [Para saber más](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk)
|
|
|
+ - [ ] O - [Open/Closed Principle (Principio de abierto/cerrado)](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)
|
|
|
+ - [Para saber más](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en)
|
|
|
+ - [ ] L - [Liskov Substitution Principle (Principio de sustitucion de Liskov)](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)
|
|
|
+ - [Para saber más](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en)
|
|
|
+ - [ ] I - [Interface segregation principle (Principio de segregacion de interfaces)](http://www.oodesign.com/interface-segregation-principle.html) | clients should not be forced to implement interfaces they don't use
|
|
|
+ - [Principio de segregacion de interfaces en 5 minutos (video)](https://www.youtube.com/watch?v=3CtAfl7aXAQ)
|
|
|
+ - [Para saber más](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=en)
|
|
|
+ - [ ] D -[Dependency Inversion principle ()Principio de Inversion de Dependencia](http://www.oodesign.com/dependency-inversion-principle.html) | Reduce the dependency In composition of objects.
|
|
|
+ - [Qué es el principio de inversion de dependencia y por qué es importante?](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important)
|
|
|
+ - [Para saber más](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=en)
|
|
|
+
|
|
|
+- ### Patrones de diseño
|
|
|
+ - [ ] [Breve repaso de UML (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3)
|
|
|
+ - [ ] Apréndete estos patrones:
|
|
|
- [ ] strategy
|
|
|
- [ ] singleton
|
|
|
- [ ] adapter
|
|
@@ -1012,152 +1012,152 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
|
- [ ] iterator
|
|
|
- [ ] composite
|
|
|
- [ ] flyweight
|
|
|
- - [ ] [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344)
|
|
|
- - [ ] [Chapter 6 (Part 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO)
|
|
|
- - [ ] [Chapter 6 (Part 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO)
|
|
|
- - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07)
|
|
|
- - [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124)
|
|
|
- - I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO.
|
|
|
- - [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips)
|
|
|
-
|
|
|
-- ### Combinatorics (n choose k) & Probability
|
|
|
- - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U)
|
|
|
- - [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4)
|
|
|
- - [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ)
|
|
|
+ - [ ] [Capítulo 6 (Parte 1) - Patrones (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344)
|
|
|
+ - [ ] [Capítulo 6 (Parte 2) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (video)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO)
|
|
|
+ - [ ] [Capítulo 6 (Parte 3) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO)
|
|
|
+ - [ ] [Series de videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07)
|
|
|
+ - [ ] [Patrones Head First](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124)
|
|
|
+ - Sé que "Design Patterns: Elements of Reusable Object-Oriented Software" es el libro más relevante, pero "Head First" esta muy bien para los que empiezan con POO
|
|
|
+ - [ ] [Link interesante: 101 Patrones de diseno & Trucos para desarrolladores](https://sourcemaking.com/design-patterns-and-tips)
|
|
|
+
|
|
|
+- ### Combinatoria (n en k) & Probabilidad
|
|
|
+ - [ ] [Habilidades matemáticas: Factoriales, Permutaciones y Combinaciones (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U)
|
|
|
+ - [ ] [Probabilidad (un video de Make School)](https://www.youtube.com/watch?v=sZkAAk9Wwa4)
|
|
|
+ - [ ] [More Probability and Markov Chains (un video)](https://www.youtube.com/watch?v=dNaJg-mLobQ)
|
|
|
- [ ] Khan Academy:
|
|
|
- - Course layout:
|
|
|
- - [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic)
|
|
|
- - Just the videos - 41 (each are simple and each are short):
|
|
|
- - [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19)
|
|
|
-
|
|
|
-- ### NP, NP-Complete and Approximation Algorithms
|
|
|
- - 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.
|
|
|
- - Know what NP-complete means.
|
|
|
- - [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23)
|
|
|
+ - Estructura del curso:
|
|
|
+ - [ ] [Probabilidad teórica básica](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic)
|
|
|
+ - Solo los 41 videos - (Son simples y cortos):
|
|
|
+ - [ ] [Probabilidad Explicación (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19)
|
|
|
+
|
|
|
+- ### NP, NP-Completo and Algoritmos de aproximación
|
|
|
+ - Conocer los problemas NP-Completo más famosos, como el problema del viajante o el de la mochila, y ser capaz de
|
|
|
+ reconocerlos cuando un entrevistador pregunta por ellos disimuladamente.
|
|
|
+ - Saber que es y en que consiste un problema NP-Completo.
|
|
|
+ - [ ] [Complejidad Computacional (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23)
|
|
|
- [ ] Simonson:
|
|
|
- - [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939)
|
|
|
- - [ ] [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)
|
|
|
+ - [ ] [Algoritmos voraces II & Introducción a NP-Completo (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939)
|
|
|
+ - [ ] [NP-Completo II & Reducciones (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
|
|
|
+ - [ ] [NP-Completo III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
|
|
|
+ - [ ] [NP-Completo IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18)
|
|
|
- [ ] Skiena:
|
|
|
- - [ ] [CSE373 2012 - Lecture 23 - Introduction to NP-Completeness (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)
|
|
|
- - [ ] [Complexity: P, NP, NP-completeness, Reductions (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22)
|
|
|
- - [ ] [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:
|
|
|
- - [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb)
|
|
|
- - Pages 1048 - 1140 in CLRS if you have it.
|
|
|
-
|
|
|
-- ### Caches
|
|
|
- - [ ] LRU cache:
|
|
|
- - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M)
|
|
|
- - [ ] [Implementing LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI)
|
|
|
- - [ ] [LeetCode - 146 LRU Cache (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU)
|
|
|
- - [ ] CPU cache:
|
|
|
- - [ ] [MIT 6.004 L15: The Memory Hierarchy (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24)
|
|
|
- - [ ] [MIT 6.004 L16: Cache Issues (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-)
|
|
|
-
|
|
|
-- ### Processes and Threads
|
|
|
- - [ ] Computer Science 162 - Operating Systems (25 videos):
|
|
|
- - for processes and threads see videos 1-11
|
|
|
- - [Operating Systems and System Programming (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c)
|
|
|
- - [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:
|
|
|
- - Processes, Threads, Concurrency issues
|
|
|
- - difference between processes and threads
|
|
|
- - processes
|
|
|
- - threads
|
|
|
- - locks
|
|
|
- - mutexes
|
|
|
- - semaphores
|
|
|
- - monitors
|
|
|
- - how they work
|
|
|
- - deadlock
|
|
|
- - livelock
|
|
|
- - CPU activity, interrupts, context switching
|
|
|
- - Modern concurrency constructs with multicore processors
|
|
|
- - Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o)
|
|
|
- - Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack)
|
|
|
- - Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy.
|
|
|
- - Context switching
|
|
|
- - How context switching is initiated by the operating system and underlying hardware
|
|
|
- - [ ] [threads in C++ (series - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M)
|
|
|
- - [ ] concurrency in Python (videos):
|
|
|
- - [ ] [Short series on threads](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1)
|
|
|
- - [ ] [Python Threads](https://www.youtube.com/watch?v=Bs7vPNbB9JM)
|
|
|
- - [ ] [Understanding the Python GIL (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s)
|
|
|
- - [reference](http://www.dabeaz.com/GIL)
|
|
|
- - [ ] [David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4)
|
|
|
- - [ ] [Keynote David Beazley - Topics of Interest (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU)
|
|
|
- - [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY)
|
|
|
-
|
|
|
-- ### Papers
|
|
|
- - These are Google papers and well-known papers.
|
|
|
- - Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections.
|
|
|
- - [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf)
|
|
|
- - [implemented in Go](https://godoc.org/github.com/thomas11/csp)
|
|
|
- - [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/)
|
|
|
- - [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf)
|
|
|
- - replaced by Colossus in 2012
|
|
|
- - [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf)
|
|
|
- - mostly replaced by Cloud Dataflow?
|
|
|
- - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf)
|
|
|
- - [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/)
|
|
|
- - paper not available
|
|
|
- - [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker:
|
|
|
- - [paper](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf)
|
|
|
- - [video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany)
|
|
|
- - [ ] 2013: Spanner: Google’s Globally-Distributed Database:
|
|
|
- - [paper](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf)
|
|
|
- - [video](https://www.usenix.org/node/170855)
|
|
|
- - [ ] [2014: Machine Learning: The High-Interest Credit Card of Technical Debt](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf)
|
|
|
- - [ ] [2015: Continuous Pipelines at Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf)
|
|
|
- - [ ] [2015: High-Availability at Massive Scale: Building Google’s Data Infrastructure for Ads](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf)
|
|
|
- - [ ] [2015: TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems](http://download.tensorflow.org/paper/whitepaper2015.pdf )
|
|
|
- - [ ] [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf)
|
|
|
- - [ ] [2016: Borg, Omega, and Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf)
|
|
|
+ - [ ] [CSE373 2012 - Lecture 23 - Introducción a NP-Completo (video)](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508)
|
|
|
+ - [ ] [CSE373 2012 - Lecture 24 - Demostrar problemas NP-Completo (video)](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
+ - [ ] [CSE373 2012 - Lecture 25 - Problema NP-Completo (video)](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b)
|
|
|
+ - [ ] [Complejidad: P, NP, NP-completo, Reducciones (video)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22)
|
|
|
+ - [ ] [Complejidad: Algoritmos de aproximación (video)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24)
|
|
|
+ - [ ] [Complejidad: Algoritmos de parámetro fijo (video)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
|
|
|
+ - Peter Norvik habla sobre soluciones casi óptimas para el problema del viajante:
|
|
|
+ - [Cuaderno Jupyter](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb)
|
|
|
+ - Páginas 1048 - 1140 de [CLRS](https://en.wikipedia.org/wiki/Introduction_to_Algorithms) si lo tienes a mano.
|
|
|
+
|
|
|
+- ### Memoria Caché
|
|
|
+ - [ ] Menos usado recientemente (LRU):
|
|
|
+ - [ ] [La magia de la caché LRU (100 días de desarrollador de Google) (video)](https://www.youtube.com/watch?v=R5ON3iwx78M)
|
|
|
+ - [ ] [Implementando LRU (video)](https://www.youtube.com/watch?v=bq6N7Ym81iI)
|
|
|
+ - [ ] [LeetCode - 146 Caché LRU (C++) (video)](https://www.youtube.com/watch?v=8-FZRAjR7qU)
|
|
|
+ - [ ] Caché de la CPU:
|
|
|
+ - [ ] [MIT 6.004 L15: La jerarquía de la memoria (video)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24)
|
|
|
+ - [ ] [MIT 6.004 L16: Caché - Problemas y situaciones (video)](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-)
|
|
|
+
|
|
|
+- ### Hilos y procesos
|
|
|
+ - [ ] Ciencias de la computación 162 - Sistemas operativos (25 videos):
|
|
|
+ - Para hilos y procesos ver los videos 1-11
|
|
|
+ - [Sistemas Operativos y Programación de Sistemas (video)](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c)
|
|
|
+ - [Cuál es la diferencia entre un proceso y un hilo?](https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread)
|
|
|
+ - Cubre / Abarca:
|
|
|
+ - Procesos, hilos y Concurrencia
|
|
|
+ - Diferencia entre hilos y procesos
|
|
|
+ - Procesos
|
|
|
+ - Hilos
|
|
|
+ - Bloqueos
|
|
|
+ - Mutexes (Cierre de exclusión mutua)
|
|
|
+ - Semáforos
|
|
|
+ - Monitores de concurrencia
|
|
|
+ - Como funcionan
|
|
|
+ - Deadlock (Bloqueo mutuo)
|
|
|
+ - Livelock (Bloqueo mutuo, variante de deadlock)
|
|
|
+ - Actividad de la CPU, Interrupciones, cambios de contexto
|
|
|
+ - Concurrencia moderna con procesadores multi núcleo
|
|
|
+ - Demanda de recursos de un proceso (memoria: Códigos, almacenamiento estático, stack, heap, descriptores de archivo e I/O (Entrada / Salida))
|
|
|
+ - Demanda de recursos de los hilos (Comparte los anteriores, a excepción de stack, con otros hilos en el mismo proceso, pero cada uno tiene su propio contador de programa, contador de stack, registros, y stack)
|
|
|
+ - Forking realmente es copia en escritura (read-only) hasta que el nuevo proceso escribe en memoria, entonces hace una copia completa.
|
|
|
+ - Cambio de contextos
|
|
|
+ - Como se inicia el cambio de contexto por el sistema operativo y el hardware que hay debajo
|
|
|
+ - [ ] [Hilos en C++ (Serie - 10 videos)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M)
|
|
|
+ - [ ] Concurrencia en Python (videos):
|
|
|
+ - [ ] [Series pequeñas acerca de hilos](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1)
|
|
|
+ - [ ] [Hilos en Python](https://www.youtube.com/watch?v=Bs7vPNbB9JM)
|
|
|
+ - [ ] [Entendiendo GIL en Python (2010)](https://www.youtube.com/watch?v=Obt-vMVdM8s)
|
|
|
+ - [Referencia](http://www.dabeaz.com/GIL)
|
|
|
+ - [ ] [David Beazley - Concurrencia en Python desde el principio: LIVE! - PyCon 2015](https://www.youtube.com/watch?v=MCs5OvhV9S4)
|
|
|
+ - [ ] [Keynote David Beazley - Temas interesantes (Python Asyncio)](https://www.youtube.com/watch?v=ZzfHjytDceU)
|
|
|
+ - [ ] [Mutex en Python](https://www.youtube.com/watch?v=0zaPs8OtyKY)
|
|
|
+
|
|
|
+- ### Artículos y publicaciones
|
|
|
+ - Estos provienen de Google y otros muy conocidos.
|
|
|
+ - Leerlos de principio a fin, tratando de comprenderlos complementamente, quizás te lleve más tiempo del que puedas disponer. Te recomiendo que seas selectivo con los artículos y sus secciones.
|
|
|
+ - [ ] [1978: Comunicación en procesos secuenciales](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf)
|
|
|
+ - [Implementación en GO](https://godoc.org/github.com/thomas11/csp)
|
|
|
+ - [Te gustan los artículos clásicos?](https://www.cs.cmu.edu/~crary/819-f09/)
|
|
|
+ - [ ] [2003: El sistema de archivos de Google](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf)
|
|
|
+ - Reemplazado por Colossus en 2012
|
|
|
+ - [ ] [2004: MapReduce: Procesamiento de datos simplificado en grandes clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf)
|
|
|
+ - casi reemplazado por Cloud Dataflow?
|
|
|
+ - [ ] [2007: Lo que cualquier programador debe saber acerca de la memoria (bastante extenso, el autor recomienda saltarse algunas secciones)](https://www.akkadia.org/drepper/cpumemory.pdf)
|
|
|
+ - [ ] [2012: Colossus de Google](https://www.wired.com/2012/07/google-colossus/)
|
|
|
+ - Publicaciones no disponible
|
|
|
+ - [ ] 2012: AddressSanitizer: Un sanity check muy rápido para direcciones:
|
|
|
+ - [Publicación](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf)
|
|
|
+ - [Video](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany)
|
|
|
+ - [ ] 2013: Spanner: La base de datos distribuida de Google:
|
|
|
+ - [Publicación](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf)
|
|
|
+ - [Video](https://www.usenix.org/node/170855)
|
|
|
+ - [ ] [2014: Machine Learning: El alto tipo de interés de la deuda tecnológica (The High-Interest Credit Card of Technical Debt)](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf)
|
|
|
+ - [ ] [2015: Líneas de ejecución continuas en Google](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf)
|
|
|
+ - [ ] [2015: Alta disponibilidad a gran escala: Construyendo la infraestructura de datos para los anuncios y publicidad de Google](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf)
|
|
|
+ - [ ] [2015: TensorFlow: Machine Learning a gran escala en sistemas distribuidos heterogéneos](http://download.tensorflow.org/paper/whitepaper2015.pdf )
|
|
|
+ - [ ] [2015: Como los desarrolladores buscan código: Un caso de estudio](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf)
|
|
|
+ - [ ] [2016: Borg, Omega, y Kubernetes](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf)
|
|
|
|
|
|
- ### Testing
|
|
|
- - To cover:
|
|
|
- - how unit testing works
|
|
|
- - what are mock objects
|
|
|
- - what is integration testing
|
|
|
- - what is dependency injection
|
|
|
- - [ ] [Agile Software Testing with James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U)
|
|
|
- - [ ] [Open Lecture by James Bach on Software Testing (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU)
|
|
|
- - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (video)](https://vimeo.com/83960706)
|
|
|
- - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf)
|
|
|
- - [ ] [TDD is dead. Long live testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html)
|
|
|
- - [ ] [Is TDD dead? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo)
|
|
|
- - [ ] [Video series (152 videos) - not all are needed (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g)
|
|
|
- - [ ] [Test-Driven Web Development with Python](http://www.obeythetestinggoat.com/pages/book.html#toc)
|
|
|
- - [ ] Dependency injection:
|
|
|
- - [ ] [video](https://www.youtube.com/watch?v=IKD2-MAkXyQ)
|
|
|
- - [ ] [Tao Of Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html)
|
|
|
- - [ ] [How to write tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html)
|
|
|
-
|
|
|
-- ### Scheduling
|
|
|
- - in an OS, how it works
|
|
|
- - can be gleaned from Operating System videos
|
|
|
-
|
|
|
-- ### Implement system routines
|
|
|
- - understand what lies beneath the programming APIs you use
|
|
|
- - can you implement them?
|
|
|
-
|
|
|
-- ### String searching & manipulations
|
|
|
- - [ ] [Sedgewick - Suffix Arrays (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg)
|
|
|
- - [ ] [Sedgewick - Substring Search (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5)
|
|
|
- - [ ] [1. Introduction to Substring Search](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5)
|
|
|
- - [ ] [2. Brute-Force Substring Search](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4)
|
|
|
+ - Abarcar / Cubrir:
|
|
|
+ - Como funciona el testing
|
|
|
+ - Que son mocks de objetos
|
|
|
+ - Que son tests de integracion
|
|
|
+ - Que es inyección de dependencias
|
|
|
+ - [ ] [Testing de Software Ágil con James Bach (video)](https://www.youtube.com/watch?v=SAhJf36_u5U)
|
|
|
+ - [ ] [Artículo de James Bach acerca de Testing de Software (video)](https://www.youtube.com/watch?v=ILkT_HV9DVU)
|
|
|
+ - [ ] [Steve Freeman - Desarrollo conducido por tests (Test-Driven Development, TDD) - Eso no fue lo que quisimos decir (video)](https://vimeo.com/83960706)
|
|
|
+ - [Diapositivas](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf)
|
|
|
+ - [ ] [TDD está muerto. Larga vida al testing.](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html)
|
|
|
+ - [ ] [TDD está muerto? (video)](https://www.youtube.com/watch?v=z9quxZsLcfo)
|
|
|
+ - [ ] [Series (152 videos) - No todos son necesarios (video)](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g)
|
|
|
+ - [ ] [TDD para Web con Python](http://www.obeythetestinggoat.com/pages/book.html#toc)
|
|
|
+ - [ ] Inyeccion de dependencias:
|
|
|
+ - [ ] [Video](https://www.youtube.com/watch?v=IKD2-MAkXyQ)
|
|
|
+ - [ ] [Tao del Testing](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html)
|
|
|
+ - [ ] [Como escribir tests](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html)
|
|
|
+
|
|
|
+- ### Planificador
|
|
|
+ - En el sistema operativo, como funciona
|
|
|
+ - Puede ser extraído de videos acerca de sistemas operativos
|
|
|
+
|
|
|
+- ### Implementar rutinas del sistema
|
|
|
+ - Entender que hay debajo de las APIs de programación que utilizas
|
|
|
+ - Las puedes implementar?
|
|
|
+
|
|
|
+- ### Búsqueda de strings y manipulación
|
|
|
+ - [ ] [Sedgewick - Array de sufijos (video)](https://www.youtube.com/watch?v=HKPrVm5FWvg)
|
|
|
+ - [ ] [Sedgewick - Búsqueda de substrings (videos)](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5)
|
|
|
+ - [ ] [1. Introducción a la búsqueda de substrings](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5)
|
|
|
+ - [ ] [2. Búsqueda de substrings por fuerza bruta](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4)
|
|
|
- [ ] [3. Knuth-Morris Pratt](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66)
|
|
|
- [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2)
|
|
|
- [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66)
|
|
|
- - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text)
|
|
|
+ - [ ] [Búsqueda en texto por patrón (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text)
|
|
|
|
|
|
- If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
|
|
+ Si necesitas más detalles acerca de este tema, ve a la sección "String Matching" en [Información adicional en algunos temas](#informacion-adicional-en-algunos-temas)
|
|
|
|
|
|
---
|
|
|
|
|
@@ -1881,7 +1881,7 @@ You're never really done.
|
|
|
|
|
|
--
|
|
|
|
|
|
-## Additional Detail on Some Subjects
|
|
|
+## Información adicional en algunos temas
|
|
|
|
|
|
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.
|