# Piscine Go curriculum

---

## Week One

### Quest 1

#### Introduction to shell

Notions: basic usage and interaction with a command line terminal.

Videos:

- [1-2](https://www.youtube.com/watch?v=A0Mqc215igw) `curl` with the GitHub api and Example of shell file
- [1-3](https://www.youtube.com/watch?v=21h-vsuXgDU) `touch`, `chmod` and `echo`
- [1-4](https://www.youtube.com/watch?v=7a1JSWHhJlM) `find` and `grep`
- [1-5](https://www.youtube.com/watch?v=Nil7rVP3eMI) `cut`, `sed` and `tr`
- [1-6](https://www.youtube.com/watch?v=cQmcaOseuiA&) `jq` and `wc`

Exercices:

- [introduction](https://github.com/01-edu/public/tree/master/subjects/introduction/README.md)
- [make-it-better](https://github.com/01-edu/public/tree/master/subjects/make-it-better/README.md)
- [to-git-or-not-to-git](https://github.com/01-edu/public/tree/master/subjects/to-git-or-not-to-git/README.md)
- [who-are-you](https://github.com/01-edu/public/tree/master/subjects/who-are-you/README.md)
- [cl-camp1](https://github.com/01-edu/public/tree/master/subjects/cl-camp1/README.md)
- [cl-camp2](https://github.com/01-edu/public/tree/master/subjects/cl-camp2/README.md)
- [cl-camp3](https://github.com/01-edu/public/tree/master/subjects/cl-camp3/README.md)
- [cl-camp4](https://github.com/01-edu/public/tree/master/subjects/cl-camp4/README.md)
- [cl-camp5](https://github.com/01-edu/public/tree/master/subjects/cl-camp5/README.md)
- [cl-camp6](https://github.com/01-edu/public/tree/master/subjects/cl-camp6/README.md)
- [cl-camp7](https://github.com/01-edu/public/tree/master/subjects/cl-camp7/README.md)
- [cl-camp8](https://github.com/01-edu/public/tree/master/subjects/cl-camp8/README.md)
- [now-get-to-work](https://github.com/01-edu/public/tree/master/subjects/now-get-to-work/README.md)

### 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](https://www.youtube.com/watch?v=rnF1_SfeGE4) and Else Statements in Go
- [02-02-ForLoops](https://www.youtube.com/watch?v=Bt47lx6q2-4)
- [02-03-PrintRune](https://www.youtube.com/watch?v=o8JrvI3jqoM) function
- [02-04-Variables](https://www.youtube.com/watch?v=RCNOV8m0hJQ) Declaration and ascii

Exercices:

- [printalphabet](https://github.com/01-edu/public/tree/master/subjects/printalphabet/README.md)
- [printreversealphabet](https://github.com/01-edu/public/tree/master/subjects/printreversealphabet/README.md)
- [prindigits](https://github.com/01-edu/public/tree/master/subjects/printdigits/README.md)
- [isnegative](https://github.com/01-edu/public/tree/master/subjects/isnegative/README.md)
- [printcomb](https://github.com/01-edu/public/tree/master/subjects/printcomb/README.md)
- [printcomb2](https://github.com/01-edu/public/tree/master/subjects/printcomb2/README.md)
- [printnbr](https://github.com/01-edu/public/tree/master/subjects/printnbr/README.md)
- [printcombn](https://github.com/01-edu/public/tree/master/subjects/printcombn/README.md)

### 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](https://www.youtube.com/watch?v=owVPa5b1BMc) on variables
- [03-04-Modulo](https://www.youtube.com/watch?v=NVan-9-Ioec) and Division

Exercices:

- [pointone](https://github.com/01-edu/public/tree/master/subjects/pointone/README.md)
- [ultimatepointone](https://github.com/01-edu/public/tree/master/subjects/ultimatepointone/README.md)
- [divmod](https://github.com/01-edu/public/tree/master/subjects/divmod/README.md)
- [ultimatedivmod](https://github.com/01-edu/public/tree/master/subjects/ultimatedivmod/README.md)
- [printstr](https://github.com/01-edu/public/tree/master/subjects/printstr/README.md)
- [strlen](https://github.com/01-edu/public/tree/master/subjects/strlen/README.md)
- [swap](https://github.com/01-edu/public/tree/master/subjects/swap/README.md)
- [strrev](https://github.com/01-edu/public/tree/master/subjects/strrev/README.md)
- [basicatoi](https://github.com/01-edu/public/tree/master/subjects/basicatoi/README.md)
- [basicatoi2](https://github.com/01-edu/public/tree/master/subjects/basicatoi2/README.md)
- [atoi](https://github.com/01-edu/public/tree/master/subjects/atoi/README.md)
- [sortintegerable](https://github.com/01-edu/public/tree/master/subjects/sortintegertable/README.md)

### 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

#### Algorithm concepts

Notions: Iterative and recursive programmation

Videos:

- [04-01-Iterativity and Recursivity](https://www.youtube.com/watch?v=oCZDdAID5Ik)

Exercices:

- [iterativefactorial](https://github.com/01-edu/public/tree/master/subjects/iterativefactorial/README.md)
- [recursivefactorial](https://github.com/01-edu/public/tree/master/subjects/recursivefactorial/README.md)
- [iterativepower](https://github.com/01-edu/public/tree/master/subjects/iterativepower/README.md)
- [recursivepower](https://github.com/01-edu/public/tree/master/subjects/recursivepower/README.md)
- [fibonacci](https://github.com/01-edu/public/tree/master/subjects/fibonacci/README.md)
- [sqrt](https://github.com/01-edu/public/tree/master/subjects/sqrt/README.md)
- [isprime](https://github.com/01-edu/public/tree/master/subjects/isprime/README.md)
- [findnextprime](https://github.com/01-edu/public/tree/master/subjects/findnextprime/README.md)
- [eightqueens](https://github.com/01-edu/public/tree/master/subjects/eightqueens/README.md)

### Quest 5

#### Application of previously viewed concepts.

Notions: String Manipulation and medium-advanced algorithms

Videos:

- [05-01-Runes](https://www.youtube.com/watch?v=-eIU5ISID64), Bytes and Strings

Exercices:

- [firstrune](https://github.com/01-edu/public/tree/master/subjects/firstrune/README.md)
- [nrune](https://github.com/01-edu/public/tree/master/subjects/nrune/README.md)
- [lastrune](https://github.com/01-edu/public/tree/master/subjects/lastrune/README.md)
- [index](https://github.com/01-edu/public/tree/master/subjects/index/README.md)
- [compare](https://github.com/01-edu/public/tree/master/subjects/compare/README.md)
- [toupper](https://github.com/01-edu/public/tree/master/subjects/toupper/README.md)
- [tolower](https://github.com/01-edu/public/tree/master/subjects/tolower/README.md)
- [capitalize](https://github.com/01-edu/public/tree/master/subjects/capitalize/README.md)
- [isalpha](https://github.com/01-edu/public/tree/master/subjects/isalpha/README.md)
- [isnumeric](https://github.com/01-edu/public/tree/master/subjects/isnumeric/README.md)
- [islower](https://github.com/01-edu/public/tree/master/subjects/islower/README.md)
- [isupper](https://github.com/01-edu/public/tree/master/subjects/isupper/README.md)
- [isprintable](https://github.com/01-edu/public/tree/master/subjects/isprintable/README.md)
- [concat](https://github.com/01-edu/public/tree/master/subjects/concat/README.md)
- [basicjoin](https://github.com/01-edu/public/tree/master/subjects/basicjoin/README.md)
- [join](https://github.com/01-edu/public/tree/master/subjects/join/README.md)
- [printnbrbase](https://github.com/01-edu/public/tree/master/subjects/printnbrbase/README.md)
- [atoibase](https://github.com/01-edu/public/tree/master/subjects/atoibase/README.md)

### 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://github.com/01-edu/public/tree/master/subjects/printprogramname/README.md)
- [printparams](https://github.com/01-edu/public/tree/master/subjects/printparams/README.md)
- [revparams](https://github.com/01-edu/public/tree/master/subjects/revparams/README.md)
- [sortparams](https://github.com/01-edu/public/tree/master/subjects/sortparams/README.md)

### Quest 7

#### The Memory Allocation in GoLang

Notions: Usage of Make and Append

Videos:

- [07-01-Make](https://www.youtube.com/watch?v=2HHVUM0YQuI) and Append methods

Exercices:

- [appendrange](https://github.com/01-edu/public/tree/master/subjects/apprendrange/README.md)
- [makerange](https://github.com/01-edu/public/tree/master/subjects/makerange/README.md)
- [concatparams](https://github.com/01-edu/public/tree/master/subjects/concatparams/README.md)
- [splitwhitespaces](https://github.com/01-edu/public/tree/master/subjects/splitwhitespaces/README.md)
- [printwordstables](https://github.com/01-edu/public/tree/master/subjects/printwordstables/README.md)
- [convertbase](https://github.com/01-edu/public/tree/master/subjects/converbase/README.md)
- [split](https://github.com/01-edu/public/tree/master/subjects/split/README.md)

### Exam 2 (4hours)

#### Basic functions and programs skills evaluation, based on all the quests from 2 to 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](https://www.youtube.com/watch?v=-24M7r7VuLY) in Go
- [08-02-File](https://www.youtube.com/watch?v=8vUgchQGhcQ) Manipulation in go

Exercices:

- [bool](https://github.com/01-edu/public/tree/master/subjects/bool/README.md)
- [point](https://github.com/01-edu/public/tree/master/subjects/point/README.md)
- [displayfile](https://github.com/01-edu/public/tree/master/subjects/displayfile/README.md)
- [cat](https://github.com/01-edu/public/tree/master/subjects/cat/README.md)
- [ztail](https://github.com/01-edu/public/tree/master/subjects/ztail/README.md)

### Quest 9

#### Functions as argument

Notions: Advance function prototyping

Videos:

- [09-01-Functions](https://www.youtube.com/watch?v=lw8jUwsluAE) as Arguments

Exercices:

- [foreach](https://github.com/01-edu/public/tree/master/subjects/foreach/README.md)
- [map](https://github.com/01-edu/public/tree/master/subjects/map/README.md)
- [any](https://github.com/01-edu/public/tree/master/subjects/any/README.md)
- [countif](https://github.com/01-edu/public/tree/master/subjects/countif/README.md)
- [issorted](https://github.com/01-edu/public/tree/master/subjects/issorted/README.md)
- [doop](https://github.com/01-edu/public/tree/master/subjects/doop/README.md)
- [sortwordarr](https://github.com/01-edu/public/tree/master/subjects/sortwordarr/README.md)
- [advancedsortwordarr](https://github.com/01-edu/public/tree/master/subjects/advancedsortwordarr/README.md)

### Quest 10

#### Hackathon

Notions: All previously viewed concepts in team work

Exercices:

- [rot14](https://github.com/01-edu/public/tree/master/subjects/rot14/README.md)
- [abort](https://github.com/01-edu/public/tree/master/subjects/abort/README.md)
- [collatzcountdown](https://github.com/01-edu/public/tree/master/subjects/collatzcountdown/README.md)
- [comcheck](https://github.com/01-edu/public/tree/master/subjects/comcheck/README.md)
- [enigma](https://github.com/01-edu/public/tree/master/subjects/enigma/README.md)
- [pilot](https://github.com/01-edu/public/tree/master/subjects/pilot/README.md)
- [fixthemain](https://github.com/01-edu/public/tree/master/subjects/fixthemain/README.md)
- [compact](https://github.com/01-edu/public/tree/master/subjects/compact/README.md)
- [activebits](https://github.com/01-edu/public/tree/master/subjects/activebits/README.md)
- [max](https://github.com/01-edu/public/tree/master/subjects/max/README.md)
- [join](https://github.com/01-edu/public/tree/master/subjects/join/README.md)
- [unmatch](https://github.com/01-edu/public/tree/master/subjects/unmatch/README.md)

### Exam 3 (4hours)

#### Basic functions and programs skills evaluation, based on all the quests from 2 to 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](https://www.youtube.com/watch?v=EPICVEbylU0) Lists Introduction

Exercices:

- [listpushback](https://github.com/01-edu/public/tree/master/subjects/listpushback/README.md)
- [listpushfront](https://github.com/01-edu/public/tree/master/subjects/listpushfront/README.md)
- [listsize](https://github.com/01-edu/public/tree/master/subjects/listsize/README.md)
- [listlast](https://github.com/01-edu/public/tree/master/subjects/listlast/README.md)
- [listclear](https://github.com/01-edu/public/tree/master/subjects/listclear/README.md)
- [listat](https://github.com/01-edu/public/tree/master/subjects/listat/README.md)
- [listreverse](https://github.com/01-edu/public/tree/master/subjects/listreverse/README.md)
- [listforeach](https://github.com/01-edu/public/tree/master/subjects/listforeach/README.md)
- [listforeachif](https://github.com/01-edu/public/tree/master/subjects/listforeachif/README.md)
- [listfind](https://github.com/01-edu/public/tree/master/subjects/listfind/README.md)
- [listremoveif](https://github.com/01-edu/public/tree/master/subjects/listremoveif/README.md)
- [listmerge](https://github.com/01-edu/public/tree/master/subjects/listmerge/README.md)
- [listsort](https://github.com/01-edu/public/tree/master/subjects/listsort/README.md)
- [sortlistinsert](https://github.com/01-edu/public/tree/master/subjects/sortlistinsert/README.md)
- [sortedlistmerge](https://github.com/01-edu/public/tree/master/subjects/sortedlistmerge/README.md)

### Quest 12

#### Binary Trees

Notions: Advanced Data Structure using binary trees

Videos:

- [12-01-Introduction](https://www.youtube.com/watch?v=3g2WCqWNIVs) to Binary Trees

Exercices:

- [btreeinsertdata](https://github.com/01-edu/public/tree/master/subjects/btreeinsertdata/README.md)
- [btreeapplyinorder](https://github.com/01-edu/public/tree/master/subjects/btreeapplyinorder/README.md)
- [btreeapplypreorder](https://github.com/01-edu/public/tree/master/subjects/btreeapplypreorder/README.md)
- [btreesearchitem](https://github.com/01-edu/public/tree/master/subjects/btreesearchitem/README.md)
- [btreelevelcount](https://github.com/01-edu/public/tree/master/subjects/btreelevelcount/README.md)
- [btreeisbinary](https://github.com/01-edu/public/tree/master/subjects/btreeisbinary/README.md)
- [btreeapplylevel](https://github.com/01-edu/public/tree/master/subjects/btreeapplylevel/README.md)
- [btreemax](https://github.com/01-edu/public/tree/master/subjects/btreemax/README.md)
- [btreemin](https://github.com/01-edu/public/tree/master/subjects/btreemin/README.md)
- [btreetransplant](https://github.com/01-edu/public/tree/master/subjects/btreetransplant/README.md)
- [btreedeletenode](https://github.com/01-edu/public/tree/master/subjects/btreedeletenode/README.md)

### Exam 4 - Final Exam (8hours)

#### Functions and programs skills evaluation, based on all the quests from 2 to 11
