# Piscine Go curriculum --- ## Week One ### Quest 1 #### Introduction to shell Notions: basic usage and interaction with a command line terminal. Videos: - 1-2 `curl` with the GitHub api and Example of shell file | https://www.youtube.com/watch?v=A0Mqc215igw - 1-3 `touch`, `chmod` and `echo` | https://www.youtube.com/watch?v=21h-vsuXgDU - 1-4 `find` and `grep` | https://www.youtube.com/watch?v=7a1JSWHhJlM - 1-5 `cut`, `sed` and `tr` | https://www.youtube.com/watch?v=Nil7rVP3eMI - 1-6 `jq` and `wc` | https://www.youtube.com/watch?v=cQmcaOseuiA& Exercices: - introduction | https://public.01-edu.org/subjects/introduction - make-it-better | https://public.01-edu.org/subjects/make-it-better - to-git-or-not-to-git | https://public.01-edu.org/subjects/to-git-or-not-to-git - who-are-you | https://public.01-edu.org/subjects/who-are-you - cl-camp1 | https://public.01-edu.org/subjects/cl-camp1 - cl-camp2 | https://public.01-edu.org/subjects/cl-camp2 - cl-camp3 | https://public.01-edu.org/subjects/cl-camp3 - cl-camp4 | https://public.01-edu.org/subjects/cl-camp4 - cl-camp5 | https://public.01-edu.org/subjects/cl-camp5 - cl-camp6 | https://public.01-edu.org/subjects/cl-camp6 - cl-camp7 | https://public.01-edu.org/subjects/cl-camp7 - cl-camp8 | https://public.01-edu.org/subjects/cl-camp8 - now-get-to-work | https://public.01-edu.org/subjects/now-get-to-work ### Quest 2 #### Introduction to Go Lang and basic programmation concepts Notions: Variables declaration, Loops, if and else statement, usage of z01.PrintRune function. Videos: - 02-01-If and Else Statements in Go | https://www.youtube.com/watch?v=rnF1_SfeGE4 - 02-02-ForLoops | https://www.youtube.com/watch?v=Bt47lx6q2-4 - 02-03-PrintRune function | https://www.youtube.com/watch?v=o8JrvI3jqoM - 02-04-Variables Declaration and ascii | https://www.youtube.com/watch?v=RCNOV8m0hJQ Exercices: - printalphabet | https://public.01-edu.org/subjects/printalphabet - printreversealphabet | https://public.01-edu.org/subjects/printreversealphabet - prindigits | https://public.01-edu.org/subjects/printdigits - isnegative | https://public.01-edu.org/subjects/isnegative - printcomb | https://public.01-edu.org/subjects/printcomb - printcomb2 | https://public.01-edu.org/subjects/printcomb2 - printnbr | https://public.01-edu.org/subjects/printnbr - printcombn | https://public.01-edu.org/subjects/printcombn ### Quest 3 #### Introduction to Go Lang and basic programmation concepts II Notions: String Manupulation, Range Loops, Pointers, Modulo and Division relative to computer science. Videos: - 03-01-StringsManipulation | https://www.youtube.com/watch?v=8LplJN_8iOU - 03-02-RangeLoop | https://www.youtube.com/watch?v=i89N4cjh1-g - 03-03-Pointers on variables | https://www.youtube.com/watch?v=owVPa5b1BMc - 03-04-Modulo and Division | https://www.youtube.com/watch?v=NVan-9-Ioec Exercices: - pointone | https://public.01-edu.org/subjects/pointone - ultimatepointone | https://public.01-edu.org/subjects/ultimatepointone - divmod | https://public.01-edu.org/subjects/divmod - ultimatedivmod | https://public.01-edu.org/subjects/ultimatedivmod - printstr | https://public.01-edu.org/subjects/printstr - strlen | https://public.01-edu.org/subjects/strlen - swap | https://public.01-edu.org/subjects/swap - strrev | https://public.01-edu.org/subjects/strrev - basicatoi | https://public.01-edu.org/subjects/basicatoi - basicatoi2 | https://public.01-edu.org/subjects/basicatoi2 - atoi | https://public.01-edu.org/subjects/atoi - sortintegerable | https://public.01-edu.org/subjects/sortintegertable ### Exam 1 (4hours) #### Basic functions and programs skills evaluation, based on Quest 2 and Quest 3 ### Raid 1 - Square Drawing #### First Group project. Problem resolution. Usage of first knowledge (loop and if/else) --- ## Week Two ### Quest 4 #### Algorithmia concepts Notions: Iterative and recursive programmation Videos: - 04-01-Iterativity and Recursivity | https://www.youtube.com/watch?v=oCZDdAID5Ik Exercices: - iterativefactorial | https://public.01-edu.org/subjects/iterativefactorial - recursivefactorial | https://public.01-edu.org/subjects/recursivefactorial - iterativepower | https://public.01-edu.org/subjects/iterativepower - recursivepower | https://public.01-edu.org/subjects/recursivepower - fibonacci | https://public.01-edu.org/subjects/fibonacci - sqrt | https://public.01-edu.org/subjects/sqrt - isprime | https://public.01-edu.org/subjects/isprime - findnextprime | https://public.01-edu.org/subjects/findnextprime - eightqueens | https://public.01-edu.org/subjects/eightqueens ### Quest 5 #### Application of previously viewed concepts. Notions: String Manipulation and medium-advanced algorithmia Videos: - 05-01-Runes, Bytes and Strings | https://www.youtube.com/watch?v=-eIU5ISID64 Exercices: - firstrune | https://public.01-edu.org/subjects/firstrune - nrune | https://public.01-edu.org/subjects/nrune - lastrune | https://public.01-edu.org/subjects/lastrune - index | https://public.01-edu.org/subjects/index - compare | https://public.01-edu.org/subjects/compare - toupper | https://public.01-edu.org/subjects/toupper - tolower | https://public.01-edu.org/subjects/tolower - capitalize | https://public.01-edu.org/subjects/capitalize - isalpha | https://public.01-edu.org/subjects/isalpha - isnumeric | https://public.01-edu.org/subjects/isnumeric - islower | https://public.01-edu.org/subjects/islower - isupper | https://public.01-edu.org/subjects/isupper - isprintable | https://public.01-edu.org/subjects/isprintable - concat | https://public.01-edu.org/subjects/concat - basicjoin | https://public.01-edu.org/subjects/basicjoin - join | https://public.01-edu.org/subjects/join - printnbrbase | https://public.01-edu.org/subjects/printnbrbase - atoibase | https://public.01-edu.org/subjects/atoibase ### Quest 6 #### Usage of OS.Args Notions: Arguments manipulation in programs Videos: - 06-01-Os.Args | https://www.youtube.com/watch?v=I1xt_TLRhF0 Exercices: - printprogramname | https://public.01-edu.org/subjects/printprogramname - printparams | https://public.01-edu.org/subjects/printparams - revparams | https://public.01-edu.org/subjects/revparams - sortparams | https://public.01-edu.org/subjects/sortparams ### Quest 7 #### The Memory Allocation in GoLang Notions: Usage of Make and Append Videos: - 07-01-Make and Append methods | https://www.youtube.com/watch?v=2HHVUM0YQuI Exercices: - appendrange | https://public.01-edu.org/subjects/apprendrange - makerange | https://public.01-edu.org/subjects/makerange - concatparams | https://public.01-edu.org/subjects/concatparams - splitwhitespaces | https://public.01-edu.org/subjects/splitwhitespaces - printwordstables | https://public.01-edu.org/subjects/printwordstables - convertbase | https://public.01-edu.org/subjects/converbase - split | https://public.01-edu.org/subjects/split ### Exam 2 (4hours) #### Basic functions and programs skills evaluation, based on Quest 2 and Quest 6 ### Raid 2 - Sudoku #### Second Group project. Problem resolution. Usage of Memory manipulation tools --- ## Week Three ### Quest 8 #### Introduction to Structures and advanced types in GoLang Notions: Creation of struct types and file manipulation (Open, Read, Close methods) Videos: - 08-01-Structures in Go | https://www.youtube.com/watch?v=-24M7r7VuLY - 08-02-File Manipulation in go | https://www.youtube.com/watch?v=8vUgchQGhcQ Exercices: - bool | https://public.01-edu.org/subjects/bool - point | https://public.01-edu.org/subjects/point - displayfile | https://public.01-edu.org/subjects/displayfile - cat | https://public.01-edu.org/subjects/cat - ztail | https://public.01-edu.org/subjects/ztail ### Quest 9 #### Functions as argument Notions: Advance function prototyping Videos: - 09-01-Functions as Arguments | https://www.youtube.com/watch?v=lw8jUwsluAE Exercices: - foreach | https://public.01-edu.org/subjects/foreach - map | https://public.01-edu.org/subjects/map - any | https://public.01-edu.org/subjects/any - countif | https://public.01-edu.org/subjects/countif - issorted | https://public.01-edu.org/subjects/issorted - doop | https://public.01-edu.org/subjects/doop - sortwordarr | https://public.01-edu.org/subjects/sortwordarr - advancedsortwordarr | https://public.01-edu.org/subjects/advancedsortwordarr ### Quest 10 #### Hackathon Notions: All previously viewed concepts in team work Exercices: - rot14 | https://public.01-edu.org/subjects/rot14 - abort | https://public.01-edu.org/subjects/abort - collatzcountdown | https://public.01-edu.org/subjects/collatzcountdown - comcheck | https://public.01-edu.org/subjects/comcheck - enigma | https://public.01-edu.org/subjects/enigma - pilot | https://public.01-edu.org/subjects/pilot - fixthemain | https://public.01-edu.org/subjects/fixthemain - compact | https://public.01-edu.org/subjects/compact - activebits | https://public.01-edu.org/subjects/activebits - max | https://public.01-edu.org/subjects/max - join | https://public.01-edu.org/subjects/join - unmatch | https://public.01-edu.org/subjects/unmatch ### Exam 3 (4hours) #### Basic functions and programs skills evaluation, based on Quest 2 and Quest 8 ### Raid 3 - File Reader #### Second Group project. Problem resolution. File manipulation based on Raid 1 --- ## Week Four ### Quest 11 #### Linked lists in GoLang Notions: Pointers manipulation and data structure Videos: - 11-01-Linked Lists Introduction | https://www.youtube.com/watch?v=EPICVEbylU0 Exercices: - listpushback | https://public.01-edu.org/subjects/listpushback - listpushfront | https://public.01-edu.org/subjects/listpushfront - listsize | https://public.01-edu.org/subjects/listsize - listlast | https://public.01-edu.org/subjects/listlast - listclear | https://public.01-edu.org/subjects/listclear - listat | https://public.01-edu.org/subjects/listat - listreverse | https://public.01-edu.org/subjects/listreverse - listforeach | https://public.01-edu.org/subjects/listforeach - listforeachif | https://public.01-edu.org/subjects/listforeachif - listfind | https://public.01-edu.org/subjects/listfind - listremoveif | https://public.01-edu.org/subjects/listremoveif - listmerge | https://public.01-edu.org/subjects/listmerge - listsort | https://public.01-edu.org/subjects/listsort - sortlistinsert | https://public.01-edu.org/subjects/sortlistinsert - sortedlistmerge | https://public.01-edu.org/subjects/sortedlistmerge ### Quest 12 #### Binary Trees Notions: Advanced Data Structure using binary trees Videos: - 12-01-Introduction to Binary Trees | https://www.youtube.com/watch?v=3g2WCqWNIVs Exercices: - btreeinsertdata | https://public.01-edu.org/subjects/btreeinsertdata - btreeapplyinorder | https://public.01-edu.org/subjects/btreeapplyinorder - btreeapplypreorder | https://public.01-edu.org/subjects/btreeapplypreorder - btreesearchitem | https://public.01-edu.org/subjects/btreesearchitem - btreelevelcount | https://public.01-edu.org/subjects/btreelevelcount - btreeisbinary | https://public.01-edu.org/subjects/btreeisbinary - btreeapplylevel | https://public.01-edu.org/subjects/btreeapplylevel - btreemax | https://public.01-edu.org/subjects/btreemax - btreemin | https://public.01-edu.org/subjects/btreemin - btreetransplant | https://public.01-edu.org/subjects/btreetransplant - btreedeletenode | https://public.01-edu.org/subjects/btreedeletenode ### Exam 4 - Final Exam (8hours) #### Functions and programs skills evaluation, based on Quest 2 and Quest 11