|
|
|
# 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.en
|
|
|
|
- make-it-better | https://public.01-edu.org/subjects/make-it-better.en
|
|
|
|
- to-git-or-not-to-git | https://public.01-edu.org/subjects/to-git-or-not-to-git.en
|
|
|
|
- who-are-you | https://public.01-edu.org/subjects/who-are-you.en
|
|
|
|
- cl-camp1 | https://public.01-edu.org/subjects/cl-camp1.en
|
|
|
|
- cl-camp2 | https://public.01-edu.org/subjects/cl-camp2.en
|
|
|
|
- cl-camp3 | https://public.01-edu.org/subjects/cl-camp3.en
|
|
|
|
- cl-camp4 | https://public.01-edu.org/subjects/cl-camp4.en
|
|
|
|
- cl-camp5 | https://public.01-edu.org/subjects/cl-camp5.en
|
|
|
|
- cl-camp6 | https://public.01-edu.org/subjects/cl-camp6.en
|
|
|
|
- cl-camp7 | https://public.01-edu.org/subjects/cl-camp7.en
|
|
|
|
- cl-camp8 | https://public.01-edu.org/subjects/cl-camp8.en
|
|
|
|
- now-get-to-work | https://public.01-edu.org/subjects/now-get-to-work.en
|
|
|
|
|
|
|
|
### 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.en
|
|
|
|
- printreversealphabet | https://public.01-edu.org/subjects/printreversealphabet.en
|
|
|
|
- prindigits | https://public.01-edu.org/subjects/printdigits.en
|
|
|
|
- isnegative | https://public.01-edu.org/subjects/isnegative.en
|
|
|
|
- printcomb | https://public.01-edu.org/subjects/printcomb.en
|
|
|
|
- printcomb2 | https://public.01-edu.org/subjects/printcomb2.en
|
|
|
|
- printnbr | https://public.01-edu.org/subjects/printnbr.en
|
|
|
|
- printcombn | https://public.01-edu.org/subjects/printcombn.en
|
|
|
|
|
|
|
|
### 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.en
|
|
|
|
- ultimatepointone | https://public.01-edu.org/subjects/ultimatepointone.en
|
|
|
|
- divmod | https://public.01-edu.org/subjects/divmod.en
|
|
|
|
- ultimatedivmod | https://public.01-edu.org/subjects/ultimatedivmod.en
|
|
|
|
- printstr | https://public.01-edu.org/subjects/printstr.en
|
|
|
|
- strlen | https://public.01-edu.org/subjects/strlen.en
|
|
|
|
- swap | https://public.01-edu.org/subjects/swap.en
|
|
|
|
- strrev | https://public.01-edu.org/subjects/strrev.en
|
|
|
|
- basicatoi | https://public.01-edu.org/subjects/basicatoi.en
|
|
|
|
- basicatoi2 | https://public.01-edu.org/subjects/basicatoi2.en
|
|
|
|
- atoi | https://public.01-edu.org/subjects/atoi.en
|
|
|
|
- sortintegerable | https://public.01-edu.org/subjects/sortintegertable.en
|
|
|
|
|
|
|
|
### 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.en
|
|
|
|
- recursivefactorial | https://public.01-edu.org/subjects/recursivefactorial.en
|
|
|
|
- iterativepower | https://public.01-edu.org/subjects/iterativepower.en
|
|
|
|
- recursivepower | https://public.01-edu.org/subjects/recursivepower.en
|
|
|
|
- fibonacci | https://public.01-edu.org/subjects/fibonacci.en
|
|
|
|
- sqrt | https://public.01-edu.org/subjects/sqrt.en
|
|
|
|
- isprime | https://public.01-edu.org/subjects/isprime.en
|
|
|
|
- findnextprime | https://public.01-edu.org/subjects/findnextprime.en
|
|
|
|
- eightqueens | https://public.01-edu.org/subjects/eightqueens.en
|
|
|
|
|
|
|
|
### 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.en
|
|
|
|
- nrune | https://public.01-edu.org/subjects/nrune.en
|
|
|
|
- lastrune | https://public.01-edu.org/subjects/lastrune.en
|
|
|
|
- index | https://public.01-edu.org/subjects/index.en
|
|
|
|
- compare | https://public.01-edu.org/subjects/compare.en
|
|
|
|
- toupper | https://public.01-edu.org/subjects/toupper.en
|
|
|
|
- tolower | https://public.01-edu.org/subjects/tolower.en
|
|
|
|
- capitalize | https://public.01-edu.org/subjects/capitalize.en
|
|
|
|
- isalpha | https://public.01-edu.org/subjects/isalpha.en
|
|
|
|
- isnumeric | https://public.01-edu.org/subjects/isnumeric.en
|
|
|
|
- islower | https://public.01-edu.org/subjects/islower.en
|
|
|
|
- isupper | https://public.01-edu.org/subjects/isupper.en
|
|
|
|
- isprintable | https://public.01-edu.org/subjects/isprintable.en
|
|
|
|
- concat | https://public.01-edu.org/subjects/concat.en
|
|
|
|
- basicjoin | https://public.01-edu.org/subjects/basicjoin.en
|
|
|
|
- join | https://public.01-edu.org/subjects/join.en
|
|
|
|
- printnbrbase | https://public.01-edu.org/subjects/printnbrbase.en
|
|
|
|
- atoibase | https://public.01-edu.org/subjects/atoibase.en
|
|
|
|
|
|
|
|
### 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.en
|
|
|
|
- printparams | https://public.01-edu.org/subjects/printparams.en
|
|
|
|
- revparams | https://public.01-edu.org/subjects/revparams.en
|
|
|
|
- sortparams | https://public.01-edu.org/subjects/sortparams.en
|
|
|
|
|
|
|
|
### 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.en
|
|
|
|
- makerange | https://public.01-edu.org/subjects/makerange.en
|
|
|
|
- concatparams | https://public.01-edu.org/subjects/concatparams.en
|
|
|
|
- splitwhitespaces | https://public.01-edu.org/subjects/splitwhitespaces.en
|
|
|
|
- printwordstables | https://public.01-edu.org/subjects/printwordstables.en
|
|
|
|
- convertbase | https://public.01-edu.org/subjects/converbase.en
|
|
|
|
- split | https://public.01-edu.org/subjects/split.en
|
|
|
|
|
|
|
|
### 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.en
|
|
|
|
- point | https://public.01-edu.org/subjects/point.en
|
|
|
|
- displayfile | https://public.01-edu.org/subjects/displayfile.en
|
|
|
|
- cat | https://public.01-edu.org/subjects/cat.en
|
|
|
|
- ztail | https://public.01-edu.org/subjects/ztail.en
|
|
|
|
|
|
|
|
### 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.en
|
|
|
|
- map | https://public.01-edu.org/subjects/map.en
|
|
|
|
- any | https://public.01-edu.org/subjects/any.en
|
|
|
|
- countif | https://public.01-edu.org/subjects/countif.en
|
|
|
|
- issorted | https://public.01-edu.org/subjects/issorted.en
|
|
|
|
- doop | https://public.01-edu.org/subjects/doop.en
|
|
|
|
- sortwordarr | https://public.01-edu.org/subjects/sortwordarr.en
|
|
|
|
- advancedsortwordarr | https://public.01-edu.org/subjects/advancedsortwordarr.en
|
|
|
|
|
|
|
|
### Quest 10
|
|
|
|
|
|
|
|
#### Hackathon
|
|
|
|
|
|
|
|
Notions: All previously viewed concepts in team work
|
|
|
|
|
|
|
|
Exercices:
|
|
|
|
|
|
|
|
- rot14 | https://public.01-edu.org/subjects/rot14.en
|
|
|
|
- abort | https://public.01-edu.org/subjects/abort.en
|
|
|
|
- collatzcountdown | https://public.01-edu.org/subjects/collatzcountdown.en
|
|
|
|
- comcheck | https://public.01-edu.org/subjects/comcheck.en
|
|
|
|
- enigma | https://public.01-edu.org/subjects/enigma.en
|
|
|
|
- pilot | https://public.01-edu.org/subjects/pilot.en
|
|
|
|
- fixthemain | https://public.01-edu.org/subjects/fixthemain.en
|
|
|
|
- compact | https://public.01-edu.org/subjects/compact.en
|
|
|
|
- activebits | https://public.01-edu.org/subjects/activebits.en
|
|
|
|
- max | https://public.01-edu.org/subjects/max.en
|
|
|
|
- join | https://public.01-edu.org/subjects/join.en
|
|
|
|
- unmatch | https://public.01-edu.org/subjects/unmatch.en
|
|
|
|
|
|
|
|
### 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.en
|
|
|
|
- listpushfront | https://public.01-edu.org/subjects/listpushfront.en
|
|
|
|
- listsize | https://public.01-edu.org/subjects/listsize.en
|
|
|
|
- listlast | https://public.01-edu.org/subjects/listlast.en
|
|
|
|
- listclear | https://public.01-edu.org/subjects/listclear.en
|
|
|
|
- listat | https://public.01-edu.org/subjects/listat.en
|
|
|
|
- listreverse | https://public.01-edu.org/subjects/listreverse.en
|
|
|
|
- listforeach | https://public.01-edu.org/subjects/listforeach.en
|
|
|
|
- listforeachif | https://public.01-edu.org/subjects/listforeachif.en
|
|
|
|
- listfind | https://public.01-edu.org/subjects/listfind.en
|
|
|
|
- listremoveif | https://public.01-edu.org/subjects/listremoveif.en
|
|
|
|
- listmerge | https://public.01-edu.org/subjects/listmerge.en
|
|
|
|
- listsort | https://public.01-edu.org/subjects/listsort.en
|
|
|
|
- sortlistinsert | https://public.01-edu.org/subjects/sortlistinsert.en
|
|
|
|
- sortedlistmerge | https://public.01-edu.org/subjects/sortedlistmerge.en
|
|
|
|
|
|
|
|
### 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.en
|
|
|
|
- btreeapplyinorder | https://public.01-edu.org/subjects/btreeapplyinorder.en
|
|
|
|
- btreeapplypreorder | https://public.01-edu.org/subjects/btreeapplypreorder.en
|
|
|
|
- btreesearchitem | https://public.01-edu.org/subjects/btreesearchitem.en
|
|
|
|
- btreelevelcount | https://public.01-edu.org/subjects/btreelevelcount.en
|
|
|
|
- btreeisbinary | https://public.01-edu.org/subjects/btreeisbinary.en
|
|
|
|
- btreeapplylevel | https://public.01-edu.org/subjects/btreeapplylevel.en
|
|
|
|
- btreemax | https://public.01-edu.org/subjects/btreemax.en
|
|
|
|
- btreemin | https://public.01-edu.org/subjects/btreemin.en
|
|
|
|
- btreetransplant | https://public.01-edu.org/subjects/btreetransplant.en
|
|
|
|
- btreedeletenode | https://public.01-edu.org/subjects/btreedeletenode.en
|
|
|
|
|
|
|
|
### Exam 4 - Final Exam (8hours)
|
|
|
|
|
|
|
|
#### Functions and programs skills evaluation, based on Quest 2 and Quest 11
|