From bf0d731815bbdfeee6e370de9f7643afcd423a31 Mon Sep 17 00:00:00 2001 From: Marco Marrelli <76500649+volpoh@users.noreply.github.com> Date: Tue, 17 May 2022 12:34:01 +0200 Subject: [PATCH] Updated README-it.md [Reached Line 1000] + Changed: Lecture(s) --> Lezione(i) (video) -> (Video in Inglese) videos -> video --- translations/README-it.md | 740 +++++++++++++++++++------------------- 1 file changed, 370 insertions(+), 370 deletions(-) diff --git a/translations/README-it.md b/translations/README-it.md index cdab082..0e37faf 100644 --- a/translations/README-it.md +++ b/translations/README-it.md @@ -157,38 +157,38 @@ software development/ruoli dell'engineering. - heapsort - quicksort - merge sort -- [Grafi (Graphs)](#graphs) +- [Grafi (Graphs)](#grafi-graphs) - directed (Orientati) - undirected (Non Orientati) - adjacency matrix (Matrice delle Adiacenze) - adjacency list (Lista delle Adiacenze) - trasversali: BFS (ricerca in ampiezza), DFS (ricerca in profondita) -- [Ancora Più Teoria](#even-more-knowledge) - - [Ricorsione (Recursion)](#recursion) - - [Programmazione Dinamica](#dynamic-programming) - - [Schemi Progettuali (Design Patterns)](#design-patterns) - - [Calcolo Combinatorio (n sopra k) & Probabilità](#combinatorics-n-choose-k--probability) - - [NP, NP-Completo e Algoritmi di Approssimazione](#np-np-complete-and-approximation-algorithms) - - [Come i Computer Processano un Programma](#how-computers-process-a-program) +- [Ancora Più Teoria](#ancora-piu-teoria) + - [Ricorsione](#ricorsione) + - [Programmazione Dinamica](#programmazione-dinamica) + - [Schemi Progettuali (Design Patterns)](#schemi-progettuali) + - [Calcolo Combinatorio (n sopra k) & Probabilità](#calcolo-combinatorio-n-sopra-k--probabilita) + - [NP, NP-Completo e Algoritmi di Approssimazione](#np-np-completo-e-algoritmi-di-approssimazione) + - [Come i Computer Processano un Programma](#come-i-computer-processano-un-programma) - [Caches](#caches) - - [Processi e Threads](#processes-and-threads) + - [Processi e Threads](#processi-e-threads) - [Testing](#testing) - - [Ricerca Tramite Pattern-Matching e Manipolazione delle Stringhe](#string-searching--manipulations) + - [Ricerca Tramite Pattern-Matching e Manipolazione delle Stringhe](#ricerca-tramite-pattern-matching-e-manipolazione-delle-stringhe) - [Tries](#tries) - - [Numeri con Decimali](#floating-point-numbers) + - [Numeri con Decimali (Floats)](#numeri-con-decimali-floats) - [Unicode](#unicode) - - [Ordine dei Byte (Endianness)](#endianness) + - [Ordine dei Byte (Endianness)](#ordine-dei-byte-endianness) - [Networking](#networking) -- [Revisione Finale](#final-review) +- [Revisione Finale](#revisione-finale) ### Ottenere il Lavoro -- [Aggiorna il tuo Curriculum Vitae](#update-your-resume) -- [Trova un Lavoro](#find-a-job) -- [Colloquio & Preparazione Generale](#interview-process--general-interview-prep) -- [Ragiona Riguardo la Data del Colloquio](#be-thinking-of-for-when-the-interview-comes) -- [Preparati Domande per l'Esaminatore](#have-questions-for-the-interviewer) -- [Una Volta Ottenuto il Lavoro](#once-youve-got-the-job) +- [Aggiorna il tuo Curriculum Vitae](#aggiorna-il-tuo-curriculum-vitae) +- [Trova un Lavoro](#trova-un-lavoro) +- [Colloquio & Preparazione Generale](#colloquio--preparazione-generale) +- [Ragiona Riguardo la Data del Colloquio](#ragiona-riguardo-la-data-del-colloquio) +- [Preparati Domande per l'Esaminatore](#preparati-domande-per-l-esaminatore) +- [Una Volta Ottenuto il Lavoro](#una-volta-ottenuto-il-lavoro) **---------------- Qua Sotto Sono Riportato Argomenti Facoltativi ----------------** @@ -200,8 +200,8 @@ software development/ruoli dell'engineering. - [Compilatori](#compilers) - [Emacs e vi(m)](#emacs-and-vim) - [Tools per Linea di Comando Unix](#unix-command-line-tools) - - [Teoria delle Informazioni](#information-theory-videos) - - [Parità & Codice di Hamming](#parity--hamming-code-videos) + - [Teoria delle Informazioni](#information-theory-video) + - [Parità & Codice di Hamming](#parity--hamming-code-video) - [Entropia](#entropy) - [Crittografia](#cryptography) - [Compressione](#compression) @@ -230,8 +230,8 @@ software development/ruoli dell'engineering. - [Disgiunzione & Union Find (MFSET)](#disjoint-sets--union-find) - [Matematica per la Processazione Veloce (Fast Processing)](#math-for-fast-processing) - [Treap](#treap) - - [Programmazione Lineare](#linear-programming-videos) - - [Geometria, Inviluppo Convesso](#geometry-convex-hull-videos) + - [Programmazione Lineare](#linear-programming-video) + - [Geometria, Inviluppo Convesso](#geometry-convex-hull-video) - [Matematica Discreta](#discrete-math) - [Machine Learning](#machine-learning) - [Dettagli Aggiuntivi per Alcuni Temi Trattati](#additional-detail-on-some-subjects) @@ -614,9 +614,9 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - ### Arrays - [ ] Riguardo gli Arrays: - - [Arrays (Video in Inglese)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF) + - [Arrays (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/arrays-OsBSF) - [UC Berkeley CS61B - Arrays Lineari e Multi-Dimensionali (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Comincia il video da 15m 32s) - - [Arrays Dinamici (Video in Inglese)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV) + - [Arrays Dinamici (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/dynamic-arrays-EwbnV) - [Matrici Irregolari o Jagged Arrays (Video in Inglese)](https://www.youtube.com/watch?v=1jtrQqYpt7g) - [ ] Implementare un vettore (array mutabile con grandezza automatica): - [ ] Programma usando arrays, puntatori e l'aritmetica dei puntatori per raggiungere un index, piuttosto che usare l'indexing. @@ -646,14 +646,14 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - ### Linked Lists - [ ] Descrizione: - - [ ] [Liste Linkate Singolarmente (Video in Inglese)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK) + - [ ] [Liste Linkate Singolarmente (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/singly-linked-lists-kHhgK) - [ ] [CS 61B - Linked Lists 1 (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0) - [ ] [CS 61B - Linked Lists 2 (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w) - [ ] [C Code (Video in Inglese)](https://www.youtube.com/watch?v=QN6FPiD0Gzo) - non il video intero, ma solo nozioni sulla struttura del nodo e l'allocazione della memoria - [ ] Linked List vs Arrays: - - [Core Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) - - [Nel Mondo Reale, Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) + - [Core Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/Lezione/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9) + - [Nel Mondo Reale, Linked Lists Vs Arrays (Video in Inglese)](https://www.coursera.org/Lezione/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd) - [ ] [Perché dovresti evitare le Linked Lists (Video in Inglese)](https://www.youtube.com/watch?v=YQs6IC-vgmo) - [ ] Ti aiuto un po': hai bisogno della conoscenza riguardo puntatori di puntatori: (per quando passi un puntatore ad una funzione che potrebbe cambiare l'indirizzo a cui il puntatore punta) @@ -676,15 +676,15 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] reverse() - reversa la lista - [ ] remove_value(value) - rimuove il primo elemento nella lista avente il valore dato - [ ] Liste Linkate Doppiamente - - [Descrizione (Video in Inglese)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD) + - [Descrizione (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/doubly-linked-lists-jpGKD) - Non c'è bisogno di implementarle - ### Stack - - [ ] [Stacks (Video in Inglese)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ) + - [ ] [Stacks (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/stacks-UdKzQ) - [ ] Non saranno implementati. Esercitarsi con l'array è quasi banale. - ### Queue - - [ ] [Queue (Video in Inglese)](https://www.coursera.org/lecture/data-structures/queues-EShpq) + - [ ] [Queue (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/queues-EShpq) - [ ] [Buffer Circolare/FIFO](https://en.wikipedia.org/wiki/Circular_buffer) - [ ] Implementazione usando le linked list, con puntatore alla coda: - enqueue(value) - aggiunge un valore alla posizione della coda @@ -713,12 +713,12 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] [(Avanzato) L'hashing perfetto (Video in Inglese)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4) - [ ] Corsi Online: - - [ ] [Core Hash Tables (Video in Inglese)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP) + - [ ] [Core Hash Tables (Video in Inglese)](https://www.coursera.org/Lezione/data-structures-optimizing-performance/core-hash-tables-m7UuP) - [ ] [Strutture Dati (Video in Inglese)](https://www.coursera.org/learn/data-structures/home/week/4) - - [ ] [Problemi con gli Elenchi Telefonici (Video in Inglese)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP) + - [ ] [Problemi con gli Elenchi Telefonici (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/phone-book-problem-NYZZP) - [ ] hash tables distribuite: - - [Uploads Istantanei e Ottimizzazione dello Storage Su Dropbox (Video in Inglese)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) - - [Hash Tables Distribuite (Video in Inglese)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H) + - [Uploads Istantanei e Ottimizzazione dello Storage Su Dropbox (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb) + - [Hash Tables Distribuite (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/distributed-hash-tables-tvH8H) - [ ] Implementazione con gli array usando il sondaggio (probing) lineare - hash(k, m) - m è la grandezza dell'hash table @@ -753,11 +753,11 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - [ ] [Trucchi su i Bit (Video in Inglese)](https://www.youtube.com/watch?v=ZusiKXcz_ac) - [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/) - [ ] 2s and 1s complement - - [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](https://www.youtube.com/watch?v=lKTsv6iVxV4) + - [Binary: Plusses & Minuses (Why We Use Two's Complement) (Video in Inglese)](https://www.youtube.com/watch?v=lKTsv6iVxV4) - [1s Complement](https://en.wikipedia.org/wiki/Ones%27_complement) - [2s Complement](https://en.wikipedia.org/wiki/Two%27s_complement) - [ ] Count set bits - - [4 ways to count bits in a byte (video)](https://youtu.be/Hzuzo9NJrlc) + - [4 ways to count bits in a byte (Video in Inglese)](https://youtu.be/Hzuzo9NJrlc) - [Count Bits](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan) - [How To Count The Number Of Set Bits In a 32 Bit Integer](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer) - [ ] Swap values: @@ -768,7 +768,7 @@ per testare la tua capacità nell'identificare la complessità del runtime di di ## Alberi (Trees) - ### Alberi - Appunti & Background - - [ ] [Playlist: Alberi (Video in Inglese)](https://www.coursera.org/lecture/data-structures/trees-95qda) + - [ ] [Playlist: Alberi (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/trees-95qda) - costruzione basica di un albero - traversale - algoritmi per la manipolazione @@ -790,7 +790,7 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - ### Alberi Binari di Ricerca: BSTs - [ ] [Review Alberi Binari di Ricerca (Video in Inglese)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction) + - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/E7cXP/introduction) - [ ] [MIT (Video in Inglese)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare) - C/C++: - [ ] [Alberi Binari di Ricerca - Implementazione in C/C++ (Video in Inglese)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28) @@ -819,16 +819,16 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - ### Heap / Coda di Priorita' / Heap Binario - visualizzato come un albero, ma è lineare nell'allocazione (array o linked list) - [ ] [Heap (Articolo in Inglese)](https://en.wikipedia.org/wiki/Heap_(data_structure)) - - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs) - - [ ] [Implementazione Ingenua (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations) - - [ ] [Alberi Binari (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees) + - [ ] [Introduzione (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/introduction-2OpTs) + - [ ] [Implementazione Ingenua (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/z3l9N/naive-implementations) + - [ ] [Alberi Binari (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/GRV2q/binary-trees) - [ ] [Osservazione sull'Altezza Degli Alberi (Video in Inglese)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark) - - [ ] [Operazioni Basiche (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations) - - [ ] [Alberi Binari Completi (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees) - - [ ] [Pseudocodice (Video in Inglese)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode) + - [ ] [Operazioni Basiche (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/0g1dl/basic-operations) + - [ ] [Alberi Binari Completi (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/gl5Ni/complete-binary-trees) + - [ ] [Pseudocodice (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/HxQo9/pseudocode) - [ ] [Ordinamento Heap - consigli per iniziare (Video in Inglese)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291) - - [ ] [Ordinamento Heap (Video in Inglese)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) - - [ ] [Costruire un heap (Video in Inglese)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS) + - [ ] [Ordinamento Heap (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/heap-sort-hSzMO) + - [ ] [Costruire un heap (Video in Inglese)](https://www.coursera.org/Lezione/data-structures/building-a-heap-dwrOS) - [ ] [MIT: Heaps e Ordinamento Heap (Video in Inglese)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - [ ] [CS 61B Lezione 24: Code di Priorità (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE) - [ ] [Costruire un Heap (max-heap) (Video in Inglese)](https://www.youtube.com/watch?v=MiyLo8adrWw) @@ -861,17 +861,17 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - Per l'heapsort, leggi la struttura degli Heap sopra. Heap sort non è stabile, ma funziona bene - [ ] [Sedgewick - Mergesort (5 video, in Inglese)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq) - - [ ] [2. Mergesort Dal Basso](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort) - - [ ] [3. Complessità dell'Ordinamento](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF) - - [ ] [4. Comparatori](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS) - - [ ] [5. Stabilità](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability) + - [ ] [1. Mergesort](https://www.coursera.org/Lezione/algorithms-part1/mergesort-ARWDq) + - [ ] [2. Mergesort Dal Basso](https://www.coursera.org/learn/algorithms-part1/Lezione/PWNEl/bottom-up-mergesort) + - [ ] [3. Complessità dell'Ordinamento](https://www.coursera.org/Lezione/algorithms-part1/sorting-complexity-xAltF) + - [ ] [4. Comparatori](https://www.coursera.org/Lezione/algorithms-part1/comparators-9FYhS) + - [ ] [5. Stabilità](https://www.coursera.org/learn/algorithms-part1/Lezione/pvvLZ/stability) - [ ] [Sedgewick - Quicksort (4 video)](https://www.coursera.org/learn/algorithms-part1/home/week/3) - - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort) - - [ ] [2. Selezione](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT) - - [ ] [3. Chiavi Duplicate](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd) - - [ ] [4. Metodi di Ordinamento del Sistema](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7) + - [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/Lezione/vjvnC/quicksort) + - [ ] [2. Selezione](https://www.coursera.org/Lezione/algorithms-part1/selection-UQxFT) + - [ ] [3. Chiavi Duplicate](https://www.coursera.org/Lezione/algorithms-part1/duplicate-keys-XvjPd) + - [ ] [4. Metodi di Ordinamento del Sistema](https://www.coursera.org/Lezione/algorithms-part1/system-sorts-QBNZ7) - [ ] UC Berkeley: - [ ] [CS 61B Lezione 29: Sorting I (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) @@ -903,125 +903,125 @@ per testare la tua capacità nell'identificare la complessità del runtime di di - Per l'heapsort, guarda l'Heap riportato sopra - [ ] Not required, but I recommended them: - - [ ] [Sedgewick - Radix Sorts (6 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/3) - - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/lecture/vGHvb/strings-in-java) - - [ ] [2. Key Indexed Counting](https://www.coursera.org/lecture/algorithms-part2/key-indexed-counting-2pi1Z) - - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/c1U7L/lsd-radix-sort) - - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/lecture/gFxwG/msd-radix-sort) - - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/lecture/algorithms-part2/3-way-radix-quicksort-crkd5) - - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) + - [ ] [Sedgewick - Radix Sorts (6 video)](https://www.coursera.org/learn/algorithms-part2/home/week/3) + - [ ] [1. Strings in Java](https://www.coursera.org/learn/algorithms-part2/Lezione/vGHvb/strings-in-java) + - [ ] [2. Key Indexed Counting](https://www.coursera.org/Lezione/algorithms-part2/key-indexed-counting-2pi1Z) + - [ ] [3. Least Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/Lezione/c1U7L/lsd-radix-sort) + - [ ] [4. Most Significant Digit First String Radix Sort](https://www.coursera.org/learn/algorithms-part2/Lezione/gFxwG/msd-radix-sort) + - [ ] [5. 3 Way Radix Quicksort](https://www.coursera.org/Lezione/algorithms-part2/3-way-radix-quicksort-crkd5) + - [ ] [6. Suffix Arrays](https://www.coursera.org/learn/algorithms-part2/Lezione/TH18W/suffix-arrays) - [ ] [Radix Sort](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort) - - [ ] [Radix Sort (video)](https://www.youtube.com/watch?v=xhr26ia4k38) - - [ ] [Radix Sort, Counting Sort (linear time given constraints) (video)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [ ] [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) + - [ ] [Radix Sort (Video in Inglese)](https://www.youtube.com/watch?v=xhr26ia4k38) + - [ ] [Radix Sort, Counting Sort (linear time given constraints) (Video in Inglese)](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (Video in Inglese)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Sorting in Linear Time (Video in Inglese)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14) As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg). If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) -## Graphs +## Grafi (Graphs) -Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were. +I grafi possono essere usati per rappresentare molti problemi in informatica, perciò questo paragrafo sarà lungo, come quello degli alberi e dell'ordinamento. -- 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 trade offs, and how to implement them in real code - - When asked a question, look for a graph-based solution first, then move on if none +- Appunti: + - Esistono 4 modi basici per rappresentare un grafo in una memoria: + - oggetti e puntatori + - matrice delle adiacenze + - lista delle adiacenze + - mappa delle adiacenze + - Mettiti alla prova con ogni rappresentazione e imparane i pro e i contro + - BFS e DFS - impara la loro complessità computazionale, i loro trade-offs e come implementarli tramite codice + - Quando ti viene posto un problema, pensa subito ad una soluzione con i grafi, altrimenti trova un'altra strada -- [ ] MIT(videos): - - [ ] [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) +- [ ] MIT (Video in Inglese): + - [ ] [Ricerca in Ampiezza (Video in Inglese)](https://www.youtube.com/watch?v=oFVYVzlvk9c&t=14s&ab_channel=MITOpenCourseWare) + - [ ] [Ricerca in Profondità (Video in Inglese)](https://www.youtube.com/watch?v=IBfWDYSffUU&t=32s&ab_channel=MITOpenCourseWare) -- [ ] Skiena Lectures - great intro: - - [ ] [CSE373 2020 - Lecture 10 - Graph Data Structures (video)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) - - [ ] [CSE373 2020 - Lecture 11 - Graph Traversal (video)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) - - [ ] [CSE373 2020 - Lecture 12 - Depth First Search (video)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) - - [ ] [CSE373 2020 - Lecture 13 - Minimum Spanning Trees (video)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) - - [ ] [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 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) +- [ ] Lezioni di Skiena - Ottima introduzione: + - [ ] [CSE373 2020 - Lezione 10 - Grafi (Video in Inglese)](https://www.youtube.com/watch?v=Sjk0xqWWPCc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=10) + - [ ] [CSE373 2020 - Lezione 11 - Grafi Trasversali (Video in Inglese)](https://www.youtube.com/watch?v=ZTwjXj81NVY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=11) + - [ ] [CSE373 2020 - Lezione 12 - Ricerca in Profondità (Video in Inglese)](https://www.youtube.com/watch?v=KyordYB3BOs&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=12) + - [ ] [CSE373 2020 - Lezione 13 - Alberi Ricoprenti Minimi (Video in Inglese)](https://www.youtube.com/watch?v=oolm2VnJUKw&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=13) + - [ ] [CSE373 2020 - Lezione 14 - Alberi Ricoprenti Minimi (parte 2) (Video in Inglese)](https://www.youtube.com/watch?v=RktgPx0MarY&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=14) + - [ ] [CSE373 2020 - Lezione 15 - Algoritmi per i Grafi (parte 3) (Video in Inglese)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15) -- [ ] Graphs (review and more): +- [ ] Grafi (revisione e altro): - - [ ] [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=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) - - [ ] [6.006 Bellman-Ford (video)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) - - [ ] [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: 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) + - [ ] [6.006 Problema della ricerca del path più veloce (Video in Inglese)](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [ ] [6.006 Dijkstra (Video in Inglese)](https://www.youtube.com/watch?v=NSHizBK9JD8&t=1731s&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Bellman-Ford (Video in Inglese)](https://www.youtube.com/watch?v=f9cVS_URPc0&ab_channel=MITOpenCourseWare) + - [ ] [6.006 Velocizzare Dijkstra (Video in Inglese)](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18) + - [ ] [Aduni: Algoritmi per Grafi I - Ordinamento Topologico, Alberi Ricoprenti Minimi, Algoritmo di Prim - Lezione 6 (Video in Inglese)]( https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Aduni: Algoritmi per Grafi II - DFS, BFS, Algoritmo di Kruskal, Mfset (o Struttura Dati Disjoint-Set) - Lezione 7 (Video in Inglese)]( https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) + - [ ] [Aduni: Algoritmi per Grafi III: Il Path più Veloce - Lezione 8 (Video in Inglese)](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8) + - [ ] [Aduni: Algoritmi per Grafi IV: Introduzione agli Algoritmi Geometrici - Lezione 9 (Video in Inglese)](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9) + - [ ] [CS 61B 2014: Grafi Pesati (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_zFbq8vOZ_0k) + - [ ] [Algoritmi Greedy: Alberi Ricoprenti Minimi (Video in Inglese)](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [ ] [Componenti Legati Strettamente, Algoritmo di Kosaraju e Algoritmi per Grafi (Video in Inglese)](https://www.youtube.com/watch?v=RpgcYiky7uw) -- Full Coursera Course: - - [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome) +- Corsi di Coursera Completi: + - [ ] [Algorithms on Graphs (Video in Inglese)](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 +- Implementazione: + - [ ] DFS con lista di adiacenza (ricorsiva) + - [ ] DFS con lista di adiacenza (iterativa con stack) + - [ ] DFS con matrice di adiacenza (ricorsiva) + - [ ] DFS con matrice di adiacenza (iterativa con stack) + - [ ] BFS con lista di adiacenza + - [ ] BFS con matrice di adiacenza + - [ ] Path più corto da un punto singolo (Dijkstra) + - [ ] Alberi Ricoprenti Minimi + - Algoritmi basati con il DFS (guarda i video di Aduni elencati sopra): + - [ ] controlla il ciclo for (necessario per l'ordinamento topologico, poiché lo controlleremo all'inizio) + - [ ] ordinamento topologico + - [ ] conta i componenti connessi nel grafo + - [ ] lista dei componenti strettamente connessi + - [ ] controlla per i grafi bipartiti -## Even More Knowledge +## Ancora Piu' Teoria -- ### 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) +- ### Ricorsione + - [ ] Stanford, Lezioni sulla ricorsione & backtracking: + - [ ] [Lezione 8 | Astrazione Informatica (Video in Inglese)](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8) + - [ ] [Lezione 9 | Astrazione Informatica (Video in Inglese)](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9) + - [ ] [Lezione 10 | Astrazione Informatica (Video in Inglese)](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69) + - [ ] [Lezione 11 | Astrazione Informatica (Video in Inglese)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11) + - Quando è appropriato usarla? + - Perché la ricorsione in coda è migliore? + - [ ] [Cos'è la ricorsione in coda e perché fa schifo? (Articolo in Inglese)](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) + - [ ] [Ricorsione in Coda (Video in Inglese)](https://www.coursera.org/Lezione/programming-languages/tail-recursion-YZic1) - Backtracking Blueprint: [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) -- ### Dynamic Programming + Backtracking Cheat-Sheet: [Java (Articolo in Inglese)](https://leetcode.com/problems/combination-sum/discuss/16502/A-general-approach-to-backtracking-questions-in-Java-(Subsets-Permutations-Combination-Sum-Palindrome-Partitioning)) + [Python (Articolo in Inglese)](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A) +- ### Programmazione Dinamica - You probably won't see any dynamic programming problems in your interview, but it's worth being able to recognize a problem as being a candidate for 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: - - [ ] [Skiena: CSE373 2020 - Lecture 19 - Introduction to Dynamic Programming (video)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) - - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (video)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) - - [ ] [Skiena: CSE373 2020 - Lecture 20 - Edit Distance (continued) (video)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) - - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) - - [ ] [Skiena: CSE373 2020 - Lecture 21 - Dynamic Programming and Review (video)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) - - [ ] [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) + - [ ] video: + - [ ] [Skiena: CSE373 2020 - Lezione 19 - Introduction to Dynamic Programming (Video in Inglese)](https://www.youtube.com/watch?v=wAA0AMfcJHQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=18) + - [ ] [Skiena: CSE373 2020 - Lezione 20 - Edit Distance (Video in Inglese)](https://www.youtube.com/watch?v=T3A4jlHlhtA&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=19) + - [ ] [Skiena: CSE373 2020 - Lezione 20 - Edit Distance (continued) (Video in Inglese)](https://www.youtube.com/watch?v=iPnPVcZmRbE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=20) + - [ ] [Skiena: CSE373 2020 - Lezione 21 - Dynamic Programming (Video in Inglese)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Skiena: CSE373 2020 - Lezione 21 - Dynamic Programming and Review (Video in Inglese)](https://www.youtube.com/watch?v=2xPE4Wq8coQ&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=21) + - [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (Video in Inglese)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558) + - [ ] [Simonson: Dynamic Programming I - Lezione 11 (Video in Inglese)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [Simonson: Dynamic programming II - Lezione 12 (Video in Inglese)](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 (Video in Inglese)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) + - [ ] Yale Lezione notes: - [ ] [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/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) - - [ ] [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/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) + - [ ] [The RNA secondary structure problem (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/Lezione/80RrW/the-rna-secondary-structure-problem) + - [ ] [A dynamic programming algorithm (Video in Inglese)](https://www.coursera.org/Lezione/algorithmic-thinking-2/a-dynamic-programming-algorithm-PSonq) + - [ ] [Illustrating the DP algorithm (Video in Inglese)](https://www.coursera.org/Lezione/algorithmic-thinking-2/illustrating-the-dp-algorithm-oUEK2) + - [ ] [Running time of the DP algorithm (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/Lezione/nfK2r/running-time-of-the-dp-algorithm) + - [ ] [DP vs. recursive implementation (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/Lezione/M999a/dp-vs-recursive-implementation) + - [ ] [Global pairwise sequence alignment (Video in Inglese)](https://www.coursera.org/Lezione/algorithmic-thinking-2/global-pairwise-sequence-alignment-UZ7o6) + - [ ] [Local pairwise sequence alignment (Video in Inglese)](https://www.coursera.org/learn/algorithmic-thinking-2/Lezione/WnNau/local-pairwise-sequence-alignment) -- ### Design patterns - - [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) +- ### Schemi Progettuali + - [ ] [Quick UML review (Video in Inglese)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3) - [ ] Learn these patterns: - [ ] strategy - [ ] singleton @@ -1040,64 +1040,64 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] iterator - [ ] composite - [ ] flyweight - - [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) + - [ ] [Series of video (27 video)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - [ ] [Book: 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) +- ### Calcolo Combinatorio (n sopra k) & Probabilita' + - [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (Video in Inglese)](https://www.youtube.com/watch?v=8RRo6Ti9d0U) + - [ ] [Make School: Probability (Video in Inglese)](https://www.youtube.com/watch?v=sZkAAk9Wwa4) + - [ ] [Make School: More Probability and Markov Chains (Video in Inglese)](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) + - Just the video - 41 (each are simple and each are short): + - [ ] [Probability Explained (Video in Inglese)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19) -- ### NP, NP-Complete and Approximation Algorithms +- ### NP, NP-Completo e Algoritmi di Approssimazione - 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) + - [ ] [Computational Complexity (Video in Inglese)](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) + - [ ] [Greedy Algs. II & Intro to NP Completeness (Video in Inglese)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939) + - [ ] [NP Completeness II & Reductions (Video in Inglese)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness III (Video in Inglese)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) + - [ ] [NP Completeness IV (Video in Inglese)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18) - [ ] Skiena: - - [ ] [CSE373 2020 - Lecture 23 - NP-Completeness (video)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) - - [ ] [CSE373 2020 - Lecture 24 - Satisfiability (video)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) - - [ ] [CSE373 2020 - Lecture 25 - More NP-Completeness (video)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) - - [ ] [CSE373 2020 - Lecture 26 - NP-Completeness Challenge (video)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) - - [ ] [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) + - [ ] [CSE373 2020 - Lezione 23 - NP-Completeness (Video in Inglese)](https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23) + - [ ] [CSE373 2020 - Lezione 24 - Satisfiability (Video in Inglese)](https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24) + - [ ] [CSE373 2020 - Lezione 25 - More NP-Completeness (Video in Inglese)](https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25) + - [ ] [CSE373 2020 - Lezione 26 - NP-Completeness Challenge (Video in Inglese)](https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26) + - [ ] [Complexity: P, NP, NP-completeness, Reductions (Video in Inglese)](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) + - [ ] [Complexity: Approximation Algorithms (Video in Inglese)](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) + - [ ] [Complexity: Fixed-Parameter Algorithms (Video in Inglese)](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - Peter Norvig 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. -- ### How computers process a program +- ### Come i Computer Processano un Programma - - [ ] [How CPU executes a program (video)](https://www.youtube.com/watch?v=XM4lGflQFvA) - - [ ] [How computers calculate - ALU (video)](https://youtu.be/1I5ZMmrOfnA) - - [ ] [Registers and RAM (video)](https://youtu.be/fpnE6UAfbtU) - - [ ] [The Central Processing Unit (CPU) (video)](https://youtu.be/FZGugFqdr60) - - [ ] [Instructions and Programs (video)](https://youtu.be/zltgXvg6r3k) + - [ ] [How CPU executes a program (Video in Inglese)](https://www.youtube.com/watch?v=XM4lGflQFvA) + - [ ] [How computers calculate - ALU (Video in Inglese)](https://youtu.be/1I5ZMmrOfnA) + - [ ] [Registers and RAM (Video in Inglese)](https://youtu.be/fpnE6UAfbtU) + - [ ] [The Central Processing Unit (CPU) (Video in Inglese)](https://youtu.be/FZGugFqdr60) + - [ ] [Instructions and Programs (Video in Inglese)](https://youtu.be/zltgXvg6r3k) - ### 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) + - [ ] [The Magic of LRU Cache (100 Days of Google Dev) (Video in Inglese)](https://www.youtube.com/watch?v=R5ON3iwx78M) + - [ ] [Implementing LRU (Video in Inglese)](https://www.youtube.com/watch?v=bq6N7Ym81iI) + - [ ] [LeetCode - 146 LRU Cache (C++) (Video in Inglese)](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-) + - [ ] [MIT 6.004 L15: The Memory Hierarchy (Video in Inglese)](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) + - [ ] [MIT 6.004 L16: Cache Issues (Video in Inglese)](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://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c) +- ### Processi e Threads + - [ ] Computer Science 162 - Operating Systems (25 video): + - for processes and threads see video 1-11 + - [Operating Systems and System Programming (Video in Inglese)](https://archive.org/details/ucberkeley-webcast-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 @@ -1113,16 +1113,16 @@ Graphs can be used to represent many problems in computer science, so this secti - Livelock - CPU activity, interrupts, context switching - Modern concurrency constructs with multicore processors - - [Paging, segmentation and virtual memory (video)](https://youtu.be/O4nwUqQodAg) - - [Interrupts (video)](https://youtu.be/iKlAWIKEyuw) + - [Paging, segmentation and virtual memory (Video in Inglese)](https://youtu.be/O4nwUqQodAg) + - [Interrupts (Video in Inglese)](https://youtu.be/iKlAWIKEyuw) - 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) + - [ ] [threads in C++ (series - 10 video)](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M) - [ ] [CS 377 Spring '14: Operating Systems from University of Massachusetts](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k) - - [ ] concurrency in Python (videos): + - [ ] concurrency in Python (video): - [ ] [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) @@ -1137,24 +1137,24 @@ Graphs can be used to represent many problems in computer science, so this secti - 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) + - [ ] [Agile Software Testing with James Bach (Video in Inglese)](https://www.youtube.com/watch?v=SAhJf36_u5U) + - [ ] [Open Lezione by James Bach on Software Testing (Video in Inglese)](https://www.youtube.com/watch?v=ILkT_HV9DVU) + - [ ] [Steve Freeman - Test-Driven Development (that’s not what we meant) (Video in Inglese)](https://vimeo.com/83960706) - [slides](http://gotocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf) - [ ] 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) -- ### String searching & manipulations - - [ ] [Sedgewick - Suffix Arrays (video)](https://www.coursera.org/learn/algorithms-part2/lecture/TH18W/suffix-arrays) - - [ ] [Sedgewick - Substring Search (videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. Introduction to Substring Search](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) - - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/lecture/2Kn5i/brute-force-substring-search) - - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) - - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) - - [ ] [5. Rabin-Karp](https://www.coursera.org/lecture/algorithms-part2/rabin-karp-3KiqT) - - [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text) +- ### Ricerca Tramite Pattern-Matching e Manipolazione delle Stringhe + - [ ] [Sedgewick - Suffix Arrays (Video in Inglese)](https://www.coursera.org/learn/algorithms-part2/Lezione/TH18W/suffix-arrays) + - [ ] [Sedgewick - Substring Search (video)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. Introduction to Substring Search](https://www.coursera.org/Lezione/algorithms-part2/introduction-to-substring-search-n3ZpG) + - [ ] [2. Brute-Force Substring Search](https://www.coursera.org/learn/algorithms-part2/Lezione/2Kn5i/brute-force-substring-search) + - [ ] [3. Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/Lezione/TAtDr/knuth-morris-pratt) + - [ ] [4. Boyer-Moore](https://www.coursera.org/learn/algorithms-part2/Lezione/CYxOT/boyer-moore) + - [ ] [5. Rabin-Karp](https://www.coursera.org/Lezione/algorithms-part2/rabin-karp-3KiqT) + - [ ] [Search pattern in text (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/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). @@ -1162,31 +1162,31 @@ Graphs can be used to represent many problems in computer science, so this secti - Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits to track the path - I read through code, but will not implement - - [ ] [Sedgewick - Tries (3 videos)](https://www.coursera.org/learn/algorithms-part2/home/week/4) - - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/lecture/CPVdr/r-way-tries) - - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/lecture/yQM8K/ternary-search-tries) - - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/lecture/jwNmV/character-based-operations) + - [ ] [Sedgewick - Tries (3 video)](https://www.coursera.org/learn/algorithms-part2/home/week/4) + - [ ] [1. R Way Tries](https://www.coursera.org/learn/algorithms-part2/Lezione/CPVdr/r-way-tries) + - [ ] [2. Ternary Search Tries](https://www.coursera.org/learn/algorithms-part2/Lezione/yQM8K/ternary-search-tries) + - [ ] [3. Character Based Operations](https://www.coursera.org/learn/algorithms-part2/Lezione/jwNmV/character-based-operations) - [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries) - - [ ] Short course videos: - - [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries) - - [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries) - - [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie) + - [ ] Short course video: + - [ ] [Introduction To Tries (Video in Inglese)](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/08Xyf/core-introduction-to-tries) + - [ ] [Performance Of Tries (Video in Inglese)](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/PvlZW/core-performance-of-tries) + - [ ] [Implementing A Trie (Video in Inglese)](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/DFvd3/core-implementing-a-trie) - [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure) - [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/competitive-programming/tutorials/using-tries/) - - [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) - - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (video)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [ ] [Stanford Lezione (real world use case) (Video in Inglese)](https://www.youtube.com/watch?v=TJ8SkcUSdbU) + - [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through) (Video in Inglese)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) -- ### Floating Point Numbers +- ### Numeri con Decimali (Floats) - [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU) - ### Unicode - [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html) - [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/) -- ### Endianness +- ### Ordine dei Byte (Endianness) - [ ] [Big And Little Endian](https://web.archive.org/web/20180107141940/http://www.cs.umd.edu:80/class/sum2003/cmsc311/Notes/Data/endian.html) - - [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo) - - [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) + - [ ] [Big Endian Vs Little Endian (Video in Inglese)](https://www.youtube.com/watch?v=JrNF0KRAlyo) + - [ ] [Big And Little Endian Inside/Out (Video in Inglese)](https://www.youtube.com/watch?v=oBSuXP-1Tc0) - Very technical talk for kernel devs. Don't worry if most is over your head. - The first half is enough. @@ -1194,32 +1194,32 @@ Graphs can be used to represent many problems in computer science, so this secti - **if you have networking experience or want to be a reliability engineer or operations engineer, expect questions** - Otherwise, this is just good to know - [ ] [Khan Academy](https://www.khanacademy.org/computing/code-org/computers-and-the-internet) - - [ ] [UDP and TCP: Comparison of Transport Protocols (video)](https://www.youtube.com/watch?v=Vdc8TCESIg8) - - [ ] [TCP/IP and the OSI Model Explained! (video)](https://www.youtube.com/watch?v=e5DEVa9eSN0) - - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (video)](https://www.youtube.com/watch?v=nomyRJehhnM) - - [ ] [HTTP (video)](https://www.youtube.com/watch?v=WGJrLqtX7As) - - [ ] [SSL and HTTPS (video)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) - - [ ] [SSL/TLS (video)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) - - [ ] [HTTP 2.0 (video)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) - - [ ] [Video Series (21 videos) (video)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) - - [ ] [Subnetting Demystified - Part 5 CIDR Notation (video)](https://www.youtube.com/watch?v=t5xYI0jzOf4) + - [ ] [UDP and TCP: Comparison of Transport Protocols (Video in Inglese)](https://www.youtube.com/watch?v=Vdc8TCESIg8) + - [ ] [TCP/IP and the OSI Model Explained! (Video in Inglese)](https://www.youtube.com/watch?v=e5DEVa9eSN0) + - [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial. (Video in Inglese)](https://www.youtube.com/watch?v=nomyRJehhnM) + - [ ] [HTTP (Video in Inglese)](https://www.youtube.com/watch?v=WGJrLqtX7As) + - [ ] [SSL and HTTPS (Video in Inglese)](https://www.youtube.com/watch?v=S2iBR2ZlZf0) + - [ ] [SSL/TLS (Video in Inglese)](https://www.youtube.com/watch?v=Rp3iZUvXWlM) + - [ ] [HTTP 2.0 (Video in Inglese)](https://www.youtube.com/watch?v=E9FxNzv1Tr8) + - [ ] [Video Series (21 video) (Video in Inglese)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j) + - [ ] [Subnetting Demystified - Part 5 CIDR Notation (Video in Inglese)](https://www.youtube.com/watch?v=t5xYI0jzOf4) - [ ] Sockets: - - [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) - - [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ) + - [ ] [Java - Sockets - Introduction (Video in Inglese)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s) + - [ ] [Socket Programming (Video in Inglese)](https://www.youtube.com/watch?v=G75vN2mnJeQ) --- -## Final Review +## Revisione Finale - This section will have shorter videos that you can watch pretty quickly to review most of the important concepts. + This section will have shorter video that you can watch pretty quickly to review most of the important concepts. It's nice if you want a refresher often. -- [ ] Series of 2-3 minutes short subject videos (23 videos) - - [Videos](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) -- [ ] Series of 2-5 minutes short subject videos - Michael Sambol (18 videos): - - [Videos](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) -- [ ] [Sedgewick Videos - Algorithms I](https://www.coursera.org/learn/algorithms-part1) -- [ ] [Sedgewick Videos - Algorithms II](https://www.coursera.org/learn/algorithms-part2) +- [ ] Series of 2-3 minutes short subject video (23 video) + - [video](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22) +- [ ] Series of 2-5 minutes short subject video - Michael Sambol (18 video): + - [video](https://www.youtube.com/channel/UCzDJwLWoYCUQowF_nG3m5OQ) +- [ ] [Sedgewick video - Algorithms I](https://www.coursera.org/learn/algorithms-part1) +- [ ] [Sedgewick video - Algorithms II](https://www.coursera.org/learn/algorithms-part2) --- @@ -1243,11 +1243,11 @@ Graphs can be used to represent many problems in computer science, so this secti - [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1) - [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs) - [ ] How to Get a Job at the Big 4: - - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8) + - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (Video in Inglese)](https://www.youtube.com/watch?v=YJZCUhxNCv8) - [ ] [How to Get a Job at the Big 4.1 (Follow-up video)](https://www.youtube.com/watch?v=6790FVXWBw8&feature=youtu.be) - [ ] Cracking The Coding Interview Set 1: - - [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) - - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ) + - [ ] [Gayle L McDowell - Cracking The Coding Interview (Video in Inglese)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ) + - [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (Video in Inglese)](https://www.youtube.com/watch?v=aClxtDcdpsQ) - [ ] Cracking the Facebook Coding Interview: - [ ] [The Approach](https://www.youtube.com/watch?v=wCl9kvQGHPI) - [ ] [Problem Walkthrough](https://www.youtube.com/watch?v=4UWDyJq8jZg) @@ -1403,24 +1403,24 @@ You're never really done. - [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/) - [ ] [How Do I Prepare To Answer Design Questions In A Technical Interview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023) - [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/) -- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (video)](https://www.youtube.com/watch?v=UrYLYV7WSHM) +- [ ] [Database Normalization - 1NF, 2NF, 3NF and 4NF (Video in Inglese)](https://www.youtube.com/watch?v=UrYLYV7WSHM) - [ ] [System Design Interview](https://github.com/checkcheckzz/system-design-interview) - There are a lot of resources in this one. Look through the articles and examples. I put some of them below - [ ] [How to ace a systems design interview](https://web.archive.org/web/20120716060051/http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/) - [ ] [Numbers Everyone Should Know](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/) - [ ] [How long does it take to make a context switch?](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html) -- [ ] [Transactions Across Datacenters (video)](https://www.youtube.com/watch?v=srOgpXECblk) +- [ ] [Transactions Across Datacenters (Video in Inglese)](https://www.youtube.com/watch?v=srOgpXECblk) - [ ] [A plain English introduction to CAP Theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) -- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [ ] [MIT 6.824: Distributed Systems, Spring 2020 (20 video)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) - [ ] Consensus Algorithms: - - [ ] Paxos - [Paxos Agreement - Computerphile (video)](https://www.youtube.com/watch?v=s8JqcZtvnsM) - - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (video)](https://www.youtube.com/watch?v=P9Ydif5_qvE) + - [ ] Paxos - [Paxos Agreement - Computerphile (Video in Inglese)](https://www.youtube.com/watch?v=s8JqcZtvnsM) + - [ ] Raft - [An Introduction to the Raft Distributed Consensus Algorithm (Video in Inglese)](https://www.youtube.com/watch?v=P9Ydif5_qvE) - [ ] [Easy-to-read paper](https://raft.github.io/) - [ ] [Infographic](http://thesecretlivesofdata.com/raft/) - [ ] [Consistent Hashing](http://www.tom-e-white.com/2007/11/consistent-hashing.html) - [ ] [NoSQL Patterns](http://horicky.blogspot.com/2009/11/nosql-patterns.html) - [ ] Scalability: - You don't need all of these. Just pick a few that interest you. - - [ ] [Great overview (video)](https://www.youtube.com/watch?v=-W9F__D3oY4) + - [ ] [Great overview (Video in Inglese)](https://www.youtube.com/watch?v=-W9F__D3oY4) - [ ] Short series: - [Clones](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones) - [Database](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database) @@ -1428,18 +1428,18 @@ You're never really done. - [Asynchronism](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism) - [ ] [Scalable Web Architecture and Distributed Systems](http://www.aosabook.org/en/distsys.html) - [ ] [Fallacies of Distributed Computing Explained](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf) - - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (video)](https://www.youtube.com/watch?v=modXC5IWTJI) + - [ ] [Jeff Dean - Building Software Systems At Google and Lessons Learned (Video in Inglese)](https://www.youtube.com/watch?v=modXC5IWTJI) - [ ] [Introduction to Architecting Systems for Scale](http://lethain.com/introduction-to-architecting-systems-for-scale/) - - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (video)](https://www.youtube.com/watch?v=9nWyWwY2Onc) - - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (video)](https://www.youtube.com/watch?v=H4vMcD7zKM0) + - [ ] [Scaling mobile games to a global audience using App Engine and Cloud Datastore (Video in Inglese)](https://www.youtube.com/watch?v=9nWyWwY2Onc) + - [ ] [How Google Does Planet-Scale Engineering for Planet-Scale Infra (Video in Inglese)](https://www.youtube.com/watch?v=H4vMcD7zKM0) - [ ] [The Importance of Algorithms](https://www.topcoder.com/community/competitive-programming/tutorials/the-importance-of-algorithms/) - [ ] [Sharding](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(video)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) + - [ ] [Engineering for the Long Game - Astrid Atkinson Keynote(Video in Inglese)](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4) - [ ] [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) - [ ] [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) - [ ] [How to Remove Duplicates in Large Datasets](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/) - - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (video)](https://www.youtube.com/watch?v=3vV4YiqKm1o) + - [ ] [A look inside Etsy's scale and engineering culture with Jon Cowie (Video in Inglese)](https://www.youtube.com/watch?v=3vV4YiqKm1o) - [ ] [What Led Amazon to its Own Microservices Architecture](http://thenewstack.io/led-amazon-microservices-architecture/) - [ ] [To Compress Or Not To Compress, That Was Uber's Question](https://eng.uber.com/trip-data-squeeze/) - [ ] [When Should Approximate Query Processing Be Used?](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html) @@ -1457,7 +1457,7 @@ You're never really done. - [ ] [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) - [ ] See "Messaging, Serialization, and Queueing Systems" way below for info on some of the technologies that can glue services together - [ ] Twitter: - - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (video)](https://www.youtube.com/watch?v=5cKTP36HVgI) + - [O'Reilly MySQL CE 2011: Jeremy Cole, "Big and Small Data at @Twitter" (Video in Inglese)](https://www.youtube.com/watch?v=5cKTP36HVgI) - [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability) - For even more, see "Mining Massive Datasets" video series in the [Video Series](#video-series) section - [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world: @@ -1497,29 +1497,29 @@ You're never really done. technologies and algorithms, so you'll have a bigger toolbox. - ### Compilers - - [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - - [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo) - - [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk) - - [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU) + - [How a Compiler Works in ~1 minute (Video in Inglese)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) + - [Harvard CS50 - Compilers (Video in Inglese)](https://www.youtube.com/watch?v=CSZLNYF4Klo) + - [C++ (Video in Inglese)](https://www.youtube.com/watch?v=twodd1KFfGk) + - [Understanding Compiler Optimization (C++) (Video in Inglese)](https://www.youtube.com/watch?v=FnGCDLhaxKU) - ### Emacs and vi(m) - Familiarize yourself with a unix-based code editor - vi(m): - - [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) + - [Editing With vim 01 - Installation, Setup, and The Modes (Video in Inglese)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr) - [VIM Adventures](http://vim-adventures.com/) - - set of 4 videos: + - set of 4 video: - [The vi/vim editor - Lesson 1](https://www.youtube.com/watch?v=SI8TeVMX8pk) - [The vi/vim editor - Lesson 2](https://www.youtube.com/watch?v=F3OO7ZIOaJE) - [The vi/vim editor - Lesson 3](https://www.youtube.com/watch?v=ZYEccA_nMaI) - [The vi/vim editor - Lesson 4](https://www.youtube.com/watch?v=1lYD5gwgZIA) - [Using Vi Instead of Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs) - emacs: - - [Basics Emacs Tutorial (video)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) - - set of 3 (videos): + - [Basics Emacs Tutorial (Video in Inglese)](https://www.youtube.com/watch?v=hbmV1bnQ-i0) + - set of 3 (video): - [Emacs Tutorial (Beginners) -Part 1- File commands, cut/copy/paste, cursor commands](https://www.youtube.com/watch?v=ujODL7MD04Q) - [Emacs Tutorial (Beginners) -Part 2- Buffer management, search, M-x grep and rgrep modes](https://www.youtube.com/watch?v=XWpsRupJ4II) - [Emacs Tutorial (Beginners) -Part 3- Expressions, Statements, ~/.emacs file and packages](https://www.youtube.com/watch?v=paSgzPso-yc) - - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (video)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) + - [Evil Mode: Or, How I Learned to Stop Worrying and Love Emacs (Video in Inglese)](https://www.youtube.com/watch?v=JWD1Fpdd4Pc) - [Writing C Programs With Emacs](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs) - [The Absolute Beginner's Guide to Emacs (video by David Wilson)](https://www.youtube.com/watch?v=48JlgiBpw_I&t=0s) - [The Absolute Beginner's Guide to Emacs (notes by David Wilson)](https://systemcrafters.net/emacs-essentials/absolute-beginners-guide-to-emacs/) @@ -1538,15 +1538,15 @@ You're never really done. - [strace](https://en.wikipedia.org/wiki/Strace) - [tcpdump](https://danielmiessler.com/study/tcpdump/) -- ### Information theory (videos) +- ### Information theory (video) - [Khan Academy](https://www.khanacademy.org/computing/computer-science/informationtheory) - More about Markov processes: - - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation) - - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation) - - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walk-through) + - [Core Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/waxgx/core-markov-text-generation) + - [Core Implementing Markov Text Generation](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/gZhiC/core-implementing-markov-text-generation) + - [Project = Markov Text Generation Walk Through](https://www.coursera.org/learn/data-structures-optimizing-performance/Lezione/EUjrq/project-markov-text-generation-walk-through) - See more in MIT 6.050J Information and Entropy series below -- ### Parity & Hamming Code (videos) +- ### Parity & Hamming Code (video) - [Intro](https://www.youtube.com/watch?v=q-3BctoUpHE) - [Parity](https://www.youtube.com/watch?v=DdMcAUlxh1M) - Hamming Code: @@ -1555,31 +1555,31 @@ You're never really done. - [Error Checking](https://www.youtube.com/watch?v=wbH2VxzmoZk) - ### Entropy - - Also see videos below - - Make sure to watch information theory videos first - - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (video)](https://youtu.be/JnJq3Py0dyM?t=176) + - Also see video below + - Make sure to watch information theory video first + - [Information Theory, Claude Shannon, Entropy, Redundancy, Data Compression & Bits (Video in Inglese)](https://youtu.be/JnJq3Py0dyM?t=176) - ### Cryptography - - Also see videos below - - Make sure to watch information theory videos first + - Also see video below + - Make sure to watch information theory video first - [Khan Academy Series](https://www.khanacademy.org/computing/computer-science/cryptography) - [Cryptography: Hash Functions](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30) - [Cryptography: Encryption](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - ### Compression - - Make sure to watch information theory videos first - - Computerphile (videos): + - Make sure to watch information theory video first + - Computerphile (video): - [Compression](https://www.youtube.com/watch?v=Lto-ajuqW3w) - [Entropy in Compression](https://www.youtube.com/watch?v=M5c_RFKVkko) - [Upside Down Trees (Huffman Trees)](https://www.youtube.com/watch?v=umTbivyJoiI) - [EXTRA BITS/TRITS - Huffman Trees](https://www.youtube.com/watch?v=DV8efuB3h2g) - [Elegant Compression in Text (The LZ 77 Method)](https://www.youtube.com/watch?v=goOa3DGezUA) - [Text Compression Meets Probabilities](https://www.youtube.com/watch?v=cCDCfoHTsaU) - - [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) + - [Compressor Head video](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H) - [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s) - ### Computer Security - - [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) + - [MIT (23 video)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2) - [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3) @@ -1594,13 +1594,13 @@ You're never really done. - [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) - ### Garbage collection - - [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI) + - [GC in Python (Video in Inglese)](https://www.youtube.com/watch?v=iHVs_HkjdmI) - [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits) - - [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) + - [Deep Dive Python: Garbage Collection in CPython (Video in Inglese)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3) - ### Parallel Programming - [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1) - - [Efficient Python for High Performance Parallel Computing (video)](https://www.youtube.com/watch?v=uY85GkaYzBk) + - [Efficient Python for High Performance Parallel Computing (Video in Inglese)](https://www.youtube.com/watch?v=uY85GkaYzBk) - ### Messaging, Serialization, and Queueing Systems - [Thrift](https://thrift.apache.org/) @@ -1608,7 +1608,7 @@ You're never really done. - [Protocol Buffers](https://developers.google.com/protocol-buffers/) - [Tutorials](https://developers.google.com/protocol-buffers/docs/tutorials) - [gRPC](http://www.grpc.io/) - - [gRPC 101 for Java Developers (video)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) + - [gRPC 101 for Java Developers (Video in Inglese)](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1) - [Redis](http://redis.io/) - [Tutorial](http://try.redis.io/) - [Amazon SQS (queue)](https://aws.amazon.com/sqs/) @@ -1626,19 +1626,19 @@ You're never really done. - ### A* - [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm) - - [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE) + - [A* Pathfinding (E01: algorithm explanation) (Video in Inglese)](https://www.youtube.com/watch?v=-L-WgKMFuhE) - ### Fast Fourier Transform - [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/) - [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/) - - [What is the Fourier Transform? (video)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) - - [Divide & Conquer: FFT (video)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) + - [What is the Fourier Transform? (Video in Inglese)](https://www.youtube.com/watch?v=Xxut2PN-V8Q) + - [Divide & Conquer: FFT (Video in Inglese)](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4) - [Understanding The FFT](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/) - ### Bloom Filter - Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k) - - [Bloom Filters (video)](https://www.youtube.com/watch?v=-SuTGoFYjZs) - - [Bloom Filters | Mining of Massive Datasets | Stanford University (video)](https://www.youtube.com/watch?v=qBTdukbzc78) + - [Bloom Filters (Video in Inglese)](https://www.youtube.com/watch?v=-SuTGoFYjZs) + - [Bloom Filters | Mining of Massive Datasets | Stanford University (Video in Inglese)](https://www.youtube.com/watch?v=qBTdukbzc78) - [Tutorial](http://billmill.org/bloomfilter-tutorial/) - [How To Write A Bloom Filter App](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/) @@ -1651,11 +1651,11 @@ You're never really done. - [Simhashing (hopefully) made simple](http://ferd.ca/simhashing-hopefully-made-simple.html) - ### van Emde Boas Trees - - [Divide & Conquer: van Emde Boas Trees (video)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) - - [MIT Lecture Notes](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/lecture-notes/MIT6_046JS12_lec15.pdf) + - [Divide & Conquer: van Emde Boas Trees (Video in Inglese)](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6) + - [MIT Lezione Notes](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/Lezione-notes/MIT6_046JS12_lec15.pdf) - ### Augmented Data Structures - - [CS 61B Lecture 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) + - [CS 61B Lezione 39: Augmenting Data Structures](https://archive.org/details/ucberkeley_webcast_zksIj9O8_jc) - ### Balanced search trees - Know at least one type of balanced binary tree (and know how it's implemented): @@ -1678,18 +1678,18 @@ You're never really done. balanced than red–black trees, leading to slower insertion and removal but faster retrieval. This makes it attractive for data structures that may be built once and loaded without reconstruction, such as language dictionaries (or program dictionaries, such as the opcodes of an assembler or interpreter) - - [MIT AVL Trees / AVL Sort (video)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) - - [AVL Trees (video)](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees) - - [AVL Tree Implementation (video)](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation) - - [Split And Merge](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge) + - [MIT AVL Trees / AVL Sort (Video in Inglese)](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6) + - [AVL Trees (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/Qq5E0/avl-trees) + - [AVL Tree Implementation (Video in Inglese)](https://www.coursera.org/learn/data-structures/Lezione/PKEBC/avl-tree-implementation) + - [Split And Merge](https://www.coursera.org/learn/data-structures/Lezione/22BgE/split-and-merge) - **Splay trees** - In practice: Splay trees are typically used in the implementation of caches, memory allocators, routers, garbage collectors, data compression, ropes (replacement of string used for long text strings), in Windows NT (in the virtual memory, networking and file system code) etc - - [CS 61B: Splay Trees (video)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) - - MIT Lecture: Splay Trees: + - [CS 61B: Splay Trees (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_G5QIXywcJlY) + - MIT Lezione: Splay Trees: - Gets very mathy, but watch the last 10 minutes for sure. - [Video](https://www.youtube.com/watch?v=QnPl_Y6EqMo) @@ -1703,8 +1703,8 @@ You're never really done. the Completely Fair Scheduler used in current Linux kernels uses red–black trees. In the version 8 of Java, the Collection HashMap has been modified such that instead of using a LinkedList to store identical elements with poor hashcodes, a Red-Black tree is used - - [Aduni - Algorithms - Lecture 4 (link jumps to starting point) (video)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) - - [Aduni - Algorithms - Lecture 5 (video)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) + - [Aduni - Algorithms - Lezione 4 (link jumps to starting point) (Video in Inglese)](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871) + - [Aduni - Algorithms - Lezione 5 (Video in Inglese)](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5) - [Red-Black Tree](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree) - [An Introduction To Binary Search And Red Black Tree](https://www.topcoder.com/thrive/articles/An%20Introduction%20to%20Binary%20Search%20and%20Red-Black%20Trees) @@ -1712,9 +1712,9 @@ You're never really done. - In practice: 2-3 trees have faster inserts at the expense of slower searches (since height is more compared to AVL trees). - You would use 2-3 tree very rarely because its implementation involves different types of nodes. Instead, people use Red Black trees. - - [23-Tree Intuition and Definition (video)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) + - [23-Tree Intuition and Definition (Video in Inglese)](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [2-3 Trees (student recitation) (video)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [2-3 Trees (student recitation) (Video in Inglese)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - **2-3-4 Trees (aka 2-4 trees)** - In practice: @@ -1722,9 +1722,9 @@ You're never really done. operations on 2-4 trees are also equivalent to color-flipping and rotations in red–black trees. This makes 2-4 trees an important tool for understanding the logic behind red–black trees, and this is why many introductory algorithm texts introduce 2-4 trees just before red–black trees, even though **2-4 trees are not often used in practice**. - - [CS 61B Lecture 26: Balanced Search Trees (video)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) - - [Bottom Up 234-Trees (video)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [Top Down 234-Trees (video)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) + - [CS 61B Lezione 26: Balanced Search Trees (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_zqrqYXkth6Q) + - [Bottom Up 234-Trees (Video in Inglese)](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [Top Down 234-Trees (Video in Inglese)](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5) - **N-ary (K-ary, M-ary) trees** - note: the N or K is the branching factor (max branches) @@ -1741,10 +1741,10 @@ You're never really done. (or perhaps to a cylinder-head-sector) address - [B-Tree](https://en.wikipedia.org/wiki/B-tree) - [B-Tree Datastructure](http://btechsmartclass.com/data_structures/b-trees.html) - - [Introduction to B-Trees (video)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) - - [B-Tree Definition and Insertion (video)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [B-Tree Deletion (video)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) - - [MIT 6.851 - Memory Hierarchy Models (video)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) + - [Introduction to B-Trees (Video in Inglese)](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6) + - [B-Tree Definition and Insertion (Video in Inglese)](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [B-Tree Deletion (Video in Inglese)](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) + - [MIT 6.851 - Memory Hierarchy Models (Video in Inglese)](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf) - covers cache-oblivious B-Trees, very interesting data structures - the first 37 minutes are very technical, may be skipped (B is block size, cache line size) @@ -1752,62 +1752,62 @@ You're never really done. - ### k-D Trees - Great for finding number of points in a rectangle or higher dimension object - A good fit for k-nearest neighbors - - [kNN K-d tree algorithm (video)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) + - [kNN K-d tree algorithm (Video in Inglese)](https://www.youtube.com/watch?v=Y4ZgLlDfKDg) - ### Skip lists - "These are somewhat of a cult data structure" - Skiena - - [Randomization: Skip Lists (video)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) + - [Randomization: Skip Lists (Video in Inglese)](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) - [For animations and a little more detail](https://en.wikipedia.org/wiki/Skip_list) - ### Network Flows - - [Ford-Fulkerson in 5 minutes — Step by step example (video)](https://www.youtube.com/watch?v=Tl90tNtKvxs) - - [Ford-Fulkerson Algorithm (video)](https://www.youtube.com/watch?v=v1VgJmkEJW0) - - [Network Flows (video)](https://www.youtube.com/watch?v=2vhN4Ice5jI) + - [Ford-Fulkerson in 5 minutes — Step by step example (Video in Inglese)](https://www.youtube.com/watch?v=Tl90tNtKvxs) + - [Ford-Fulkerson Algorithm (Video in Inglese)](https://www.youtube.com/watch?v=v1VgJmkEJW0) + - [Network Flows (Video in Inglese)](https://www.youtube.com/watch?v=2vhN4Ice5jI) - ### Disjoint Sets & Union Find - - [UCB 61B - Disjoint Sets; Sorting & selection (video)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) - - [Sedgewick Algorithms - Union-Find (6 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/1) + - [UCB 61B - Disjoint Sets; Sorting & selection (Video in Inglese)](https://archive.org/details/ucberkeley_webcast_MAEGXTwmUsI) + - [Sedgewick Algorithms - Union-Find (6 video)](https://www.coursera.org/learn/algorithms-part1/home/week/1) - ### Math for Fast Processing - - [Integer Arithmetic, Karatsuba Multiplication (video)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) - - [The Chinese Remainder Theorem (used in cryptography) (video)](https://www.youtube.com/watch?v=ru7mWZJlRQg) + - [Integer Arithmetic, Karatsuba Multiplication (Video in Inglese)](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb) + - [The Chinese Remainder Theorem (used in cryptography) (Video in Inglese)](https://www.youtube.com/watch?v=ru7mWZJlRQg) - ### Treap - Combination of a binary search tree and a heap - [Treap](https://en.wikipedia.org/wiki/Treap) - - [Data Structures: Treaps explained (video)](https://www.youtube.com/watch?v=6podLUYinH8) + - [Data Structures: Treaps explained (Video in Inglese)](https://www.youtube.com/watch?v=6podLUYinH8) - [Applications in set operations](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf) -- ### Linear Programming (videos) +- ### Linear Programming (video) - [Linear Programming](https://www.youtube.com/watch?v=M4K6HYLHREQ) - [Finding minimum cost](https://www.youtube.com/watch?v=2ACJ9ewUC6U) - [Finding maximum value](https://www.youtube.com/watch?v=8AA_81xI3ik) - [Solve Linear Equations with Python - Simplex Algorithm](https://www.youtube.com/watch?v=44pAWI7v5Zk) -- ### Geometry, Convex hull (videos) - - [Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) - - [Geometric Algorithms: Graham & Jarvis - Lecture 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) +- ### Geometry, Convex hull (video) + - [Graph Alg. IV: Intro to geometric algorithms - Lezione 9](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164) + - [Geometric Algorithms: Graham & Jarvis - Lezione 10](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) - [Divide & Conquer: Convex Hull, Median Finding](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2) - ### Discrete math - [Computer Science 70, 001 - Spring 2015 - Discrete Mathematics and Probability Theory](http://www.infocobuild.com/education/audio-video-courses/computer-science/cs70-spring2015-berkeley.html) - - [Discrete Mathematics by Shai Simonson (19 videos)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) + - [Discrete Mathematics by Shai Simonson (19 video)](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t) - [Discrete Mathematics By IIT Ropar NPTEL](https://nptel.ac.in/courses/106/106/106106183/) - ### Machine Learning - Why ML? - [How Google Is Remaking Itself As A Machine Learning First Company](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70) - - [Large-Scale Deep Learning for Intelligent Computer Systems (video)](https://www.youtube.com/watch?v=QSaZGT4-6EY) + - [Large-Scale Deep Learning for Intelligent Computer Systems (Video in Inglese)](https://www.youtube.com/watch?v=QSaZGT4-6EY) - [Deep Learning and Understandability versus Software Engineering and Verification by Peter Norvig](https://www.youtube.com/watch?v=X769cyzBNVw) - - [Google's Cloud Machine learning tools (video)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) - - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (video)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) - - [Tensorflow (video)](https://www.youtube.com/watch?v=oZikw5k_2FM) + - [Google's Cloud Machine learning tools (Video in Inglese)](https://www.youtube.com/watch?v=Ja2hxBAwG_0) + - [Google Developers' Machine Learning Recipes (Scikit Learn & Tensorflow) (Video in Inglese)](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal) + - [Tensorflow (Video in Inglese)](https://www.youtube.com/watch?v=oZikw5k_2FM) - [Tensorflow Tutorials](https://www.tensorflow.org/tutorials) - [Practical Guide to implementing Neural Networks in Python (using Theano)](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/) - Courses: - [Great starter course: Machine Learning](https://www.coursera.org/learn/machine-learning) - - [videos only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) - - see videos 12-18 for a review of linear algebra (14 and 15 are duplicates) + - [video only](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW) + - see video 12-18 for a review of linear algebra (14 and 15 are duplicates) - [Google's Deep Learning Nanodegree](https://www.udacity.com/course/deep-learning--ud730) - [AWS Machine Learning Engineer Nanodegree](https://www.udacity.com/course/aws-machine-learning-engineer-nanodegree--nd189) - [Self-Driving Car Engineer Nanodegree](https://www.udacity.com/drive) @@ -1828,7 +1828,7 @@ You're never really done. You want to get hired in this century, right? - **SOLID** - - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE) + - [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (Video in Inglese)](https://www.youtube.com/watch?v=TMuno5RZNeE) - [ ] 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 Principle](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) @@ -1836,7 +1836,7 @@ You're never really done. - [ ] L - [Liskov Substitution Principle](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ Principle](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) + - [Interface Segregation Principle in 5 minutes (Video in Inglese)](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) @@ -1844,14 +1844,14 @@ You're never really done. - **Union-Find** - - [Overview](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview) - - [Naive Implementation](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations) - - [Trees](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees) - - [Union By Rank](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank) - - [Path Compression](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression) - - [Analysis Options](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional) + - [Overview](https://www.coursera.org/learn/data-structures/Lezione/JssSY/overview) + - [Naive Implementation](https://www.coursera.org/learn/data-structures/Lezione/EM5D0/naive-implementations) + - [Trees](https://www.coursera.org/learn/data-structures/Lezione/Mxu0w/trees) + - [Union By Rank](https://www.coursera.org/learn/data-structures/Lezione/qb4c2/union-by-rank) + - [Path Compression](https://www.coursera.org/learn/data-structures/Lezione/Q9CVI/path-compression) + - [Analysis Options](https://www.coursera.org/learn/data-structures/Lezione/GQQLN/analysis-optional) -- **More Dynamic Programming** (videos) +- **More Dynamic Programming** (video) - [6.006: Dynamic Programming I: Fibonacci, Shortest Paths](https://www.youtube.com/watch?v=r4-cftqTcdI&ab_channel=MITOpenCourseWare) - [6.006: Dynamic Programming II: Text Justification, Blackjack](https://www.youtube.com/watch?v=KLBCUx1is2c&ab_channel=MITOpenCourseWare) - [6.006: DP III: Parenthesization, Edit Distance, Knapsack](https://www.youtube.com/watch?v=TDo3r5M1LNo&ab_channel=MITOpenCourseWare) @@ -1860,11 +1860,11 @@ You're never really done. - [6.046: Dynamic Programming: All-Pairs Shortest Paths](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15) - [6.046: Dynamic Programming (student recitation)](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12) -- **Advanced Graph Processing** (videos) +- **Advanced Graph Processing** (video) - [Synchronous Distributed Algorithms: Symmetry-Breaking. Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27) - [Asynchronous Distributed Algorithms: Shortest-Paths Spanning Trees](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28) -- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (videos): +- MIT **Probability** (mathy, and go slowly, which is good for mathy things) (video): - [MIT 6.042J - Probability Introduction](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B) - [MIT 6.042J - Conditional Probability](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B) - [MIT 6.042J - Independence](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B) @@ -1874,20 +1874,20 @@ You're never really done. - [MIT 6.042J - Large Deviations](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B) - [MIT 6.042J - Random Walks](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25) -- [Simonson: Approximation Algorithms (video)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) +- [Simonson: Approximation Algorithms (Video in Inglese)](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19) - **String Matching** - - Rabin-Karp (videos): - - [Rabin Karps Algorithm](https://www.coursera.org/lecture/data-structures/rabin-karps-algorithm-c0Qkw) - - [Precomputing](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation) - - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis) + - Rabin-Karp (video): + - [Rabin Karps Algorithm](https://www.coursera.org/Lezione/data-structures/rabin-karps-algorithm-c0Qkw) + - [Precomputing](https://www.coursera.org/learn/data-structures/Lezione/nYrc8/optimization-precomputation) + - [Optimization: Implementation and Analysis](https://www.coursera.org/learn/data-structures/Lezione/h4ZLc/optimization-implementation-and-analysis) - [Table Doubling, Karp-Rabin](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9) - [Rolling Hashes, Amortized Analysis](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32) - Knuth-Morris-Pratt (KMP): - [TThe Knuth-Morris-Pratt (KMP) String Matching Algorithm](https://www.youtube.com/watch?v=5i7oKodCRJo) - Boyer–Moore string search algorithm - [Boyer-Moore String Search Algorithm](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm) - - [Advanced String Searching Boyer-Moore-Horspool Algorithms (video)](https://www.youtube.com/watch?v=QDZpzctPf10) + - [Advanced String Searching Boyer-Moore-Horspool Algorithms (Video in Inglese)](https://www.youtube.com/watch?v=QDZpzctPf10) - [Coursera: Algorithms on Strings](https://www.coursera.org/learn/algorithms-on-strings/home/week/1) - starts off great, but by the time it gets past KMP it gets more complicated than it needs to be - nice explanation of tries @@ -1895,15 +1895,15 @@ You're never really done. - **Sorting** - - Stanford lectures on sorting: - - [Lecture 15 | Programming Abstractions (video)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) - - [Lecture 16 | Programming Abstractions (video)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) + - Stanford Lezioni on sorting: + - [Lezione 15 | Programming Abstractions (Video in Inglese)](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69) + - [Lezione 16 | Programming Abstractions (Video in Inglese)](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69) - Shai Simonson, [Aduni.org](http://www.aduni.org/): - - [Algorithms - Sorting - Lecture 2 (video)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) - - [Algorithms - Sorting II - Lecture 3 (video)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) - - Steven Skiena lectures on sorting: - - [CSE373 2020 - Mergesort/Quicksort (video)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) - - [CSE373 2020 - Linear Sorting (video)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) + - [Algorithms - Sorting - Lezione 2 (Video in Inglese)](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2) + - [Algorithms - Sorting II - Lezione 3 (Video in Inglese)](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3) + - Steven Skiena Lezioni on sorting: + - [CSE373 2020 - Mergesort/Quicksort (Video in Inglese)](https://www.youtube.com/watch?v=jUf-UQ3a0kg&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=8) + - [CSE373 2020 - Linear Sorting (Video in Inglese)](https://www.youtube.com/watch?v=0ksyQKmre84&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=9) ## Video Series @@ -1911,59 +1911,59 @@ Sit back and enjoy. - [List of individual Dynamic Programming problems (each is short)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr) -- [x86 Architecture, Assembly, Applications (11 videos)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) +- [x86 Architecture, Assembly, Applications (11 video)](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0) -- [MIT 18.06 Linear Algebra, Spring 2005 (35 videos)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) +- [MIT 18.06 Linear Algebra, Spring 2005 (35 video)](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) - [Excellent - MIT Calculus Revisited: Single Variable Calculus](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A) -- [Skiena lectures from Algorithm Design Manual - CSE373 2020 - Analysis of Algorithms (26 videos)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) +- [Skiena Lezioni from Algorithm Design Manual - CSE373 2020 - Analysis of Algorithms (26 video)](https://www.youtube.com/watch?v=22hwcnXIGgk&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=1) -- [UC Berkeley 61B (Spring 2014): Data Structures (25 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) +- [UC Berkeley 61B (Spring 2014): Data Structures (25 video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd) -- [UC Berkeley 61B (Fall 2006): Data Structures (39 videos)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) +- [UC Berkeley 61B (Fall 2006): Data Structures (39 video)](https://archive.org/details/ucberkeley-webcast-PL4BBB74C7D2A1049C) -- [UC Berkeley 61C: Machine Structures (26 videos)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) +- [UC Berkeley 61C: Machine Structures (26 video)](https://archive.org/details/ucberkeley-webcast-PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_) -- [OOSE: Software Dev Using UML and Java (21 videos)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) +- [OOSE: Software Dev Using UML and Java (21 video)](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO) -- [MIT 6.004: Computation Structures (49 videos)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) +- [MIT 6.004: Computation Structures (49 video)](https://www.youtube.com/playlist?list=PLDSlqjcPpoL64CJdF0Qee5oWqGS6we_Yu) -- [Carnegie Mellon - Computer Architecture Lectures (39 videos)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) +- [Carnegie Mellon - Computer Architecture Lezioni (39 video)](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq) -- [MIT 6.006: Intro to Algorithms (47 videos)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) +- [MIT 6.006: Intro to Algorithms (47 video)](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False) -- [MIT 6.033: Computer System Engineering (22 videos)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) +- [MIT 6.033: Computer System Engineering (22 video)](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484) -- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) +- [MIT 6.034 Artificial Intelligence, Fall 2010 (30 video)](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi) -- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 videos)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) +- [MIT 6.042J: Mathematics for Computer Science, Fall 2010 (25 video)](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B) -- [MIT 6.046: Design and Analysis of Algorithms (34 videos)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [MIT 6.046: Design and Analysis of Algorithms (34 video)](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) -- [MIT 6.824: Distributed Systems, Spring 2020 (20 videos)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) +- [MIT 6.824: Distributed Systems, Spring 2020 (20 video)](https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB) -- [MIT 6.851: Advanced Data Structures (22 videos)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) +- [MIT 6.851: Advanced Data Structures (22 video)](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1) -- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 videos)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) +- [MIT 6.854: Advanced Algorithms, Spring 2016 (24 video)](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c) -- [Harvard COMPSCI 224: Advanced Algorithms (25 videos)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) +- [Harvard COMPSCI 224: Advanced Algorithms (25 video)](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf) - [MIT 6.858 Computer Systems Security, Fall 2014](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh) -- [Stanford: Programming Paradigms (27 videos)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) +- [Stanford: Programming Paradigms (27 video)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) - [Introduction to Cryptography by Christof Paar](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) - [Course Website along with Slides and Problem Sets](http://www.crypto-textbook.com/) -- [Mining Massive Datasets - Stanford University (94 videos)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) +- [Mining Massive Datasets - Stanford University (94 video)](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV) -- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) +- [Graph Theory by Sarada Herke (67 video)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd) ## Computer Science Courses - [Directory of Online CS Courses](https://github.com/open-source-society/computer-science) -- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses) +- [Directory of CS Courses (many with online Lezioni)](https://github.com/prakhar1989/awesome-courses) ## Algorithms implementation