coding-interview-university/translations/README-af.md

1138 lines
70 KiB
Markdown
Raw Normal View History

2022-07-13 02:56:00 +06:00
# Kodering Onderhoud Universiteit
2022-07-12 03:30:55 +06:00
2022-07-13 01:40:18 +06:00
> Ek het oorspronklik dié as 'n kort om-te-doen lys van studie onderwerpe om 'n sagteware ingenieur te word gemaak,
> maar did het gegroei tot die groot lys wat jy vandag sien. Nadat ek dié studieplan gevolg het, [het Amazon my
> aangestel](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)!
> Jy hoef heel waarskynlik nie soveel soos ek te studeer nie. Maar alles wat jy nodig het is hier.
>
> Ek het ongeveer 8-12 gestudeer elke dag, vir maande. Hier is my storie: [Hoekom ek vol-tyd gestudeer het, vir 8 maande, vir 'n Google onderhoud](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13)
>
> **Let asseblief op: ** Jy sal nie soveel soos ek hoef te studeer nie. Ek het baie tyd gemors op goed wat ek nie benodig het nie. Meer inligting daaroor onder. Ek sal jou help leer sonder om jou kosbare tyd te mors.
2022-07-13 01:44:46 +06:00
>
> Die items wat hier gelys is sal jou goed voorberei vir tegniese onderhoude by omtrent enige sagteware maatskappy,
> insluitend die reuse: Amazon, Facebook, Google, en Microsoft.
>
> *Sterkte!*
<details>
<summary>Vertalings:</summary>
2022-07-13 01:45:25 +06:00
- [中文版本](translations/README-cn.md)
- [Tiếng Việt - Vietnamese](translations/README-vi.md)
- [Español](translations/README-es.md)
- [Português Brasileiro](translations/README-ptbr.md)
- [Polish](translations/README-pl.md)
- [繁體中文](translations/README-tw.md)
- [Japanese (日本語)](translations/README-ja.md)
- [Russian](translations/README-ru.md)
- [German](translations/README-de.md)
2022-07-13 01:46:30 +06:00
- [Bahasa Indonesia](translations/README-id.md)
- [ខ្មែរ - Khmer](translations/README-kh.md)
- [Uzbek](translations/README-uz.md)
- [Bulgarian](translations/README-bg.md)
- [বাংলা - Bangla](translations/README-bn.md)
</details>
<details>
<summary>Vertalings aan die gang:</summary>
2022-07-13 01:48:58 +06:00
- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
- [עברית](https://github.com/jwasham/coding-interview-university/issues/82)
- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98)
- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90)
- [French](https://github.com/jwasham/coding-interview-university/issues/89)
- [Українська](https://github.com/jwasham/coding-interview-university/issues/106)
- [Korean(한국어)](https://github.com/jwasham/coding-interview-university/issues/118)
- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117)
- [Urdu](https://github.com/jwasham/coding-interview-university/issues/519)
- [Thai](https://github.com/jwasham/coding-interview-university/issues/156)
- [Greek](https://github.com/jwasham/coding-interview-university/issues/166)
- [Malayalam](https://github.com/jwasham/coding-interview-university/issues/239)
- [Persian - Farsi](https://github.com/jwasham/coding-interview-university/issues/186)
</details>
<div align="center">
<hr />
<p>
2022-07-13 02:56:00 +06:00
<a href="https://github.com/sponsors/jwasham"><strong>Word 'n bydraër</strong> en borg Kodering Onderhoud Universiteit!</a>
2022-07-13 01:48:58 +06:00
</p>
2022-07-13 01:54:10 +06:00
<p>
<strong>Spesiale dank aan:</strong>
</p>
<p>
<a href="https://oss.capital/">
<div>
2022-07-13 02:00:57 +06:00
<img src="https://d3j2pkmjtin6ou.cloudfront.net/sponsors/oss-capital.svg" width="350" alt="OSS Capital">
</div>
<div>
<sup><strong>Gestig in 2018, OSS Capital is die eerste en enigste waagkapitaal platform gefokus<br>uitsluitlik om vroeë stadium COSS (komersiële oop bron) opstart stigters te ondersteun.</strong></sup>
</div>
</a>
</p>
<br />
<p>
<a href="https://www.gitpod.io/?utm_campaign=jwasham&utm_medium=referral&utm_content=coding-interview-university&utm_source=github">
<div>
<img src="https://d3j2pkmjtin6ou.cloudfront.net/sponsors/gitpod-logo-light-theme.svg" width="300" alt="Gitpod">
2022-07-13 01:54:10 +06:00
</div>
2022-07-13 02:08:35 +06:00
<div>
<p>
<strong>Dev omgewings gebou vir die wolk</strong>
</p>
</div>
<div>
<sup>Inheems geïntegreer met GitLab, GitHub, en Bitbucket, bou Gitpod outomaties en aanhoudend dev omgewings vir al jou takke. As gevolg kan span lede onmiddellik begin kodeer met vars dev omgewings vir elke nuwe taak - maak nie saak of jy 'n nuwe kenmerk bou, 'n fout wil reg maak, of werk aan 'n kode resensie nie.</sup>
</div>
</a>
2022-07-13 01:54:10 +06:00
</p>
2022-07-13 02:11:59 +06:00
<hr />
</div>
## Wat is dit?
2022-07-13 02:56:00 +06:00
![Kodering op die witbord - van HBO se Silicon Valley](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png)
2022-07-13 02:11:59 +06:00
Dié is my multi-maand studie plan om 'n sagteware ingeneur te word vir 'n groot maatskappy.
**Benodighede:**
2022-07-13 02:56:00 +06:00
* 'n Bietjie ondervinding met kodrering (veranderlikes, lusse, metodes/funksies, ens)
2022-07-13 02:21:10 +06:00
* Geduld
* Tyd
2022-07-13 02:56:00 +06:00
2022-07-13 02:21:10 +06:00
Let wel dat die 'n studieplan vir 'n **sagteware ingeneur** pos is, nie 'n webontwikkeling pos nie. Groot maatskappeie soos Google, Amazon,
Facebook en Microsoft sien sagteware ingeneurs as verskilled van webontwikkeling ingeneurs. Byvoorbeeld, Amazon het
Frontend Ingeneurs (FEE) en Sagteware Ontwikkeling Ingeneurs (SDE). Die is 2 verskeie rolle en die onderhoude verskil,
omdat elkeen sy eie bevoegdhede het. Dié maatskappeie benodig rekenaar wetenskap kennis vir
sagteware ontwikkeling/ingeneur rolle.
2022-07-13 02:24:08 +06:00
---
## Inhoudsopgawe
### Die Studie Plan
2022-07-19 00:38:38 +06:00
- [Wat is dit?](#wat-is-dit)
2022-07-13 23:46:12 +06:00
- [Hoekom gebruik dit?](#hoekom-gebruik-dit)
- [Hoe om dit te gebruik](#hoe-om-dit-te-gebruik)
- [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie)
- ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne)
- [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal)
- [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes)
2022-07-15 00:35:11 +06:00
- [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereidingsboeke)
2022-07-13 23:46:12 +06:00
- [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie)
- [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie)
- [Die Daaglikse Plan](#die-daaglikse-plan)
- [Kodering Vrae Beoefening](#kodering-vrae-beoefening)
- [Kodering Probleme](#kodering-probleme)
2022-07-13 02:56:00 +06:00
## Onderwerpe om te Studeer
2022-07-19 00:38:38 +06:00
- [Kodering Onderhoud Universiteit](#kodering-onderhoud-universiteit)
2022-07-13 02:56:00 +06:00
- [Wat is dit?](#wat-is-dit)
- [Inhoudsopgawe](#inhoudsopgawe)
- [Die Studie Plan](#die-studie-plan)
- [Onderwerpe om te Studeer](#onderwerpe-om-te-studeer)
- [Kry die Werk](#kry-die-werk)
- [Opsionele Ekstra Onderwerpe & Hulpbronne](#opsionele-ekstra-onderwerpe--hulpbronne)
- [Hoekom gebruik dit?](#hoekom-gebruik-dit)
2022-07-13 03:01:08 +06:00
- [Hoe om dit te gebruik?](#hoe-om-dit-te-gebruik)
- [As jy nie git wil gebruik nie](#as-jy-nie-git-wil-gebruik-nie)
- [As jy gemaklik met git is](#as-jy-gemaklik-met-git-is)
- [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie)
- ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne)
- [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal)
- [Vir die Studie Plan](#vir-die-studie-plan)
- [Vir jou Kodering Onderhoud](#vir-jou-kodering-onderhoud)
- [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes)
- [C](#c)
- [Python](#python)
- [Java](#java)
2022-07-13 03:06:27 +06:00
- [C++](#c-1)
- [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereiding)
- [As jy tonne ekstra tyd het](#as-jy-tonne-ekstra-tyd-het)
- [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie)
- [1. Jy Sal Nie Alles Onthou Nie](#1-jy-sal-nie-alles-onthou-nie)
- [2. Gebruik flitskaarte](#2-gebruik-flitskaarte)
- [3. Doen Kodering Onderhoud Vrae Terwyl Jy Leer](#3-doen-kodering-onderhoud-vrae-terwyl-jy-leer)
- [4. Fokus](#4-fokus)
- [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie)
- [Die Daaglikse Plan](#die-daaglikse-plan)
- [Kodering Vrae Beoefening](#kodering-vrae-beoefening)
2022-07-13 03:09:59 +06:00
- [Kodering Probleme](#kodering-probleme)
- [Begin Solank](#begin-solank)
- [Algoritmiese Kompleksiteit / Big-O / Asimptotiese analise](#algorithmic-complexity--big-o--asymptotic-analysis)
- [Datastrukture](#datastrukture)
- [Meer Kennis](#meer-kennis)
- [Bome](#bome)
- [Sorteer](#sorteer)
2022-07-13 03:19:33 +06:00
- [Grafieke](#grafieke)
- [Nog Meer Kennis](#nog-meer-kennis)
- [Finale Resensie](#finale-resensie)
- [Werk Jou CV By](#werk-jou-cv-by)
- [Kry 'n Werk](#kry-n-werk)
- [Onderhoudproses & Algemene Voorbereiding](#onderhoudproses--algemene-voorbereiding)
- [Dink aan vir wanneer die onderhoud kom](#dink-aan-vir-wanneer-die-onderhoud-kom)
- [Hê vrae vir die onderhoudvoerder](#he-vrae-vir-die-onderhoudvoerder)
- [Sodra Jy Die Werk Het](#sodra-jy-die-werk-het)
- [Bykomende Boeke](#bykomende-boeke)
2022-07-13 03:24:19 +06:00
- [Stelsel Onderwerp, Skaalbaarheid, Data Hantering](#stelsel-onderwerp-skaalbaarheid-data-hantering)
- [Bykomende Leer](#bykomende-leer)
- [Bykomende Detail op Sommige Vakke](#bykomende-detail-op-sommige-vakke)
- [Video Reeks](#video-reeks)
- [Rekenaar Wetenshap Kursusse](#rekenaar-wetenshap-kursusse)
- [Algoritmes implementering](#algoritmes-implementering)
- [Papiere](#papiere)
- [LISENSIE](#lisensie)
2022-07-13 03:29:02 +06:00
### Kry die Werk
2022-07-19 00:38:38 +06:00
- [Werk Jou CV By](#werk-jou-cv-by)
2022-07-13 03:29:02 +06:00
- [Kry 'n Werk](#kry-n-werk)
- [Onderhoudproses & Algemene Voorbereiding](#onderhoudproses--algemene-voorbereiding)
- [Dink aan vir wanneer die onderhoud kom](#dink-aan-vir-wanneer-die-onderhoud-kom)
- [Hê vrae vir die onderhoudvoerder](#he-vrae-vir-die-onderhoudvoerder)
- [Sodra Jy Die Werk Het](#sodra-jy-die-werk-het)
**---------------- Alles hieronder is opsioneel ----------------**
2022-07-13 23:18:04 +06:00
### Opsionele Ekstra Onderwerpe & Hulpbronne
2022-07-19 00:38:38 +06:00
- [Kodering Onderhoud Universiteit](#kodering-onderhoud-universiteit)
2022-07-13 23:18:04 +06:00
- [Wat is dit?](#wat-is-dit)
- [Inhoudsopgawe](#inhoudsopgawe)
- [Die Studie Plan](#die-studie-plan)
- [Onderwerpe om te Studeer](#onderwerpe-om-te-studeer)
- [Kry die Werk](#kry-die-werk)
- [Opsionele Ekstra Onderwerpe & Hulpbronne](#opsionele-ekstra-onderwerpe--hulpbronne)
- [Hoekom gebruik dit?](#hoekom-gebruik-dit)
- [Hoe om dit te gebruik?](#hoe-om-dit-te-gebruik)
- [As jy nie git wil gebruik nie](#as-jy-nie-git-wil-gebruik-nie)
- [As jy gemaklik met git is](#as-jy-gemaklik-met-git-is)
2022-07-13 23:19:23 +06:00
- [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie)
- ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne)
- [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal)
- [Vir die Studie Plan](#vir-die-studie-plan)
- [Vir jou Kodering Onderhoud](#vir-jou-kodering-onderhoud)
- [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes)
- [C](#c)
- [Python](#python)
- [Java](#java)
- [C++](#c-1)
- [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereiding)
- [As jy tonne ekstra tyd het](#as-jy-tonne-ekstra-tyd-het)
- [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie)
- [1. Jy Sal Nie Alles Onthou Nie](#1-jy-sal-nie-alles-onthou-nie)
- [2. Gebruik flitskaarte](#2-gebruik-flitskaarte)
- [3. Doen Kodering Onderhoud Vrae Terwyl Jy Leer](#3-doen-kodering-onderhoud-vrae-terwyl-jy-leer)
- [4. Fokus](#4-fokus)
- [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie)
- [Die Daaglikse Plan](#die-daaglikse-plan)
- [Kodering Vrae Beoefening](#kodering-vrae-beoefening)
- [Kodering Probleme](#kodering-probleme)
- [Begin Solank](#begin-solank)
2022-07-16 03:13:48 +06:00
- [Algoritmiese Kompleksiteit / Big-O / Asimptotiese analise](#algoritmiese-kompleksiteti--big-o--asimptotiese-analise)
2022-07-13 23:19:23 +06:00
- [Datastrukture](#datastrukture)
- [Meer Kennis](#meer-kennis)
- [Bome](#bome)
- [Sorteer](#sorteer)
- [Grafieke](#grafieke)
- [Nog Meer Kennis](#nog-meer-kennis)
- [Finale Resensie](#finale-resensie)
- [Werk Jou CV By](#werk-jou-cv-by)
- [Kry 'n Werk](#kry-n-werk)
- [Onderhoudproses & Algemene Voorbereiding](#onderhoudproses--algemene-voorbereiding)
- [Dink aan vir wanneer die onderhoud kom](#dink-aan-vir-wanneer-die-onderhoud-kom)
- [Hê vrae vir die onderhoudvoerder](#he-vrae-vir-die-onderhoudvoerder)
- [Sodra Jy Die Werk Het](#sodra-jy-die-werk-het)
- [Bykomende Boeke](#bykomende-boeke)
- [Stelsel Onderwerp, Skaalbaarheid, Data Hantering](#stelsel-onderwerp-skaalbaarheid-data-hantering)
- [Bykomende Leer](#bykomende-leer)
- [Bykomende Detail op Sommige Vakke](#bykomende-detail-op-sommige-vakke)
- [Video Reeks](#video-reeks)
- [Rekenaar Wetenshap Kursusse](#rekenaar-wetenshap-kursusse)
- [Algoritmes implementering](#algoritmes-implementering)
- [Papiere](#papiere)
- [LISENSIE](#lisensie)
---
2022-07-13 23:35:48 +06:00
## Hoekom gebruik dit?
As jy wil werk as 'n sagteware ingeneur vir 'n groot maatskappy, hierdie is die goed wat jy moet ken.
As jy uitgemis het op 'n rekenaar wetenskap graad, soos ek het, sal hierdie jou laat opvang en vier jaar van jou lewe spaar.
Toe ek hierdie projek begin het, kon ek nie verskil tussen 'n stapel en 'n hoop nie, het niks van Big-O geweet nie, of enige iets van bome nie, of hoe om
'n grafiek te dwars nie. As ek 'n sorteer algoritme moes kode, kan ek jou verseker dit was verskriklik.
Elke datastruktuur wat ek ooit moes gebruik was ingebou in die taal, end ek het nie geweet hoe hulle werk
onder die kap nie. Ek het nooit nodig gehaad of geheue te bestuur nie, tensy 'n proses vir my 'n "te min
beskikbare geheue" fout gegee het, en dan moes ek 'n ander oplossing kry. Ek het 'n paar multidimensionele skikkings
in my lewe gebruik en duisende assosiatiewe skikkings, maar ek hoef nooit 'n datastruktuur van nuut af gebou het nie.
Dis 'n lang plan. Dit gaan maande vat. As jy klaar gemaklik met baie van dié is gaan dit jou baie minder tyd vat.
2022-07-13 23:46:12 +06:00
## Hoe om dit te gebruik?
Alles hieronder is 'n uitlyn, en jy moet elke item aan pak in orde van bo tot onder.
Ek gebruik Github se spisiale markdown flavor, insluitend taaklyste om vordering te volg.
- [More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown)
2022-07-13 23:51:49 +06:00
### As jy nie git wil gebruik nie
Op dié blad, kliek die Code knop naby die bookant, dan kliek "Download ZIP". Unzip die lêer en jy kan werk met die teks lêers.
As jy in 'n kode redakteur is wat markdown verstaan, sal jy sien alles is mooi geformateer.
![Hoe om die repo af te laai as 'n zip lêer](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png)
2022-07-13 23:55:18 +06:00
### As jy gemaklik met git is
Skep 'n nuwe tak sodat jy items soos dié kan merk, sit net 'n x in die hakies: [x]
Virk 'n tak en vold die bevele hieronder
Virk die Github repo https://github.com/jwasham/coding-interview-university deur om die Fork knop to druk.
Kloon na jou plaaslike repo:
2022-07-13 23:56:47 +06:00
git clone git@github.com:<your_github_username>/coding-interview-university.git
git checkout -b progress
git remote add jwasham https://github.com/jwasham/coding-interview-university
git fetch --all
Merk al die bokse met X nadat jy jou veranderinge voltooi het:
git add .
git commit -m "Marked x"
git rebase jwasham/main
git push --set-upstream origin progress
git push --force
2022-07-14 00:00:04 +06:00
## Moenie voel asof jy nie slim genoeg is nie
- Suksesvolle sagteware ingeneurs is slim, maar baie het onsekerhede dat hulle nie slim genoeg is nie.
- [Die mite van die Geniale Programeerder](https://www.youtube.com/watch?v=0SARbwvhupQ)
- [Dit is Gevaarlik om Alleen te Gaan: Struikel teen die Onsigbare Monsters in Tegnologie](https://www.youtube.com/watch?v=1i8ylq4j_EY)
2022-07-14 00:23:55 +06:00
## 'n Nota Oor Video Hulpbronne
Sekere videos is net beskikbaar as jy skryf vir 'n kurses in 'n Coursera of EdX klas. Dié is genoem MOOCs.
Soms is die klasse nie in sessie nie end jy sal moet wag vir 'n paar maande, so jy het nie toegang nie.
Dit sal wonderlik wees om die aanlyn klasse te vervang met gratis en altyd-beskikbare openbare bronne,
soos YouTube videos (verkieslik universiteitslesings), sodat julle daarvanaf enige tyd kan leer,
nie net wanneer 'n spesifieke aanlyn kursus in sessie is nie.
## Kies 'n Programmeeringstaal
Jy sal 'n programmeringstaal moet kies vir die kodering onderhoude wat jy gaan doen,
maar jy sal dan ook 'n taal moet kies waarmee jy rekenaar wetenskap konsepte kan leer.
2022-07-14 00:25:30 +06:00
Verkieslik is die taal dieselfde, sodat jy net vaardigheid in een hoef te bou.
### Vir die Studie Plan
Toe ek die studie plan gedoen het, het ek 2 tale gebruik vir meeste van dit: C en Python
2022-07-14 00:38:52 +06:00
* C: Baie lae vlak. Laat jou toe om met pointers en geheue allocation/deallocation te werk, sodat jy die datastrukture en
algoritmes voel in jou bene. In hoër vlak tale soos Python en Java word die weggesteek van jou af. In daaglikse werk is dit wonderlik,
maar wanneer jy leer hoe die lae-vlak datastrukture gebou is, voel dit lekker om naby die metaal te wees.
- C is orals. Jy sal voorbeelde in boeke, lesings, vidoes, en *oral* sien wanner jy studeer.
- [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)
- Dié is 'n kort boek, maar dit sal jou 'n goeie vat gee oor die C taal en as jy dit 'n bikie oefen sal jy vinnig
vaardigheid bou. Deur om C te verstaan help dit jou om te verstaan hoe programme en geheue werk.
- Jy hoef nie super diep in die boek te gaan nie (of eens dit klaar te maak nie). Gaan net tot die punt waar jy C gemaklik kan lees en skryf.
- [Antwoorde vir vrae in die boek](https://github.com/lekkas/c-algorithms)
* Python: Modern en baie duur, ek het dit geleer want dis super nuttig en laat my toe om minder kode te skruf in 'n onderhoud.
2022-07-14 00:40:26 +06:00
Die is my voorkeur. Doen jy wat vir jou pas, natuurlik.
Jy mag dit dalk nie nodig kry nie, maar hier is 'n paar webwerwe om jou nuwe taal te leer:
- [Exercism](https://exercism.org/tracks)
- [Codewars](http://www.codewars.com)
- [Codility](https://codility.com/programmers/)
- [HackerEarth](https://www.hackerearth.com/)
- [Sphere Online Judge (spoj)](http://www.spoj.com/)
- [Codechef](https://www.codechef.com/)
2022-07-14 00:43:07 +06:00
- [Codeforces](https://codeforces.com/)
### Vir jou Kodering Onderhoud
Jy kan 'n taal gebruik waarmee jy gemaklik in is om die kodeering deel van die onderhoud te doen, maar vir groot maatskappye is die goeie besluite:
- C++
- Java
- Python
Jy kan ook dié gebruik, maar lees eers rond. Daar is baie caveats:
- JavaScript
2022-07-14 00:46:01 +06:00
- Ruby
Hier is 'n artikel wat ek geskryf het oor hoe om 'n taal te kies vir die onderhoud:
[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/).
Hierdie is die oorspronklike artikel wat my pos op basseer was: [Choosing a Programming Language for Interviews](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/)
Jy moet baie gemaklik in die taal wees en kundig.
2022-07-14 00:48:41 +06:00
Lees meer oor besluite:
- [Choose the Right Language for Your Coding Interview](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/)
[Sien taal-spesifieke hulpbronne hier](programming-language-resources.md)
## Boeke vir Datastrukture en Algoritmes
Die boek sal jou fondasie vir rekenaar wetenskap vorm.
2022-07-14 00:51:33 +06:00
Kies net een, in die taal waarin jy gemaklik sal wees. Jy sal baie lees en kodeering doen.
### C
- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080)
- Fondasie, Datastrukture, Sorteer, Soek, en Grafiek Algoritmes
### Python
- [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/)
- deur Goodrich, Tamassia, Goldwasser
- Ek lief die boek. Dit dek alles en meer.
- Pythonic kode.
2022-07-14 23:51:52 +06:00
- my gloeiende boekverslag: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/
### Java
Jou besluit:
- Goodrich, Tamassia, Goldwasser
2022-07-14 23:52:42 +06:00
- [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/)
- Sedgewick and Wayne:
- [Algorithms](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/)
- Free Coursera course that covers the book (taught by the authors!):
- [Algorithms I](https://www.coursera.org/learn/algorithms-part1)
- [Algorithms II](https://www.coursera.org/learn/algorithms-part2)
### C++
2022-07-14 23:55:21 +06:00
Jou besluit:
- Goodrich, Tamassia, and Mount
- [Data Structures and Algorithms in C++, 2nd Edition](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275)
- Sedgewick and Wayne
- [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/)
- [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/)
## Onderhoud Voorbereïngsboeke
Jy hoef nie 'n klomp van die te koop nie. Eerlikwaar is "Craking the Coding Interview" heelwaarskynlik genoeg,
2022-07-14 23:59:17 +06:00
maar ek het meer gekoop om myself meer oefening te gee. Maar ek doen altyd te veel.
Ek het beide van die gekoop. Hulle het vir my genoeg oefening gegee.
- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/)
- Antwoorde in C++ en Java
- Hierdie is 'n goeie opwarming vir Cracking the Coding Interview
- Nie te moeilik nie. Meeste probleme mag dalk makliker wees as dié in die onderhoud (van wat ek gelees het)
- [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/)
- antwoorde in Java
### As jy tonne ekstra tyd het:
Kies een:
- [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836)
- [Elements of Programming Interviews in Python](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/)
- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/)
- [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews)
2022-07-15 00:03:58 +06:00
## Moenie My Foute Maak Nie
Hierdie lys het gegroei oor baie maande, en ja, dit het uit die hand geruk.
Hierdie is 'n paar foute wat ek gemaak het sodat jy 'n beter ervaaring het. En jy sal maande se tyd spaar.
### 1. Jy Sal Nie Alles Onthou Nie
Ek het ure lank videos gekyk en deeglike notas gevat, en maande later was daar baie wat ek nie meer onthou het nie. Ek het 3 dae spandeer
2022-07-15 00:14:06 +06:00
om deur my notas te gaan en flitskaarte te maak, sodat ek kon revisie. Ek het nie al daardie kennis nodig gehaad nie.
2022-07-15 00:08:02 +06:00
Asseblief, lees sodat jy nie my foute maak nie:
[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/).
### 2. Gebruik flitskaarte
Om die probleem op te los, het ek a klein flitskaart webwerf gemaak waar ek 2 tipe flitskaarte kon byvoeg: algemeen en kode.
2022-07-15 00:14:06 +06:00
Elke kaart se formatering was verskillend. Ek het 'n mobiele-eerste webwerf gemaak, so ek kon revisie op my foon en tablet, waarookal ek is.
2022-07-15 00:08:02 +06:00
Maak jou eie verniet:
2022-07-15 00:14:06 +06:00
- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards)
**Ek BEVEEL NIE AAN dat jy my flitskaarte gebruik nie.** Daar is te veel onnodige kaarte wat jy nie nodig het nie.
Maar as jy nie na my wil luister nie, hier is hulle:
- [My flash cards database (1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db):
- [My flash cards database (extreme - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db):
2022-07-15 00:21:45 +06:00
Hou in gedagte dat ek oorboord gegaan het en het kaarte wat alles van assembly taal en Python trivia na masjien leer en statistiek dek.
Dit te veel vir wat nodig is.
**Nota op flitskaarte:** Die eerste keer wat jy erken dat jy die anwoord ken, moenie dit as ken merk nie. Jy moet dieselfde
kaart sien en dit vele kere reg beantwoord voordat jy regtig dit ken. Herhaling sal die kennis diepier
in jou brein berê.
As 'n alternatief na my flitskaart webwerf is [Anki](http://ankisrs.net/), wat vir my voorgestel is talle kere.
Dit gebruik 'n herhalingssisteem om te help onthou. Dit gebruikers-vriendelik, beskikbaar op alle platforms en het 'n wolk sync sisteem.
Dit kos $25 op iOS maar is verniet op ander platforms.
2022-07-15 00:27:54 +06:00
My flitskaart databasis in Anki formaat: https://ankiweb.net/shared/info/25173560 (dankie [@xiewenya](https://github.com/xiewenya)).
Sommige studente het 'n kwessie na vore gebring dat daar wit spasie is in die formatering wat reg gemaak kan word met die volgende stappe: open deck, edit card, kliek cards, kies die "styling" radio knop, verg by die member "white-space: pre;" aan die einde van die card class.
### 3. Doen Kodering Onderhoud Vrae Terwyl Jy Leer
HIERDIE IS BAIE BELANGRIK.
Begin met die kodering onderhoud vrae terwyl jy datastrukture en algoritmes leer.
2022-07-15 00:35:11 +06:00
Jy moet toepas wat jy leer om probleme op te los, of jy sal vergeet. Ek het die fout gemaak.
Sodra jy 'n onderwerp geleer het, en voel sowat gemaklik met dit, byvoorbeeld, **linked lists**:
1. Maak een van die [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereidingsboeke) (of kodering probleem webwerve, onder gelys) oop
2. Doen 2 of 3 vrae met betrekking tot linked lists.
3. Beweeg aan na die volgende onderwerp.
4. Later, gaan terug en doen nog 2 of 3 linked list probleme.
5. Doen hierdie met elke nuwe onderwerp wat jy leer.
**Hou aan probleme doen terwyl jy al hierdie goed leer, nie na die tyd nie.**
2022-07-15 00:38:22 +06:00
Jy word nie aangestel vir kennis nie, maar hoe jy die kennis toepas.
Daar is baie hulpbronne vir dié glys onder. Gaan voort.
### 4. Fokus
Daar is 'n klomp afleidings wat jou kosbare tyd kan opvat. Fokus en konsentreer is moelik. Sit musiek
aan sonder lirieke en jy sal in staat wees of goed te fokus.
2022-07-15 00:41:13 +06:00
## Wat Jy Nie Sal Sien Gedek Word Nie
Hierdie is algemene tegnologie maar is nie deel van hierdie studie plan nie:
- SQL
- Javascript
- HTML, CSS, en ander front-end tegnologie.
## Die Daaglikse Plan
2022-07-15 00:46:33 +06:00
Die kursus gaan oor baie onderwerpe. Elkeen sal heerwaarskynlik jou 'n paar dae vat, of dalk tog 'n week of meer. Dit hang af van jou skedule.
Elke dag, vat die volgende onderwerp op die lys, kyk 'n paar videos oor daardie onderwerp, en dan skryf 'n implimentering
van daardie datastruktuur of algoritme in die taal wat jy gekies het vir hierdie kursus.
Jy kan my kode hier sien:
- [C](https://github.com/jwasham/practice-c)
- [C++](https://github.com/jwasham/practice-cpp)
- [Python](https://github.com/jwasham/practice-python)
2022-07-15 00:51:48 +06:00
Jy hoef nie elke algoritme the memoriseer nie. Jy moet net dit genoeg verstaan om jou eie implimenteering te skryf.
## Kodering Vrae Beoefening
Hoekom is dié hier? Ek's nie gereed vir onderhoude nie.
[Dan gaan terug en lees die.](#3-doen-kodering-onderhoud-vrae-terwyl-jy-leer)
Hoekom jy oplossings na programeringprobleme moet oefen:
- Probleem erkenning, en waar die regte datastrukture en algoritmes inpas
- Versameling van vereistes vir die probleem
2022-07-15 01:28:32 +06:00
- Praat oor hoe jy die probleem oplos soos jy sal in die onderhoud
- Kodering op 'n wit bord of papier, nie 'n rekenaar nie
- Om te formuleer wat die tyd-en-spasie-kompleksiteit vir jou oplossing is (sien Big-O onder)
- Toets jou oplossing
Daar is 'n wonderlike inleiding vir metodiese, kommunikatiewe probleem oplossing in 'n onderhoud. Jy sal dié ook van die
programmeering boeke kry, maar ek het die uitstekend gevind:
[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/)
2022-07-15 01:34:37 +06:00
Skryf kode op 'n wit bord of papier, nie 'n rekenaar nie. Toets met sommige insette. Dan tik en toets dit op 'n rekenaar.
As jy nie 'n wit bord by die huis het nie, tel 'n groot skryfblad op by die kuns winkel. Jy kan sit op die bank en oefen.
Dié is my "sofa whiteboard". Ek het die pen in die foto gesit vir skaal. As jy 'n pen gebruik gaan jy wens jy kon dit uitvee.
Word baie morsig. **Ek gebruik 'n potlood en uitveër.**
![my sofa whiteboard](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg)
**Kodering vrae oefening is nie oor oplossings van programmering probleme memoriseer nie.**
2022-07-15 01:37:09 +06:00
## Kodering Problem
Moenie jou sleutel kodering onderhoud boeke vergeet [hier](#onderhoud-voorbereidingsboeke) nie.
Probleme Oplos:
- [How to Find a Solution](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution)
- [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content)
Kodering Onderhoud Vrae Videos:
2022-07-15 01:40:15 +06:00
- [IDeserve (88 videos)](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI)
- [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd)
- Super om deur oplossings vir die kode te loop
- [Nick White - LeetCode Solutions (187 Videos)](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp-)
- Goeie verduidelikings van oplossings en die kode
- Jy kan 'n klomp kyk in 'n klein tyd
- [FisherCoder - LeetCode Solutions](https://youtube.com/FisherCoder)
- [Neetcode - BLIND 75 LeetCode Solutions](https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53ldVwtstag2TL4HQhAnC8ATf)
- Goeie verduidelikings van die oplossings en die python kode
- Sien ook [excel sheet](https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0) vir all die vrae lyste
- [Github links](https://github.com/neetcode-gh/leetcode) vir al die oplossing lyste
2022-07-15 01:43:03 +06:00
- [Neetcode 150](https://neetcode.io/)
Uitdaging webwerwe:
- [LeetCode](https://leetcode.com/)
- My gunstelling kodering platform werf. Die geld vir die intekening is die moeite werd vir die moontlike 1-2 maande se voorbereiding.
- Sien Nick White en FisherCoder Videos bo om deur die kode toe loop.
- [HackerRank](https://www.hackerrank.com/)
- [TopCoder](https://www.topcoder.com/)
- [Geeks for Geeks](https://practice.geeksforgeeks.org/explore/?page=1)
- [InterviewBit](https://www.interviewbit.com/)
2022-07-16 01:15:20 +06:00
- [Project Euler](https://projecteuler.net/)
## Begin Solank
Oraait, genoeg praat, kom ons leer!
Maar moet nie vergeet om kode probleme op te los terwyl jy leer nie!
## Algoritmiese kompleksiteit / Big-O / Asimptotiese analiese
2022-07-16 01:20:13 +06:00
- Niks hier om te implimenteer nie, jy kyk net videos en vat notas! Yay!
- Daar is baie videos hier. Kyk net genoeg tot dat jy dit verstaan. Jy kan altyd terug kom en revisie.
- Moenie bekommer as jy nie al die wiskunde verstaan nie.
- Jy moet net verstaan hoe om die kompleksiteit van 'n algoritme in terme van Big-O uit te druk.
- [ ] [Harvard CS50 - Asymptotic Notation (video)](https://www.youtube.com/watch?v=iOq5kSKqeR4)
- [ ] [Big O Notations (general quick tutorial) (video)](https://www.youtube.com/watch?v=V6mKVRU1evU)
- [ ] [Big O Notation (and Omega and Theta) - best mathematical explanation (video)](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN)
- [ ] [Skiena (video)](https://www.youtube.com/watch?v=z1mkCe3kVUA)
- [ ] [UC Berkeley Big O (video)](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98)
- [ ] [Amortized Analysis (video)](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN)
- [ ] TopCoder (includes recurrence relations and master theorem):
- [Computational Complexity: Section 1](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one)
- [Computational Complexity: Section 2](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two)
2022-07-16 01:23:17 +06:00
- [ ] [Cheat sheet](http://bigocheatsheet.com/)
Well, dis genoeg van daardie.
Wanneer jy deur "Cracking the Coding Interview" gaan, is daar 'n hoofstuk oor hierdie, en by die einde is daar 'n quiz om te sien
of jy kan identifiseer wat die runtime kompleksiteit van verskeie algoritmes is. Dis 'n super revisie en toets.
2022-07-16 01:37:32 +06:00
## Datastrukture
- ### Skikkings
- [ ] Oor Skikkings:
- [Arrays (video)](https://www.coursera.org/lecture/data-structures/arrays-OsBSF)
- [UC Berkeley CS61B - Linear and Multi-Dim Arrays (video)](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE) (Begin kyk van 15m 32s)
- [Dynamic Arrays (video)](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV)
- [Jagged Arrays (video)](https://www.youtube.com/watch?v=1jtrQqYpt7g)
- [ ] Implement 'n vektor (mutable skikking met outomatiese grootte verandering)
- [ ] Oefen kodering met skikkings en wysers, en wysers wiskunde om te spring na 'n indeks in pleks van indeksering te gebruik.
- [ ] Nuwe rou data skikking met gelokeerde geheue
- kan int skikking alokeer onder die kap, maar net nie die kenmerke gebruik nie
- begin met 16, of as begin nommer groter is, gebruik bevoegdhede van 2 - 16, 32, 64, 128
- [ ] size() - hoeveelheid items
- [ ] capacity() - hoeveelheid items dit kan hou
- [ ] is_empty()
2022-07-16 01:47:16 +06:00
- [ ] at(indeks) - lewer item by gegewende indeks, omplof as indeks buite grens is
2022-07-16 01:37:32 +06:00
- [ ] push(item)
2022-07-16 01:47:16 +06:00
- [ ] insert(indeks, item) - voeg item by indeks, skuif daardie indeks se waarde en rank elemente regs
2022-07-16 01:37:32 +06:00
- [ ] prepend(item) - kan insert hierbo gebruik by indeks 0
- [ ] pop() - verwyder van die einde, lewer waarde
2022-07-16 01:47:16 +06:00
- [ ] delete(indeks) - skrap item by indeks, skuif al rank elemente links
- [ ] remove(item) - kyk vir waarde en verwyder indeks wat dit hou (al is dit in verskeie plekke)
- [ ] find(item) - kyk vir waarde en lewer eerste indeks met daardie waarde, -1 as dit nie bestaan nie
- [ ] resize(new_capacity) // privaat funksie
- wanner jy kapasiteit bereik, verander om die grootte te dubbel
- wanneer 'n item pop, as grootte 1/4 van kapasiteit is, verander na half
- [ ] Tyd
- O(1) om te add/verwyder aan die einde (geamoriënteer vir toekening van meer spasie), indekx, of updateer
- O(n) om te voeg/skrap elders
- [ ] Spasie
2022-07-16 03:13:48 +06:00
- aaneenlopend in geheue, so nabyheid help prestasie
- spasie nodig - (skikking kapasiteit, wat >= n is) * item grootte, maar tot as dit 2n is, is dit steeds O(n)
- ### Linked Lists
- [ ] Beskrywing:
- [ ] [Singly Linked Lists (video)](https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK)
- [ ] [CS 61B - Linked Lists 1 (video)](https://archive.org/details/ucberkeley_webcast_htzJdKoEmO0)
- [ ] [CS 61B - Linked Lists 2 (video)](https://archive.org/details/ucberkeley_webcast_-c4I3gFYe3w)
- [ ] [C Code (video)](https://www.youtube.com/watch?v=QN6FPiD0Gzo)
2022-07-16 20:58:33 +06:00
- nie die hele video nie, net gedeeltes oor Node struct en geheue toekening
- [ ] Linked List vs Skikkings:
- [Core Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-linked-lists-vs-arrays-rjBs9)
- [In The Real World Linked Lists Vs Arrays (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/in-the-real-world-lists-vs-arrays-QUaUd)
- [ ] [why you suld avoid linked lists (video)](https://www.youtube.com/watch?v=YQs6IC-vgmo)
- [ ] Gotcha: Jy nodig wyser tot wyser kennis:
(vir wanneer jy 'n wyser paas na 'n funksie wat die address na waar die wyser wys verander)
Die blad is net om 'n houvas te kry op wyser na wyser. Ek beveel nie aan om hierdie lys transversale styl te lees nie. Leesbaarheid en onderhoudbaarheid ly van slimheid.
- [Wysers na Wysers](https://www.eskimo.com/~scs/cclass/int/sx8.html)
- [ ] Implement (Ek het dit gedoen met stert wyser en sonder):
2022-07-16 21:09:18 +06:00
- [ ] size() - lewer hoeveelheid data elemente in lys
- [ ] empty() - bool lewer waar as leeg
- [ ] value_at(indeks) - lewer die waarde van die nth item (begin by 0 vir eerste)
- [ ] push_front(waarde) - voeg 'n item aan die begin van die lys
- [ ] pop_front() - verwyder voorste item en lewer die waarde
- [ ] push_back(value) - voeg 'n item aan die einde
- [ ] pop_back() - verwyder laaste item en lewer die waarde
- [ ] front() - kry waarde van voorste item
- [ ] back() - kry waarde van laaste item
- [ ] insert(indeks, waarde) - voeg waarde by indeks, so huidige item by daardie indeks word gewys na deur nuwe item by daardie indeks
2022-07-16 21:14:51 +06:00
- [ ] erase(indeks) - verwyder node by gegewe indeks
- [ ] value_n_from_end(n) - lewer die waarde van die node by nth posisie van die einde van die lys af
- [ ] reverse() - keer die lys om
- [ ] remove_value(waarde) - verwyder die eerste item in die lys met dié waarde
- [ ] Doubly-linked List
- [Deskripsie (video)](https://www.coursera.org/lecture/data-structures/doubly-linked-lists-jpGKD)
- Nie nodig om te implimenteer nie
- ### Stapel
- [ ] [Stacks (video)](https://www.coursera.org/lecture/data-structures/stacks-UdKzQ)
- [ ] Sal nie implementeer nie. Implementering met skikking is maklik
- ### Queue
- [ ] [Queue (video)](https://www.coursera.org/lecture/data-structures/queues-EShpq)
2022-07-16 21:17:58 +06:00
- [ ] [Circular buffer/FIFO](https://en.wikipedia.org/wiki/Circular_buffer)
- [ ] Implementeer met linked-list, met stert wyser:
- enqueue(waarde) - voeg waarde by posisie by stert
- dequeue() - lewer waarde en verwyder die minste onlangse gevoegde element (voorkant)
- empty()
- [ ] Implementeer met vaste-grootte skikking:
2022-07-16 21:21:06 +06:00
- enqueue(value) - voeg item aan einde van beskikbare
- dequeue() - lewer waarde en verwyder minste onlangse gevoegde element
- empty()
- full()
- [ ] Cost:
- 'n Slegte implementering met linked list waar jy enqueue by die hoof en dequeue by die stert sal wees O(n)
2022-07-16 21:27:32 +06:00
want you sal die alement langs die laaste nodig hê, wat 'n volle transversal elke dequeue veroorsaak
2022-07-16 21:21:06 +06:00
- enqueue: O(1) (amortized, linked list en array [probing])
- dequeue: O(1) (linked list en array)
- empty: O(1) (linked list en array)
2022-07-16 21:22:03 +06:00
- ### Hash table
- [ ] Videos:
- [ ] [Hashing with Chaining (video)](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8)
- [ ] [Table Doubling, Karp-Rabin (video)](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
- [ ] [Open Addressing, Cryptographic Hashing (video)](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
- [ ] [PyCon 2010: The Mighty Dictionary (video)](https://www.youtube.com/watch?v=C4Kc8xzcA68)
- [ ] [PyCon 2017: The Dictionary Even Mightier (video)](https://www.youtube.com/watch?v=66P5FMkWoVU)
- [ ] [(Advanced) Randomization: Universal & Perfect Hashing (video)](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11)
- [ ] [(Advanced) Perfect hashing (video)](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4)
- [ ] Online Courses:
- [ ] [Core Hash Tables (video)](https://www.coursera.org/lecture/data-structures-optimizing-performance/core-hash-tables-m7UuP)
- [ ] [Data Structures (video)](https://www.coursera.org/learn/data-structures/home/week/4)
- [ ] [Phone Book Problem (video)](https://www.coursera.org/lecture/data-structures/phone-book-problem-NYZZP)
- [ ] distributed hash tables:
- [Instant Uploads And Storage Optimization In Dropbox (video)](https://www.coursera.org/lecture/data-structures/instant-uploads-and-storage-optimization-in-dropbox-DvaIb)
2022-07-16 21:27:32 +06:00
- [Distributed Hash Tables (video)](https://www.coursera.org/lecture/data-structures/distributed-hash-tables-tvH8H)
- [ ] Implement met 'n skikking en gebruik linear probing
- hash(k, m) - m is grootte van hash table
- add(sleutel, waarde) - as sleutel al klaar beskikbaar is, opdateer waarde
- exists(sleutel)
- get(sleutel)
- remove(sleutel)
2022-07-16 21:29:37 +06:00
## Meer Kennis
- ### Binary search
- [ ] [Binary Search (video)](https://www.youtube.com/watch?v=D5SrAga1pno)
- [ ] [Binary Search (video)](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search)
- [ ] [detail](https://www.topcoder.com/thrive/articles/Binary%20Search)
- [ ] [blueprint](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems)
- [ ] Implement:
- binary search (op 'n gesorteerde skikking van heelgetalle)
2022-07-16 21:29:55 +06:00
- binary search met recursion
- ### Bitwise operations
2022-07-16 21:32:19 +06:00
- [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf) - jy moet baie van die bevoegdhede van 2 ken van (2^1 na 2^16 na 2^32)
- [ ] Verstaan baie goed hoe om bits te manipuleer met: &, |, ^, ~, >>, <<
- [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture))
2022-07-16 21:33:43 +06:00
- [ ] Goeie intro:
2022-07-16 21:32:19 +06:00
[Bit Manipulation (video)](https://www.youtube.com/watch?v=7jkIUgLC29I)
- [ ] [C Programming Tutorial 2-10: Bitwise Operators (video)](https://www.youtube.com/watch?v=d0AwjSpNXR0)
- [ ] [Bit Manipulation](https://en.wikipedia.org/wiki/Bit_manipulation)
- [ ] [Bitwise Operation](https://en.wikipedia.org/wiki/Bitwise_operation)
- [ ] [Bithacks](https://graphics.stanford.edu/~seander/bithacks.html)
- [ ] [The Bit Twiddler](https://bits.stephan-brumme.com/)
- [ ] [The Bit Twiddler Interactive](https://bits.stephan-brumme.com/interactive.html)
2022-07-16 21:33:43 +06:00
- [ ] [Bit Hacks (video)](https://www.youtube.com/watch?v=ZusiKXcz_ac)
- [ ] [Practice Operations](https://pconrad.github.io/old_pconrad_cs16/topics/bitOps/)
- [ ] 2 en 1 se kompliment
- [Binary: Plusses & Minuses (Why We Use Two's Complement) (video)](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)
- [ ] Tel set bits
- [4 ways to count bits in a byte (video)](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)
2022-07-16 21:47:24 +06:00
- [ ] Ruil waardes:
- [Swap](https://bits.stephan-brumme.com/swap.html)
- [ ] Absolute value:
- [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html)
## Bome
- ### Bome - Notas & Agtergrond
- [ ] [Series: Trees (video)](https://www.coursera.org/lecture/data-structures/trees-95qda)
- basiese boom konstruksie
- traversal
- manipulasie algoritmes
- [ ] [BFS(breadth-first search) and DFS(depth-first search) (video)](https://www.youtube.com/watch?v=uWL6FJhq5fM)
- BFS notas:
- level order (BFS, met queue)
- tyd kompleksiteit: O(n)
- spasie kompleksiteit: beste: O(1), slegste: O(n/2)=O(n)
- DFS notas:
- tyd kompleksiteit: O(n)
- spasie kompleksiteit:
beste: O(log n) - gemidelde hoogte van boom
slegste: O(n)
- inorder (DFS: links, self, regs)
- postorder (DFS: links, regs, self)
- preorder (DFS: self, links, regs)
2022-07-18 00:35:04 +06:00
- ### Binary search trees: BSTs
2022-07-18 00:39:29 +06:00
- [ ] [Binary Search Tree Revisie (video)](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6)
- [ ] [Inleiding (video)](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction)
2022-07-18 00:35:04 +06:00
- [ ] [MIT (video)](https://www.youtube.com/watch?v=76dhtgZt38A&ab_channel=MITOpenCourseWare)
2022-07-18 00:39:29 +06:00
- C/C++:
- [ ] [Binary search tree - Implementering in C/C++ (video)](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28)
- [ ] [BST implementation - memory allocation met stapels en hope (video)](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29)
- [ ] [Kry min en max element in 'n binary search tree (video)](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P)
- [ ] [Kry hooggte van 'n binary tree (video)](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31)
- [ ] [Binary tree traversal - breadth-first en depth-first strategieë (video)](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32)
- [ ] [Binary tree: Level Order Traversal (video)](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P)
- [ ] [Binary tree traversal: Preorder, Inorder, Postorder (video)](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P)
- [ ] [Kyk of 'n binary tree 'b binary search tree is of nie(video)](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P)
- [ ] [Verwyder 'n node van 'n Binary Search Tree (video)](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36)
2022-07-18 00:46:31 +06:00
- [ ] [Inorder Successor in 'n binary search tree (video)](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P)
- [ ] Implement:
- [ ] insert // vog 'n waarde in 'n boom
- [ ] get_node_count // kry hoeveelheid waardes gestoor is
- [ ] print_values // print die waardes in die boom, van min na max
- [ ] delete_tree
- [ ] is_in_tree // waar wanneer 'n gegewende waarde in 'n boom is
- [ ] get_height // gee die hooggte in nodes (enkel node se hooggte is 1)
- [ ] get_min // gee die minimum waarde wat gestoor is in die boom
- [ ] get_max // gee die maksimum waarde wat gestoor is in die boom
- [ ] is_binary_search_tree
- [ ] delete_value
- [ ] get_successor // gee volgende hoogste waarde in die boom na die gegewende waarde, -1 as niks
2022-07-18 00:50:43 +06:00
- ### Heap / Priority Queue / Binary Heap
- gevisualiseer as 'n boom, maar is gewoonlik lineêr gestoor (skikking, linked list)
- [ ] [Heap](https://en.wikipedia.org/wiki/Heap_(data_structure))
- [ ] [Inleiding (video)](https://www.coursera.org/lecture/data-structures/introduction-2OpTs)
- [ ] [Naïef implementering (video)](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations)
- [ ] [Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees)
- [ ] [Tree Height Remark (video)](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark)
- [ ] [Basese operasies (video)](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations)
- [ ] [Complete Binary Trees (video)](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees)
- [ ] [Pseudokode (video)](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode)
- [ ] [Heap Sort - spring na begin (video)](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291)
- [ ] [Heap Sort (video)](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO)
- [ ] [Bou 'n heap (video)](https://www.coursera.org/lecture/data-structures/building-a-heap-dwrOS)
- [ ] [MIT: Heaps en Heap Sort (video)](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
- [ ] [CS 61B Lecture 24: Priority Queues (video)](https://archive.org/details/ucberkeley_webcast_yIUFT6AKBGE)
- [ ] [Lineêr Tyd BuildHeap (max-heap)](https://www.youtube.com/watch?v=MiyLo8adrWw)
- [ ] Implementeer 'n max-heap:
- [ ] insert
2022-07-18 00:55:48 +06:00
- [ ] sift_up - nodig vir insert
- [ ] get_max - gee die max item, sonder om dit te verwyder
- [ ] get_size() - gee hoeveelheid elemente gestoor is
- [ ] is_empty() - waar as heap geen elemente het nie
- [ ] extract_max - gee max item, en verwyder dit
- [ ] sift_down - nodig vir extract_max
- [ ] remove(x) - verwyder item by indeks x
- [ ] heapify - maak 'h heap van 'n skikking elemente, nodig vir heap_sort
- [ ] heap_sort() - vat 'n ongesorteerde skikking en verander dit na 'n gesorteerde skikking in-plek met 'n max heap of 'n min heap
2022-07-18 00:50:43 +06:00
2022-07-18 01:00:42 +06:00
## Sorteer
2022-07-18 00:50:43 +06:00
2022-07-18 01:00:42 +06:00
- [ ] Notas:
- Implementeer soterings & weet wat die beste/slegste gevalle is, gemidelde kompleksiteite van elk:
- geen bubble sort - dis verskriklik sleg - O(n^2), behalwe wanneer n <= 16
- [ ] Stabiliteit in sorteer algoritmes ("Is Quicksort stabiel?")
2022-07-18 00:50:43 +06:00
- [Sorting Algorithm Stability](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability)
- [Stability In Sorting Algorithms](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms)
- [Stability In Sorting Algorithms](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/)
- [Sorting Algorithms - Stability](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf)
2022-07-18 01:00:42 +06:00
- [ ] Watse algoritmes kan op linked lists gebruik word? Watses op arrays? Watses op beide?
- I sal nie aan beveel om 'n linked list te sorteer nie, maar merge sort is doenbaar
2022-07-18 01:01:50 +06:00
- [Merge Sort For Linked List](http://www.geeksforgeeks.org/merge-sort-for-linked-list/)
- Vir heapsort, sien Heap datastruktuur bo. Heap sort is fantasties, maar nie stabiel
- [ ] [Sedgewick - Mergesort (5 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3)
- [ ] [1. Mergesort](https://www.coursera.org/lecture/algorithms-part1/mergesort-ARWDq)
- [ ] [2. Bottom up Mergesort](https://www.coursera.org/learn/algorithms-part1/lecture/PWNEl/bottom-up-mergesort)
- [ ] [3. Sorting Complexity](https://www.coursera.org/lecture/algorithms-part1/sorting-complexity-xAltF)
- [ ] [4. Comparators](https://www.coursera.org/lecture/algorithms-part1/comparators-9FYhS)
2022-07-18 01:02:09 +06:00
- [ ] [5. Stability](https://www.coursera.org/learn/algorithms-part1/lecture/pvvLZ/stability)
- [ ] [Sedgewick - Quicksort (4 videos)](https://www.coursera.org/learn/algorithms-part1/home/week/3)
- [ ] [1. Quicksort](https://www.coursera.org/learn/algorithms-part1/lecture/vjvnC/quicksort)
- [ ] [2. Selection](https://www.coursera.org/lecture/algorithms-part1/selection-UQxFT)
- [ ] [3. Duplicate Keys](https://www.coursera.org/lecture/algorithms-part1/duplicate-keys-XvjPd)
2022-07-18 01:02:38 +06:00
- [ ] [4. System Sorts](https://www.coursera.org/lecture/algorithms-part1/system-sorts-QBNZ7)
- [ ] UC Berkeley:
- [ ] [CS 61B Lecture 29: Sorting I (video)](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I)
- [ ] [CS 61B Lecture 30: Sorting II (video)](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk)
- [ ] [CS 61B Lecture 32: Sorting III (video)](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc)
- [ ] [CS 61B Lecture 33: Sorting V (video)](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4)
- [ ] [Bubble Sort (video)](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB)
- [ ] [Analyzing Bubble Sort (video)](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB)
- [ ] [Insertion Sort, Merge Sort (video)](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb)
- [ ] [Insertion Sort (video)](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB)
- [ ] [Merge Sort (video)](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB)
- [ ] [Quicksort (video)](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB)
2022-07-18 01:03:00 +06:00
- [ ] [Selection Sort (video)](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB)
- [ ] Merge sort kode:
- [ ] [Using output array (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c)
- [ ] [Using output array (Python)](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py)
- [ ] [In-place (C++)](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc)
- [ ] Quick sort kode:
- [ ] [Implementation (C)](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c)
- [ ] [Implementation (C)](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c)
2022-07-18 01:04:37 +06:00
- [ ] [Implementation (Python)](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py)
- [ ] Implementeer:
- [ ] Mergesort: O(n log n) gemiddelde en slegste gevalle
2022-07-18 01:13:34 +06:00
- [ ] Quicksort O(n log n) gemiddelde geval
- Selection sort en insertion sort is albei O(n^2) gemiddeld en slegste gevalle
- Vir heapsort, sien Heap datastrukture bo
- [ ] Nie nodig nie, maar ek beveel hulle aan:
- [ ] [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)
- [ ] [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)
2022-07-18 02:38:39 +06:00
- [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14)
As 'n opsomming, hier is 'n visuele verteenwoordiging van [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg).
As jy nog detail nodig het op hierdie onderwer, sien "Sorteer" seksie in [Bykomende Detail op Sommige Vakke](#bykomende-detail-op-sommige-vakke)
## Grafieke
Grafieke kan gebruik word om baie problmeme in rekenaar wetenskap te verteenwoordig, so die seksie is lank, soos bome en sortering was.
2022-07-18 02:43:59 +06:00
- Notas:
- Daar is 4 basiese maniere om 'n grafiek in geheue te verteenwoordig:
- objects and pointers
- adjacency matrix
- adjacency list
- adjacency map
- Familiariseer jouself met elke verteenwoordiging en sy voor- en nadele
- BFS en DFS - ken hulle computational kompleksiteit, hulle ruilings-waardes, en hoe om hulle te implimenteer in regte kode
- Wanner 'n vraag gevra word, kyk vir 'n grafiek-gebaseerde oplossing eerste, dan begeen aan as niks
2022-07-18 02:44:26 +06:00
- [ ] 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)
- [ ] 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)
2022-07-18 02:45:09 +06:00
- [ ] [CSE373 2020 - Lecture 15 - Graph Algorithms (con't 2) (video)](https://www.youtube.com/watch?v=MUe5DXRhyAo&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=15)
- [ ] Graphs (revisie en meer):
- [ ] [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)
2022-07-18 02:48:32 +06:00
- Full Coursera Kursus:
- [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome)
- Ek sou implimenteer:
- [ ] DFS met adjacency list (recursive)
- [ ] DFS met adjacency list (iterative met stack)
- [ ] DFS met adjacency matrix (recursive)
- [ ] DFS met adjacency matrix (iterative met stack)
- [ ] BFS met adjacency list
- [ ] BFS met adjacency matrix
- [ ] single-source shortest path (Dijkstra)
- [ ] minimum spanning tree
- DFS-based algorithms (sien Aduni videos bo):
- [ ] kyk vir cycle (nodig vir topological sort, aangesien ons wil kyk vir 'n cycle voordat ons begin)
- [ ] topological sort
- [ ] tel gekoppelde komponente in 'n grafiek
- [ ] lys sterk gokoppelde komponente
2022-07-18 02:49:57 +06:00
- [ ] kyk vir bipartite graph
## Nog Meer Kennis
- ### Recursion
- [ ] Stanford lesings oor 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)
2022-07-19 00:41:56 +06:00
- [ ] [Lecture 11 | Programming Abstractions (video)](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11)
- Wanneer is dit gepas om te gebruik?
- Hoe is sterk recursion beter as nie?
- [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad)
- [ ] [Tail Recursion (video)](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1)
- [ ] [5 Simple Steps for Solving Any Recursive Problem(video)](https://youtu.be/ngCos392W4w)
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))
2022-07-19 00:49:14 +06:00
[Python](https://leetcode.com/problems/combination-sum/discuss/429538/General-Backtracking-questions-solutions-in-Python-for-reference-%3A)
- ### Dinamiese Programering
- Jy sal heelwaarskynlik geen dinamiese probleme in die onderhoud sien nie, maar dis die moeite werd om
'n probleem te herken as 'n dinamiese programering probleem.
- Hierde onderwerp kan redelik moeilik wees, omdat elke DP oplosbare probleem gedefinieer moet word as 'n recursion verhouding, en om daarmee op te kom is moeilik.
- Ek beveel aan om na soveel DP probleme te kyk as moontlik tot dat jy 'n goeie begrip van die patroon het.
- [ ] 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)
- [ ] List of individual DP problems (each is short):
[Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr)
- [ ] Yale Lecture notes:
- [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming)
- [ ] 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)
2022-07-19 00:50:32 +06:00
- [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment)
- ### Ontwerp patrone
- [ ] [Quick UML review (video)](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3)
- [ ] Leer hierdie patrone:
- [ ] strategy
- [ ] singleton
- [ ] adapter
- [ ] prototype
- [ ] decorator
- [ ] visitor
- [ ] factory, abstract factory
- [ ] facade
- [ ] observer
- [ ] proxy
- [ ] delegate
- [ ] command
- [ ] state
- [ ] memento
- [ ] iterator
- [ ] composite
- [ ] flyweight
- [ ] [Series of videos (27 videos)](https://www.youtube.com/playlist?list=PLF206E906175C7E07)
2022-07-19 00:54:00 +06:00
- [ ] [Book: Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124)
- Ek weet die kanonieke boek is "Design Patterns: Elements of Reusable Object-Orientated Software", maar Head First is 'n goeie begin na OO ook.
- [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips)
- ### Kombinatorika (n kies k) & Probability
- [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U)
- [ ] [Make School: Probability (video)](https://www.youtube.com/watch?v=sZkAAk9Wwa4)
- [ ] [Make School: More Probability and Markov Chains (video)](https://www.youtube.com/watch?v=dNaJg-mLobQ)
- [ ] Khan Academy:
- Kursus uitleg:
- [ ] [Basic Theoretical Probability](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic)
- Net die videos - 41 (elkeen is eenvoudig en elkeen is kort):
2022-07-19 00:57:35 +06:00
- [ ] [Probability Explained (video)](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19)
- ### NP, NP-Complete en Approximation Algorithms
- Ken die mees beroemde klasse van NP-complete probleme, soos traveling salesman en die knapsack probleem,
en wees reg om hulle the herken wanneer 'n onderhoudvoerder jou vir hulle vra in vermomming.
- Ken wat NP-complete beteken.
- [ ] [Computational Complexity (video)](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23)
- [ ] Simonson:
- [ ] [Greedy Algs. II & Intro to NP Completeness (video)](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939)
- [ ] [NP Completeness II & Reductions (video)](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
- [ ] [NP Completeness III (Video)](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
- [ ] [NP Completeness IV (video)](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18)
- [ ] 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)
2022-07-19 00:59:47 +06:00
- [ ] [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)
- Peter Norvig bespreek amper-optimale oplossings vir die travaling salesman probleem:
- [Jupyter Notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb)
- Bladsye 1048 - 1140 in CLRS as jy dit het.
- ### Hoe rekenare 'n program proses
- [ ] [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)
2022-07-19 01:02:32 +06:00
- [ ] [Instructions and Programs (video)](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)
- [ ] 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-)
- ### Prosesse en Threads
- [ ] Rekenaar Wetenskap 162 - Operating Systems (25 videos):
- vir prosesse en threads sien videos 1-11
- [Operating Systems and System Programming (video)](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)
- Dek:
- Prosesse, Threads, Concurrency kwessies
- Verskil tussen prosesse en threads
- Prosesse
- Threads
- Locks
- Mutexes
- Semaphores
- Monitors
- How they work?
- Deadlock
2022-07-19 01:10:09 +06:00
- Livelock
- CPU aktiwiteit, onderbrekings, konteks verandering
- Moderne concurrency konstrukte met multicore prosesse
- [Paging, segmentation and virtual memory (video)](https://youtu.be/O4nwUqQodAg)
- [Interrupts (video)](https://youtu.be/iKlAWIKEyuw)
- Prosess hulpbronne benodighede (geheue: kode, statiese stoor, stack, heap, en ook file descriptors, i/o)
- Thread hulpbronne benodighede (deel boonstes (minus stack) met ander threads in die selfde proses maar elk het sy eie pc, stack counter, registers, en stack)
- Vurk is regtig net 'n kopie op skryf (net-lees) tot dat 'n nuwe proses na die geheue skryf, dan doen dit 'n vol kopie.
- Konteks verandering
- Koe konteks verandering geïnisieer word deur 'n operating sisteem en onderliggende hardeware?