From aede3d6c5c37fff0dc51de16b56027c95faf557c Mon Sep 17 00:00:00 2001 From: Vahan Minasian Date: Sat, 8 Jun 2024 21:02:57 +0400 Subject: [PATCH] update ukrainian translation up to ### Combinatorics & Probability --- translations/README-uk.md | 311 ++++++++++++++++++-------------------- 1 file changed, 150 insertions(+), 161 deletions(-) diff --git a/translations/README-uk.md b/translations/README-uk.md index 612d2342b5..8d8a60406d 100644 --- a/translations/README-uk.md +++ b/translations/README-uk.md @@ -126,17 +126,17 @@ Microsoft. - купчасте сортування (heapsort) - швидке сортування (quicksort) - злиття (mergesort) -- [Графи](#Graphs) +- [Графи](#Графи) - спрямовані (directed) - неспрямовані (undirected) - матриця суміжності (adjacency matrix) - список суміжності (adjacency list) - обходи: BFS, DFS (traversals: BFS, DFS) -- [Ще більше знань](#even-more-knowledge) - - [Рекурсія](#recursion) - - [Динамічне програмування](#dynamic-programming) - - [Шаблони проектування](#design-patterns) - - [Комбінаторика (n choose k) та ймовірність](#combinatorics-n-choose-k--probability) +- [Ще більше знань](#Ще-більше-знань) + - [Рекурсія](#Рекурсія) + - [Динамічне програмування](#Динамічне-програмування) + - [Шаблони проектування](#Шаблони-проектування) + - [Комбінаторика (n choose k) та ймовірність](#комбінаторика-n-choose-k-та-ймовірність) - [NP, NP-повні та Апроксимаційні Алгоритми](#np-np-complete-and-approximation-algorithms) - [Як комп'ютери опрацьовують програму](#how-computers-process-a-program) - [Кеші](#caches) @@ -895,164 +895,153 @@ Microsoft. Як підсумок, ось візуальне представлення [15 алгоритмів сортування](https://www.youtube.com/watch?v=kPRA0W1kECg). Якщо вам потрібна більш детальна інформація на цю тему, зверніться до розділу "Сортування" у [Додаткова інформація про деякі теми](#additional-detail-on-some-subjects) -## Graphs - -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. - -- Notes: - - There are 4 basic ways to represent a graph in memory: - - objects and pointers - - adjacency matrix - - adjacency list - - adjacency map - - Familiarize yourself with each representation and its pros & cons - - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none. - -- [ ] Skiena Lectures - great intro: - - [ ] [CSE373 2012 - Lecture 11 - Graph Data Structures (video)](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11) - - [ ] [CSE373 2012 - Lecture 12 - Breadth-First Search (video)](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12) - - [ ] [CSE373 2012 - Lecture 13 - Graph Algorithms (video)](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13) - - [ ] [CSE373 2012 - Lecture 14 - Graph Algorithms (con't) (video)](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - - [ ] [CSE373 2012 - Lecture 16 - Graph Algorithms (con't 3) (video)](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b) - -- [ ] Graphs (review and more): - - - [ ] [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17) - - [ ] [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) - - [ ] [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - - [ ] [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) - - [ ] [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) - - [ ] [CS 61B 2014 (starting at 58:09) (video)](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489) - - [ ] [CS 61B 2014: Weighted graphs (video)](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19) - - [ ] [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - - [ ] [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) - - [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) - - [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) - -- Full Coursera Course: - - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) - -- I'll implement: - - [ ] DFS with adjacency list (recursive) - - [ ] DFS with adjacency list (iterative with stack) - - [ ] DFS with adjacency matrix (recursive) - - [ ] DFS with adjacency matrix (iterative with stack) - - [ ] BFS with adjacency list - - [ ] BFS with adjacency matrix - - [ ] single-source shortest path (Dijkstra) - - [ ] minimum spanning tree - - DFS-based algorithms (see Aduni videos above): - - [ ] check for cycle (needed for topological sort, since we'll check for cycle before starting) - - [ ] topological sort - - [ ] count connected components in a graph - - [ ] list strongly connected components - - [ ] check for bipartite graph - -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.coursera.org/lecture/programming-languages/tail-recursion-YZic1) - -- ### Dynamic Programming - - This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky. - - I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved. - - [ ] Videos: - - the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see - - [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718) - - [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749) - - [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406) - - [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22) - - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) - - [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - - [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) - - [ ] List of individual DP problems (each is short): - [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) - - [ ] Yale Lecture notes: - - [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) +## Графи + +Графи можна використовувати для представлення багатьох проблем у комп'ютерних науках, тому цей розділ довгий, як і розділ про дерева та сортування. + +- Примітки: + - Існує 4 основних способи представлення графів у пам'яті: + - об'єкти та вказівники (objects and pointers) + - матриця суміжності (adjacency matrix) + - список суміжності (adjacency list) + - карта суміжності (adjacency map) + - Ознайомтеся з кожним способом представлення та його перевагами і недоліками + - BFS та DFS - знайте їх обчислювальну складність, компроміси та як їх реалізувати в реальному коді + - Коли вам ставлять запитання, спочатку шукайте рішення на основі графів, а потім рухайтеся далі, якщо його немає + +- [ ] MIT (відео): + - [ ] Пошук в ширину [Breadth-First Search](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] Пошук в глибину [Depth-First Search](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) + +- [ ] Лекції Скієна - чудовий вступ: + - [ ] CSE373 2020 - Лекція 10 - Графові структури даних (відео) [CSE373 2020 - Lecture 10 - Graph Data Structures (video)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] CSE373 2020 - Лекція 11 - Обхід графів (відео) [CSE373 2020 - Lecture 11 - Graph Traversal (video)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] CSE373 2020 - Лекція 12 - Пошук у глибину (відео) [CSE373 2020 - Lecture 12 - Depth First Search (video)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] CSE373 2020 - Лекція 13 - Мінімальні остовні дерева (відео) [CSE373 2020 - Lecture 13 - Minimum Spanning Trees (video)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] CSE373 2020 - Лекція 14 - Мінімальні остовні дерева (відео) [CSE373 2020 - Lecture 14 - Minimum Spanning Trees (con't) (video)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] CSE373 2020 - Лекція 15 - Графові алгоритми (частина 2) (відео) [CSE373 2020 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) + +- [ ] Графи (огляд та інше): + + - [ ] 6.006 Задача про найкоротші шляхи з одним джерелом (відео) [6.006 Single-Source Shortest Paths Problem (video)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] 6.006 Дейкстра (відео) [6.006 Dijkstra (video)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ]6.006 Беллман-Форд (відео) [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) + - [ ] 6.006 Прискорення Дейкстра (відео) [6.006 Speeding Up Dijkstra (video)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] Адуні: Графові алгоритми I - Топологічне сортування, Мінімальне остовне дерево, Алгоритм Прима - лекція 6 (відео) [Aduni: Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prim's Algorithm - Lecture 6 (video)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] Адуні: Графові алгоритми II - DFS, BFS, алгоритм Крускала, Структура даних Об'єднаний Пошук - Лекція 7 (відео) [Aduni: Graph Algorithms II - DFS, BFS, Kruskal's Algorithm, Union Find Data Structure - Lecture 7 (video)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] Адуні: Графові алгоритми III: Найкоротший шлях - Лекція 8 (відео) [Aduni: Graph Algorithms III: Shortest Path - Lecture 8 (video)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] Адуні: Графові алгоритми IV: Вступ до геометричних алгоритмів - Лекція 9 (відео) [Aduni: Graph Alg. IV: Intro to geometric algorithms - Lecture 9 (video)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] CS 61B 2014: Зважені графи (відео) [CS 61B 2014: Weighted graphs (video)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] Жадібні алгоритми: мінімальне остовне дерево (відео) [Greedy Algorithms: Minimum Spanning Tree (video)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] Сильно зв'язані компоненти алгоритму Косараджу: алгоритм графів (відео) [Strongly Connected Components Kosaraju's Algorithm Graph Algorithm (video)](https://www.youtube.com/watch?v=RpgcYiky7uw) + - [ ] [Огляд] Алгоритми найкоротшого шляху (плейлист) за 16 хвилин (відео) [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) + - [ ] [Огляд] Мінімальні остовні дерева (плейліст) за 4 хвилини (відео) [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) + +- Повний курс на Coursera: + - [ ] Алгоритми на графах (відео) [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) + +- Я реалізую: + - [ ] DFS зі списком суміжності (рекурсивний) + - [ ] DFS зі списком суміжності (ітеративний зі стеком) + - [ ] DFS з матрицею суміжності (рекурсивний) + - [ ] DFS з матрицею суміжності (ітеративний зі стеком) + - [ ] BFS зі списком суміжності + - [ ] BFS з матрицею суміжності + - [ ] найкоротший шлях з одним джерелом (Дейкстра) + - [ ] мінімальне остовне дерево + - Алгоритми на основі DFS (див. відео Aduni вище): + - [ ] перевірка на цикл (потрібна для топологічного сортування, оскільки ми будемо перевіряти цикл перед початком) + - [ ] топологічне сортування + - [ ] підрахунок зв'язних компонентів у графі + - [ ] перелік списку сильно зв'язаних компонентів + - [ ] перевірка на дводольний граф + +## Ще більше знань + +- ### Рекурсія + - [ ] Стенфордські лекції про рекурсію та відстеження: + - [ ] Лекція 8 | Програмування абстракцій (відео) [Lecture 8 | Programming Abstractions (video)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] Лекція 9 | Програмні абстракції (відео) [Lecture 9 | Programming Abstractions (video)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] Лекція 10 | Програмування абстракцій (відео) [Lecture 10 | Programming Abstractions (video)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] Лекція 11 | Програмування абстракцій (відео) [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - Коли доцільно її використовувати? + - Чим хвостова рекурсія краща ніж ніякої? + - [ ] Що таке хвостова рекурсія і чому вона така погана? [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.coursera.org/lecture/programming-languages/tail-recursion-YZic1) + - [ ] 5 простих кроків для вирішення будь-якої рекурсивної задачі (відео) [5 Simple Steps for Solving Any Recursive Problem(video)](https://youtu.be/ngCos392W4w) + + Схема зворотного відстеження: + + - [Java](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) + - [Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) + +- ### Динамічне програмування + + - Ви, ймовірно, не побачите жодної проблеми з динамічним програмуванням на співбесіді, але варто вміти розпізнавати + задачу, яка може бути кандидатом на динамічне програмування. + - Ця тема може бути досить складною, оскільки кожна задача, що розв'язується ДП, повинна бути визначена як рекурсивне відношення, а придумати його може бути непросто. + - Я пропоную розглянути багато прикладів задач на ДП, доки ви не матимете чіткого уявлення про закономірності, що використовуються. + - [ ] Відео: + - [ ] Скієна: CSE373 2020 - Лекція 19 - Вступ до динамічного програмування (відео) [Skiena: CSE373 2020 - Lecture 19 - Introduction to Dynamic Programming (video)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] Скієна: CSE373 2020 - Лекція 20 - Редагування відстані (відео) [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (video)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] Скієна: CSE373 2020 - Лекція 20 - Редагування відстані (продовження) (відео) [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (continued) (video)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] Скієна: CSE373 2020 - Лекція 21 - Динамічне програмування (відео) [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] Скієна: CSE373 2020 - Лекція 22 - Динамічне програмування та огляд (відео) [Skiena: CSE373 2020 - Lecture 22 - Dynamic Programming and Review (video)](https://www.youtube.com/watch?v=Yh3RzqQGsyI&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=22) + - [ ] Саймонсон: Динамічне програмування 0 (починається з 59:18) (відео) [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] Саймонсон: Динамічне програмування I - Лекція 11 (відео) [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] Саймонсон: Динамічне програмування II - Лекція 12 (відео) [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12) + - [ ] Список окремих задач з ДП (кожна з них коротка): + Динамічне програмування (відео) [Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Єльський конспект лекцій: + - [ ] Динамічне програмування [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming) - [ ] Coursera: - - [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) - - [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm) - - [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm) - - [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) - - [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) - - [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment) - - [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) - -- ### 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 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 but 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: - - [ ] strategy - - [ ] singleton - - [ ] adapter - - [ ] prototype - - [ ] decorator - - [ ] visitor - - [ ] factory, abstract factory - - [ ] facade - - [ ] observer - - [ ] proxy - - [ ] delegate - - [ ] command - - [ ] state + - [ ] Проблема вторинної структури РНК (відео) [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem) + - [ ] Алгоритм динамічного програмування (відео) [A dynamic programming algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] Ілюстрація алгоритму ДП (відео) [Illustrating the DP algorithm (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) + - [ ] Час роботи алгоритму DP (відео) [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm) + - [ ] DP проти рекурсивної реалізації (відео) [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation) + - [ ] Глобальне попарне вирівнювання послідовностей (відео) [Global pairwise sequence alignment (video)](https://www.coursera.org/lecture/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) + - [ ] Локальне попарне вирівнювання послідовностей (відео) [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment) + +- ### Шаблони проектування + - [ ] [Короткий огляд UML (відео)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) + - [ ] Вивчіть ці патерни: + - [ ] синглтон (strategy) + - [ ] синглтон (singleton) + - [ ] адаптер (adapter) + - [ ] прототип (prototype) + - [ ] декоратор (decorator) + - [ ] відвідувач (visitor) + - [ ] фабрика, абстрактна фабрика (factory, abstract factory) + - [ ] фасад (facade) + - [ ] спостерігач (observer) + - [ ] проксі (proxy) + - [ ] делегат (delegate) + - [ ] команда (command) + - [ ] стан (state) - [ ] memento - - [ ] iterator - - [ ] composite + - [ ] ітератор (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) - - [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) - - -- ### 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) - - [ ] 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) + - [ ] Розділ 6 (частина 1) - Патерни (відео) [Chapter 6 (Part 1) - Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) + - [ ] Розділ 6 (частина 2) - Абстракція-випадок, Загальна Ієрархія, Гравець-Роль, Синглтон, Спостерігач, Делегування (відео) [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) + - [ ] Розділ 6 (частина 3) - Адаптер, Фасад, Незмінний, Інтерфейс тільки для читання, Проксі (відео) [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) + - [ ] Серія відео (27 відео) [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) + - Я знаю, що канонічною книгою є "Патерни проектування: Elements of Reusable Object-Oriented Software", але Head First чудово підходить для початківців в ООП. + - [ ] [Зручне посилання: 101 патерн проектування та поради для розробників](https://sourcemaking.com/design-patterns-and-tips) + - [ ] [Патерни проектування для людей](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns) + + +- ### Комбінаторика (n choose k) та ймовірність + - [ ] Математичні навички: Як знайти факторіал, перестановку та комбінацію (на вибір) (відео) [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] Make School: Ймовірність (відео) [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] Make School: більше про ймовірності та ланцюжки Маркова [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ) + - [ ] Академія Хана (Khan Academy): + - Структура курсу: + - [ ] Основи теоретичної ймовірності [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic) + - Всього відео - 41 (кожне просте і кожне коротке): + - [ ] Пояснення теорії ймовірностей (відео) [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,