Repository: hacktiv8/phase-0-activities
Branch: master
Commit: 585dc54aed02
Files: 248
Total size: 577.0 KB
Directory structure:
gitextract_d4_qmvmm/
├── .gitignore
├── FINISH.md
├── README-WEEK-1.md
├── README-WEEK-2.md
├── README-WEEK-3.md
├── README-WEEK-4.md
├── README-WEEK-5.md
├── README-WEEK-6-deprecated.md
├── README-WEEK-6.md
├── README.md
├── checklist.md
└── modules/
├── README-WEEK-5-old-dom.md
├── algorithm-pseudocode.md
├── anchor-akses-array.md
├── anchor-basic-function.md
├── anchor-before-recursive.md
├── anchor-belajar-for.md
├── anchor-belajar-operator-mtk.md
├── anchor-belajar-variabel.md
├── anchor-belajar-while.md
├── anchor-case-to-pseudocode.md
├── anchor-css-layouting.md
├── anchor-css-selector-and-styling.md
├── anchor-es5-to-es6.md
├── anchor-es6-functional.md
├── anchor-es6-oop-start.md
├── anchor-es6-oop.md
├── anchor-jquery.md
├── anchor-js-dom-creation.md
├── anchor-js-dom-manipulation.md
├── anchor-js-dom-transverse-manipulation.md
├── anchor-js-dom-web-app.md
├── anchor-js-form-validation.md
├── anchor-js-object-literal.md
├── anchor-json.md
├── anchor-laman-web-pertamaku.md
├── anchor-loop-array.md
├── anchor-main-loop-asterisks.md
├── anchor-main-loop.md
├── anchor-main-string.md
├── anchor-menggunakan-if-else-2.md
├── anchor-menggunakan-if-else.md
├── anchor-mixed-array.md
├── anchor-object-1.md
├── anchor-object-2.md
├── anchor-oop-1.md
├── anchor-pseudocode.md
├── anchor-pseudocode2.md
├── anchor-recursive.md
├── anchor-switch-case.md
├── angka-kuadrat.md
├── animation-using-css-and-js.md
├── app-design-architecture.md
├── array-1.md
├── ask-search-read-smarter.md
├── assets/
│ ├── css-anchor-styling.css
│ ├── example.css
│ ├── example.html
│ ├── example.js
│ └── style.css
├── bilangan-faktor.md
├── blockly-games.md
├── blog.md
├── bootstrap.md
├── career.md
├── cek-angka.md
├── cek-prima.md
├── cek-string.md
├── challenge-algoritma-hukum-newton.md
├── challenge-algoritma-laundry-day.md
├── challenge-algoritma-periksa-kuku.md
├── challenge-algoritma-tahun-kabisat.md
├── challenge-angka-prima.md
├── challenge-balik-kata.md
├── challenge-bandingkan-angka.md
├── challenge-cari-mean.md
├── challenge-cari-median.md
├── challenge-cari-modus.md
├── challenge-cari-pelaku.md
├── challenge-cek-ab.md
├── challenge-damage-calculation.md
├── challenge-deep-sum.md
├── challenge-deret-aritmatika.md
├── challenge-deret-geometri.md
├── challenge-digit-perkalian-minimum.md
├── challenge-faktor-persekutuan-terbesar.md
├── challenge-faktorial.md
├── challenge-graduates.md
├── challenge-hapus-simbol.md
├── challenge-highest-score.md
├── challenge-hitung-huruf.md
├── challenge-hitung-jumlah-kata.md
├── challenge-kali-terus.md
├── challenge-kelompok-angka.md
├── challenge-kelompok-hewan.md
├── challenge-konversi-menit.md
├── challenge-main-pseudocode.md
├── challenge-makan-terus.md
├── challenge-melee-ranged-grouping.md
├── challenge-most-frequent-largest-numbers.md
├── challenge-naik-angkot.md
├── challenge-object-literal.md
├── challenge-palindrome-angka.md
├── challenge-palindrome.md
├── challenge-pasangan-terbesar.md
├── challenge-password-generator.md
├── challenge-perkalian-unik.md
├── challenge-perpangkatan-dua.md
├── challenge-recursive-addition.md
├── challenge-shopping-time.md
├── challenge-tambah-dash.md
├── challenge-target-terdekat.md
├── challenge-toko-x.md
├── challenge-total-digit.md
├── challenge-tukar-besar-kecil.md
├── challenge-ubah-huruf.md
├── challenge-ubah-kapital.md
├── challenge-urutkan-abjad.md
├── challenge-x-dan-o.md
├── cli-git-github-practice.md
├── code-combat.md
├── code-documentation.md
├── codecademy.md
├── coderbyte-introduction.md
├── codewars.md
├── collaboration.md
├── color.md
├── contact-form.md
├── contact-list.md
├── core-values.md
├── css3-advanced.md
├── css3-basics.md
├── css3-rules.md
├── database.md
├── dev-ecosystem-community.md
├── editor.md
├── faktor-prima.md
├── format-angka.md
├── format-huruf.md
├── fox-hub-guide.md
├── functional-basics.md
├── gallery-slide.md
├── ganjil-genap-dll.md
├── geser-huruf.md
├── git-branch-anchor.md
├── git-github-basics.md
├── github-pages-rev.md
├── github-pages.md
├── h8-challenge-checker.md
├── hinting-linting.md
├── html-css-code-style.md
├── html5-basics.md
├── html5-boilerplate.md
├── html5-elements.md
├── html5-forms-basics.md
├── index-prima.md
├── internet-web.md
├── introduce-yourself.md
├── is-even.md
├── jenis-bilangan.md
├── jquery-bootstrap.md
├── jquery.md
├── js-application.md
├── js-array.md
├── js-basics.md
├── js-code-style.md
├── js-data.md
├── js-dom-creation.md
├── js-dom-devtools.md
├── js-dom-events.md
├── js-dom-intro.md
├── js-dom-style.md
├── js-dom-transversing.md
├── js-es6-arrow-function.md
├── js-es6-scope.md
├── js-es6.md
├── js-events.md
├── js-first-time.md
├── js-function-method.md
├── js-function-recursive.md
├── js-logic.md
├── js-node.md
├── js-object-json.md
├── js-object-literal.md
├── js-scope.md
├── js-string-reference.md
├── js-style-guide.md
├── js-transpilation.md
├── js-world.md
├── key-competencies.md
├── konversi-huruf-angka.md
├── konversi-waktu.md
├── markdown-anchor.md
├── markdown.md
├── math-basics.md
├── math-object-js.md
├── menghias-laman-html.md
├── menghias-laman-html2.md
├── menghias-laman-html3.md
├── modular-design.md
├── news-article.md
├── number-guess.md
├── number-system.md
├── oop-basics.md
├── oop-design.md
├── open-source.md
├── order-string.md
├── pair-programming.md
├── palindrome-2.md
├── palindrome.md
├── pascal-triangle-sum.md
├── phase-0-setup-guide.md
├── pola-angka.md
├── programming-paradigm.md
├── promo-cc.md
├── promo-menu.md
├── rainbow-text.md
├── range-angka.md
├── refactoring.md
├── reflection.md
├── regular-expressions.md
├── remove-duplication.md
├── repeated-letter.md
├── restaurant.md
├── rock-paper-scissors.md
├── rocket-loop-conditional.md
├── separate-number.md
├── software-culture-teamwork.md
├── story-with-images.md
├── string-compression.md
├── submitting-on-a-new-branch.md
├── sum-array.md
├── svg.md
├── tes.txt
├── testing-performance.md
├── text-style-event.md
├── thinking.md
├── tooling.md
├── web-assets-compression.md
├── web-creation.md
├── web-design.md
├── web-dev-process.md
├── web-evaluation.md
├── web-interactive.md
├── web-literacy.md
├── web-speed.md
├── website.md
└── wireframing.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
.DS_Store
.hidden
================================================
FILE: FINISH.md
================================================
# Hacktiv8 Phase 0 is Over: That's a wrap!
Kami akan merangkum semua laporan kegiatan kamu dan menyimpulkan hasilnya, yang akan kita berikan ke masing-masing kamu.
Termasuk juga:
- Showcases
- Blog Post Collection
- Activity Evaluation
- Final Activity Evaluation
================================================
FILE: README-WEEK-1.md
================================================
# Hacktiv8 Phase 0 Week 1: Membuat Website Pertama Saya

Selamat datang di tahap persiapan sesungguhnya bootcamp Hacktiv8, yaitu Phase 0! Phase 0 ini merupakan pembelajaran yang bersifat matrikulasi atau kalibrasi yang lebih intens. Phase 0 juga menjadi penentu apakah kamu dapat maju ke Phase 1. Kita harap bersama agar kamu antusias untuk meningkatkan pengetahuan dasarmu!
**Bagaimana Phase 0 ini akan berjalan?**
Dalam tahap ini, tiap pekan bisa diselesaikan dalam waktu paling cepat 20-30 jam. Pun kalau kamu sudah bisa berbagai skill yang sudah tertera, bisa saja juga ada beberapa hal esensial dan tambahan yang belum kamu tahu. Tiap akhir pekan, kamu harus mengisi form laporan kegiatan yang link-nya disertakan di bawah.

**Oke, siap untuk memulai Phase 0 kita di Hacktiv8?**
Kami yakin bahwa kamu akan mengalami petualangan yang sangat seru! Pada waktu di antara berakhirnya Phase 0 dan sebelum dimulainya Phase 1 juga, kita akan melakukan evaluasi terhadap ilmu yang telah kamu dapatkan.
**Apa saja yang akan kita lakukan, pahami, dan selesaikan dalam beberapa hari ke depan?**
Berikut berbagai modul kegiatan inti yang dapat kamu lihat, baca, tonton, lakukan, dan sebagainya. Ikuti tiap checklist yang bisa kamu lakukan. Jika ada yang belum selesai, boleh saja ditunda ke hari berikutnya. Yang penting secara pribadi dalam sepekan kamu harus bisa menyelesaikan semuanya.
Catatan: Untuk seluruh diskusi pembelajaran inti dari awal persiapan hingga berakhirnya bootcamp, kita akan menggunakan grup [Slack](https://slack.com/).
Panduan:
- :notebook_with_decorative_cover: **Reference** adalah bacaan sebagai referensi pembelajaran kamu. Di dalam beberapa bacaan, ada direction yang memintamu membuat sesuatu. Direction itu lebih bersifat opsional untuk membantu kamu saja.
- :anchor: **Anchor** adalah tugas atau tantangan yang wajib kamu kerjakan dan kumpulkan.
- 💪 **Self Training** adalah tugas atau tantangan opsional yang walaupun tidak dikumpulkan, bila kamu selesaikan dengan baik, pembelajarannya maksimal! 😎
- :rocket: **Rocket** adalah tantangan opsional yang menguji kehebatanmu sebagai calon developer masa depan
- :books: **Optional Reference** adalah bacaan sebagai referensi tambahan yang akan memperkaya pengetahuanmu
**HACKTIV8 FoxHub, Platform Pengumpulan Tugas**
- [FoxHub Guide](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/fox-hub-guide.md)
**Pengumpulan Tugas dan Sistem Feedback**
Tugas mingguan dikumpulkan harian, dan setiap tugas akan dikoreksi setiap pagi di hari selanjutnya. Namun, untuk deadline sendiri, kami memperbolehkan tugas agar dikumpulkan di akhir minggu di hari minggu. Kami merekomendasikan untuk mengumpulkan tugas dalam bentuk harian, karena akan mempercepat tim instruktur untuk mengkoreksi dan memberikan feedback. Gunakan Platform HACKTIV8 FoxHub untuk melakukan pengumpulan tugas.
## Senin - Hari Pertamamu di HACKTIV8 Phase 0
Hari pertamamu akan dimulai dengan memperkenalkan dirimu kepada teman-teman lainnya di Slack Group, dan
mempelajari hal paling pertama dalam pembuatan sebuah web, yaitu HTML! Mungkin banyak dari antara kamu
yang pernah mencoba HTML, namun tidak ada salahnya untuk mereview ulang, bukan? Untuk tugas yang menggunakan Codecademy, yang perlu kamu kumpulkan adalah screenshot yang menunjukkan bahwa kamu telah menyelesaikan course tersebut di akhir!
Materi & Referensi :
- :notebook_with_decorative_cover:
[Mempelajari dasar HTML5](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/html5-basics.md)
- :notebook_with_decorative_cover:
[Mempelajari dasar HTML5 forms](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/html5-forms-basics.md)
- :books:
[Mengenal Dunia Web dan Internet](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/internet-web.md)
Tugas :
- :anchor:
[[**Exercises 1**] Codecademy Course - HTML](https://www.codecademy.com/learn/learn-html)
- 💪
[[**Latihan Pribadi 1**] Membuat Halaman HTML Sederhana](modules/anchor-laman-web-pertamaku.md)
## Selasa - Menguasai HTML dan Mengenal CSS
Di hari pertama kamu telah berhasil membuat website pertamamu dengan memanfaatkan beberapa tag sederhana di HTML. Hari ini, mari kita percantik tampilan websitemu dengan Cascading Style Sheet, atau disingkat menjadi CSS. Akan sangat menyenangkan pada saat kita bisa mulai membuat website kita lebih menarik!
Materi & Referensi :
- :notebook_with_decorative_cover:
[Mempelajari dasar CSS3](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/css3-basics.md)
Tugas :
- :anchor: [[**Exercises 2**] Codecademy Course - CSS (hanya sampai Unit 5 - Typography)](https://www.codecademy.com/learn/learn-css)
- 💪 [[**Latihan Pribadi 2**] Menghias HTML dengan CSS](modules/anchor-css-selector-and-styling.md)
- 💪 [[**Latihan Pribadi 3**] Membuat Layout dan Desain Halaman Web dengan CSS](modules/anchor-css-layouting.md)
## Rabu dan Kamis - Mengendalikan Revisi Menggunakan Git
Kamu telah mampu membuat website yang cukup menarik dengan ilmu yang telah kamu pelajari. Sekarang saatnya
perkaya website kamu dengan gambar dan tabel. Dan hari ini, kamu juga akan berkenalan dengan Git, sebuah
tool untuk mengendalikan revisi dari kode yang telah kamu buat. Dengan menyelesaikan hari ini, berarti kamu
telah punya website kamu sendiri secara online!
Materi & Referensi :
- :notebook_with_decorative_cover:
[Mengetahui dan menggunakan sistem untuk mengendalikan revisi, yaitu Git and GitHub](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/git-github-basics.md)
- :notebook_with_decorative_cover:
[Melatih penggunaan command line serta Git dan GitHub lebih banyak](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/cli-git-github-practice.md)
Tugas :
- 💪
[[**Latihan Pribadi 4**] Mempelajari Markdown dan Membuat README.md](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/markdown-anchor.md)
- 💪
[[**Latihan Pribadi 5**] Membuat Branch Baru pada Repositori](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/git-branch-anchor.md)
## Jumat - Satu Langkah Menjadi Expert HTML dan CSS!
Menjelang akhir minggu pertama kita, saatnya buat diri kita puas dengan mempercantik website kita dan
menampilkannya secara online. Kamu juga bisa perdalam lagi hal-hal terkait web design. Puas dengan tampilan websitemu? Tenang saja, masih ada lima minggu online yang akan lebih menantang!
Materi & Referensi :
- :notebook_with_decorative_cover:
[Memahahami perencanaan, process, dan manajemen dalam pembuatan web](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/web-dev-process.md)
- :notebook_with_decorative_cover:
[Mengenal adaptive web design dan responsive web design (RWB)](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/web-design.md)
Tugas :
- :anchor:
[[**Exercise 3**] - Website yang dihosting dengan Github Pages](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/github-pages-rev.md)
- [Blogging teknikal terkait skill pekan ini](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/blog.md)
Selamat memulai petualanganmu yang lebih nyata dari sebelumnya! Jika ada hal yang perlu ditanyakan, langsung saja berdiskusi di grup ya.
Salam,
Tim HACKTIV8

================================================
FILE: README-WEEK-2.md
================================================
Material Valid for FullStack Immersive Batch 17
# Hacktiv8 Phase 0 Week 2: The World of JavaScript

Selamat sudah melalui kegiatan pekan pertama! Pekan kedua ini kita akan berkenalan dengan JavaScript,
dan melatih kemampuan logika dan pengolahan data dalam programming. Di pekan ini, kamu akan bertemu dengan sangat banyak kode dan istilah yang digunakan dalam pemrograman atau khususnya pada JavaScript.

## Metode Pengumpulan Tugas
Untuk seluruh tugas week 2, buatlah sebuah repository baru di github dengan nama h8-p0-w2. Untuk setiap satu tugas, buatlah file .js (untuk tugas javascript), file .txt (untuk tugas pseudocode), atau file .png (untuk tugas screenshot codecademy) untuk masing-masing tugas. Contoh, untuk tugas pertama, buatlah file .js dengan nama exercise-1.js dan push ke github. Kirimkan link yang merujuk ke file .js tersebut ke dalam foxhub. **Jangan kirimkan link ke repository, tapi ke direct file di dalam repository-nya**.
## Senin - Pengenalan Programming, Algoritma, dan Pseudocode
Hari pertama di Week 2! Mulailah pekan baru dengan semangat baru! Hari ini, kamu akan bertemu dengan banyak kode yang mungkin belum pernah kamu lihat sebelumnya. Bersiaplah, dan jangan lupa bertanya apabila kamu menemukan kesulitan. Selamat belajar! :smile:
Materi & Referensi :
- :notebook_with_decorative_cover:
[Mempelajari struktur alur program dengan algoritma dan pseudocode](modules/algorithm-pseudocode.md)
Tugas :
- :anchor:
[[**Exercises 1**] Berlatih dengan Pseudocode](modules/challenge-main-pseudocode.md)
## Selasa - Dunia JavaScript
Hari ini masuklah kita ke bahasa pemrograman JavaScript. Yuk kenalan dengan JavaScript dan langsung coba keseruannya!
Materi & Referensi :
- :wrench:
[Repl, tools online untuk menjalankan JavaScript](https://repl.it/languages/javascript)
- :notebook_with_decorative_cover:
[Memahami dan menggunakan dasar pemrograman dengan JavaScript](modules/js-first-time.md)
- :notebook_with_decorative_cover:
[Memahami Tipe Data dan Variabel pada JavaScript](modules/js-first-time.md#data-type)
- :notebook_with_decorative_cover:
[Mengenal Berbagai Jenis Operasi dalam JavaScript](modules/js-first-time.md#operator)
- :notebook_with_decorative_cover:
[Memahami Control Flow: Conditional dan Branching](modules/js-first-time.md#conditional)
Tugas :
- :anchor:
[[**Exercises 2**] Codecademy JavaScript Building Blocks: Unit 1 and 2 - Intro and Control Flow only](https://www.codecademy.com/learn/learn-javascript)
- :anchor:
[[**Exercises 3**] Mengenal penggunaan Conditional `if-else` dalam JavaScript](modules/anchor-menggunakan-if-else.md)
- :anchor:
[[**Exercises 4**] Mengenal penggunaan Conditional (Switch-Case) dalam JavaScript](modules/anchor-switch-case.md)
## Rabu - Mengenal Tipe data String dan Konsep Looping atau Perulangan
Hari ini mari kita berkenalan dengan string dan perulangan, atau sering disebut juga sebagai looping atau iteration di JavaScript.
Materi & Referensi :
- :notebook_with_decorative_cover:
[Memahami Tipe Data String pada JavaScript](modules/js-string-reference.md)
- :notebook_with_decorative_cover:
[Memahami Perulangan atau Looping](modules/js-first-time.md#loopiteration)
- :notebook_with_decorative_cover:
[Memahami Built-in Object Math](modules/math-object-js.md)
Tugas :
- :anchor: [[**Exercises 5**] Bermain dengan String di JavaScript](modules/anchor-main-string.md)
- :anchor: [[**Exercises 6**] Berlatih Perulangan di JavaScript](modules/anchor-main-loop.md)
- :anchor: [[**Exercises 7**] Perulangan - Play with Asterisks](modules/anchor-main-loop-asterisks.md)
## Kamis - Menggunakan Konsep Functions
Mulai familiar dengan JavaScript? Good! Saatnya kita masuk ke pembahasan bagaimana alur dan algortima yang sangat penting untuk menyelesaikan kasus dengan programming, dan juga mengenal dengan yang namanya functions dan scope yang sangat membantu kamu untuk membuat program.
Materi & Referensi :
- :notebook_with_decorative_cover:
[Mempelajari Function atau Method](modules/js-first-time.md#functionmethod)
- :notebook_with_decorative_cover:
[Mempelajari Scope](modules/js-scope.md)
Tugas :
- :anchor:
[[**Exercises 8**] JavaScript Building Blocks: Codecademy JavaScript Course (Unit 3 - Functions)](https://www.codecademy.com/learn/learn-javascript)
- :anchor:
[[**Exercises 9**] Berlatih Penggunaan Functions](modules/anchor-basic-function.md)
## Jumat - Solve Problems menggunakan JavaScript
- :anchor:
[[**Exercises 10**] Bandingkan Angka](/modules/challenge-bandingkan-angka.md)
- :anchor:
[[**Exercises 11**] Balik Kata](/modules/challenge-balik-kata.md)
- :anchor:
[[**Exercises 12**] Konversi Menit](/modules/challenge-konversi-menit.md)
- :anchor:
[[**Exercises 13**] X dan O](/modules/challenge-x-dan-o.md)
## Sabtu dan Minggu
- [Refleksi kegiatan pekan ini](modules/reflection.md)
- [Blogging teknikal terkait skill pekan ini](modules/blog.md)
Selamat berpetualang dengan logika dan data! Jika ada hal yang perlu ditanyakan, langsung saja berdiskusi di grup ya.
Salam,
Tim Hacktiv8

================================================
FILE: README-WEEK-3.md
================================================
# Hacktiv8 Phase 0 Week 3: Arrays and Logics

Selamat sudah melalui kegiatan pekan kedua! Pekan ketiga ini kita akan melatih pemahaman tentang logika dan implementasinya ke berbagai kasus. Pastikan kalian telah memahami dengan baik materi di minggu sebelum nya.
Karena sudah menginjak pekan ke 3, ada baiknya kamu menyelesaikan tugasnya dari hari ke hari secara rutin. Semaksimal mungkin tugas-tugas yang ada tidak ditumpuk di kemudian hari atau bahkan di akhir minggu, karena mulai pekan 3 ini setiap hari nya ada challenge coding yang menentukan kelanjutan ke phase 1 :bowtie: , dan semua challenge yang bertanda :anchor: ini wajib diselesaikan.

## Senin - Live Coding
Instruksi diberikan di channel kelas.
## Selasa - Mengenal Tipe Data Array
Sebelumnya, kita telah belajar berbagai macam tipe data yang kita tampung di variabel JavaScript dan kita bermain operasi dengannya, menggunakan conditional, bahkan hingga looping. Sekarang, saatnya kita berkenalan dengan Array, tipe data yang sangat berguna untukmu dalam membuat penampungan data yang terstruktur.
Materi & Referensi :
- :notebook_with_decorative_cover: [Mempelajari tipe data Array](modules/js-array.md)
- :notebook_with_decorative_cover:
[Memahami Tipe Data String pada JavaScript](modules/js-string-reference.md)
Tugas :
- :anchor:
[[**Exercises 1**] JavaScript Building Blocks: Codecademy JavaScript Course (Unit 4 - Arrays)](https://www.codecademy.com/learn/learn-javascript)
- :anchor:
[[**Exercises 2**] Tantangan Array 1 (Mengakses Nilai dalam Array)](modules/anchor-akses-array.md)
- :anchor:
[[**Exercises 3**] Tantangan Array 2 (Melooping menggunakan Array)](modules/anchor-loop-array.md)
- :anchor:
[[**Exercises 4**] Tantangan Array 3 (Array Join, Split, Slice, Splice, Sort)](modules/anchor-mixed-array.md)
## Rabu - Logic Challenges Refresh
Gunakan waktu sejenak untuk berkenalan dengan Node Js,
sebuah platform yang memungkinkan kamu untuk menjalankan script JavaScript di server. Jadi, kamu bisa dengan mudah membuat kode JavaScript yang dapat berjalan di terminal kamu. Hari ini juga, kamu akan mencoba langsung mengimplementasi kodemu melalui node Js!
Materi & Referensi :
- :notebook_with_decorative_cover:
[Mengenal Node JS](/modules/js-node.md)
- :notebook_with_decorative_cover: [Membuat code JavaScript-mu dengan Baik ](modules/js-code-style.md)
Tugas :
- :anchor:
[[**Exercises 5 (Auto)**] Palindrome](/modules/challenge-palindrome.md)
- :anchor:
[[**Exercises 6 (Auto)**] Palindrome Angka](/modules/challenge-palindrome-angka.md)
- :anchor:
[[**Exercises 7 (Auto)**] Hitung Jumlah Kata](/modules/challenge-hitung-jumlah-kata.md)
- :anchor:
[[**Exercises 8 (Auto)**] Pasangan Angka Terbesar](/modules/challenge-pasangan-terbesar.md)
## Kamis - More Logic Challenges
Hari baru, tantangan baru. Setelah belajar tentang array and solve berbagai problem dengan arrays, saatnya perbanyak latihan dengan soal yang terus melatih logika!
Tugas :
- :anchor:
[[**Exercises 9 (Auto)**] Cari Mean](/modules/challenge-cari-mean.md)
- :anchor:
[[**Exercises 10 (Auto)**] Perkalian Unik](/modules/challenge-perkalian-unik.md)
- :anchor:
[[**Exercises 11 (Auto)**] Deret Aritmatika](/modules/challenge-deret-aritmatika.md)
- :anchor:
[[**Exercises 12 (Auto)**] Deret Geometri](/modules/challenge-deret-geometri.md)
## Jumat - More Arrays + Multidimensional Array
Kamu telah mencoba berbagai macam soal, menggunakan array maupun tidak. Tentunya di saat ini kamu telah bisa menilai cara mana yang lebih baik menggunakan array, dan yang tidak perlu, bukan?
Hari ini, kamu akan bermain dengan array dan bentuk selanjutnya, yaitu array multidimensi. Tenang saja, array multidimensi konsep nya sama persis dengan array satu dimensi!
- :anchor:
[[**Exercises 13 (Auto)**] Target Terdekat](/modules/challenge-target-terdekat.md)
- :anchor:
[[**Exercises 14**] Mengelompokkan Angka](modules/challenge-kelompok-angka.md)
- :anchor:
[[**Exercises 15**] Mengelompokkan Hewan](modules/challenge-kelompok-hewan.md)
Tugas :
## Sabtu dan Minggu
- [Refleksi kegiatan pekan ini](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/reflection.md)
- [Blogging teknikal terkait skill pekan ini](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/blog.md)
Jika ada hal yang perlu ditanyakan, langsung saja berdiskusi di grup ya.
Salam,
Tim Hacktiv8

================================================
FILE: README-WEEK-4.md
================================================
# Hacktiv8 Phase 0 Week 4: Logics in JavaScript

Selamat sudah melalui kegiatan pekan ketiga! Di pekan keempat ini, kita akan fokus untuk mengasah logika dan pemrograman kita dengan terus mengerjakan tantangan. Minggu ini mungkin akan sulit, karena sangat banyak tantangan dengan berbagai bentuk yang harus kamu selesaikan. Namun, dengan tetap semangat, maka kamu pasti bisa menyelesaikan seluruh tantangan ini!

## Senin - Live Coding (Arrays, Looping, & Conditionals)
Tiba saatnya kita melakukan Live Coding yang bertujuan untuk menguji kemampuanmu sesuai dengan yang telah kamu pelajari dan kamu latih di pekan ini. Melalui live coding ini kami akan menilai pengertian kamu selama ini tentang JavaScript, dan tentunya kami akan memberikan feedback agar kamu bisa meningkatkan bagian mana yang masih kurang. Sesi live coding ini, tidak seperti tantangan-tantangan di hari-hari sebelumnya. **Kamu tidak bisa mengulang atau memperbaiki apa yang telah kamu kerjakan di sesi live coding.** Sesi live coding tidak dibuat untuk membuatmu gagal, namun untuk memastikan apakah kamu telah terlatih dengan soal-soal coderbyte sebelumnya. Gagal di sesi live coding tidak mutlak membuatmu gagal di Phase 0, namun akan mempengaruhi keputusan instruktur untuk bisa melanjutkanmu ke Phase 1.
- :notebook_with_decorative_cover:
[Materi Object Literal](/modules/js-object-literal.md)
## Selasa - Numbers Crunching and Play with Strings
Hari baru, tantangan baru! terus tantang diri kamu untuk mengahadapi tantangan baru minggu ini dan percayalah semuanya akan terbalaskan pada waktunya :smile:
- :anchor:
[[**Exercises 1**] Angka Prima](/modules/challenge-angka-prima.md)
- :anchor:
[[**Exercises 2**] Faktor Persekutuan Terbesar](/modules/challenge-faktor-persekutuan-terbesar.md)
- :anchor:
[[**Exercises 3**] Cari Median](/modules/challenge-cari-median.md)
- :anchor:
[[**Exercises 4**] Cari Modus](/modules/challenge-cari-modus.md)
- :anchor:
[[**Exercises 5**] Ubah Huruf](/modules/challenge-ubah-huruf.md)
## Rabu - Built-in Functions Mastery
Hari ketiga di pekan keempat. Keep up the good work! Banyak tantangan menunggu seminggu ke depan :cool:
- :anchor:
[[**Exercises 6**] Digit Perkalian Minimum](/modules/challenge-digit-perkalian-minimum.md)
- :anchor:
[[**Exercises 7**] Urutkan Abjad](/modules/challenge-urutkan-abjad.md)
- :anchor:
[[**Exercises 8**] Tukar Ukuran](/modules/challenge-tukar-besar-kecil.md)
- :anchor:
[[**Exercises 9**] Cek AB](/modules/challenge-cek-ab.md)
## Kamis - Object Literal
Lanjutkan perjuanganmu di tengah banyaknya tantangan yang diberikan di pekan ke empat.
- :anchor:
[[**Exercises 10**] Change me](modules/challenge-object-literal.md)
- :anchor:
[[**Exercises 11**] Shopping Time!](modules/challenge-shopping-time.md)
- :anchor:
[[**Exercises 12**] Toko X](modules/challenge-toko-x.md)
## Jumat - Mastered Array and Object
- :anchor: [[**Exercises 13**] Deep Sum](modules/challenge-deep-sum.md)
- :anchor: [[**Exercises 14**] Naik Angkot](modules/challenge-naik-angkot.md)
- :anchor: [[**Exercises 15**] Highest Score](modules/challenge-highest-score.md)
- :anchor: [[**Exercises 16**] Graduates](modules/challenge-graduates.md)
## Sabtu dan Minggu
- [Refleksi kegiatan pekan ini](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/reflection.md)
- [Blogging teknikal terkait skill pekan ini](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/blog.md)
Selamat berpetualang dengan logika lebih lanjut! Jika ada hal yang perlu ditanyakan, langsung saja berdiskusi di grup ya.
Salam,
Tim Hacktiv8

================================================
FILE: README-WEEK-5.md
================================================
# Hacktiv8 Phase 0 Week 5: Recursive, Regex, and Object Oriented Programming in JavaScript

Selamat sudah melalui kegiatan pekan kelima! Setelah tiga minggu penuh bermain dengan console dan logika, minggu ini kita akan berlatih tentang konsep Rekursif, Regex, serta tipe data Object di JavaScript.

## Senin - Live Coding (Arrays, Looping, & Conditionals)
Tiba saatnya kita melakukan Live Coding yang bertujuan untuk menguji kemampuanmu sesuai dengan yang telah kamu pelajari dan kamu latih di pekan ini. Melalui live coding ini kami akan menilai pengertian kamu selama ini tentang JavaScript, dan tentunya kami akan memberikan feedback agar kamu bisa meningkatkan bagian mana yang masih kurang. Sesi live coding ini, tidak seperti tantangan-tantangan di hari-hari sebelumnya. **Kamu tidak bisa mengulang atau memperbaiki apa yang telah kamu kerjakan di sesi live coding.** Sesi live coding tidak dibuat untuk membuatmu gagal, namun untuk memastikan apakah kamu telah terlatih dengan soal-soal coderbyte sebelumnya. Gagal di sesi live coding tidak mutlak membuatmu gagal di Phase 0, namun akan mempengaruhi keputusan instruktur untuk bisa melanjutkanmu ke Phase 1.
## Selasa - Modularizing Code using Functions & Recursive Functions
- :notebook_with_decorative_cover:
[Mengenal Rekursif](/modules/js-function-recursive.md)
- :anchor: [[**Exercises 1**] Most Frequent Largest Numbers](modules/challenge-most-frequent-largest-numbers.md)
- :anchor: [[**Exercises 2**] Password Generator](modules/challenge-password-generator.md)
- :anchor: [[**Exercises 3**] Makan Terus Rekursif](/modules/challenge-makan-terus.md)
- :anchor: [[**Exercises 4**] Total Digit Rekursif](/modules/challenge-total-digit.md)
- :anchor: [[**Exercises 5**] Kali Terus Rekursif](/modules/challenge-kali-terus.md)
## Rabu - Git Branch
- :notebook_with_decorative_cover:
[Cara Submit menggunakan Git Branch (Untuk Exercises Hari Rabu)](/modules/submitting-on-a-new-branch.md)
- :anchor: [[**Exercises 6**] Damage Calculation](/modules/challenge-damage-calculation.md)
- :anchor: [[**Exercises 7**] Melee Ranged Grouping](/modules/challenge-melee-ranged-grouping.md)
## Kamis - Regex
- :notebook_with_decorative_cover:
[Mengenal Regular Expressions](/modules/regular-expressions.md)
- :anchor:
[[**Exercises 8**] Hapus Simbol](/modules/challenge-hapus-simbol.md)
- :anchor:
[[**Exercises 9**] Cari Pelaku](/modules/challenge-cari-pelaku.md)
## Jumat - Simulasi Final Live Code
Lakukan yang terbaik, mulailah beradaptasi dengan suasana live code agar lebih tenang. Usahakan kerjakan dengan hasil sendiri, masih ada kesempatan untuk tanya jawab di minggu berikutnya
## Sabtu dan Minggu
- [Refleksi kegiatan pekan ini](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/reflection.md)
- [Blogging teknikal terkait skill pekan ini](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/blog.md)
Selamat berpetualang dengan istilah dan teknologi yang makin seru! Jika ada hal yang perlu ditanyakan, langsung saja berdiskusi di grup ya.
Salam,
Tim Hacktiv8

================================================
FILE: README-WEEK-6-deprecated.md
================================================
# COMING SOON! Prepare For Live Code!
================================================
FILE: README-WEEK-6.md
================================================
# Hacktiv8 Phase 0 Week 6: Finals and JavaScript DOM

Sampailah di minggu terakhir phase 0! Senin - Rabu kamu akan fokus untuk final live coding, dan di kamis dan jumat kamu akan bermain dengan DOM dan membuat project web kamu yang paling seru!

## Senin - Rabu: Final Live Coding (Offline).
Ini saat yang menentukan untuk bisa lanjut ke Phase 1. Persiapkan ilmu yang telah kamu pelajari di logic dan JavaScript! Note: Materi Week 1, dan 6 tidak diikutkan ke dalam kompetensi Final Live Coding. Berbeda dengan Live Coding sebelumnya, Final Live Coding ini wajib dilakukan Offline.
## Rabu - Document Object Model (DOM)
Akhirnya beberapa pekan tantangan yang penuh logika berakhir. Sekarang, kamu akan mempelajari mempelajari DOM, yang akan membuat website kamu menjadi interaktif dan menarik! Kamu akan ditantang dengan DOM di week 6 setelah final live coding, jadi silakan baca materi ini setelah kamu telah siap untuk mengambil final live coding di Senin pekan depan.
- :notebook_with_decorative_cover:
[Mengenal DOM](/modules/js-dom-intro.md)
- :notebook_with_decorative_cover:
[Membuat DOM](/modules/js-dom-creation.md)
- :notebook_with_decorative_cover:
[Menjelajah DOM](/modules/js-dom-transversing.md)
## Kamis - Document Object Model
Mulai hari ini, kamu akan berkenalan dengan DOM, topik baru yang dapat kamu manfaatkan untuk berlatih memanipulasi halaman HTML dan tampilannya dengan JavaScript. (Yap, betul. Back to HTML!)
Materi & Referensi :
- :notebook_with_decorative_cover:
[Mengenal DOM](/modules/js-dom-intro.md)
- :notebook_with_decorative_cover:
[Membuat DOM](/modules/js-dom-creation.md)
- :notebook_with_decorative_cover:
[Menjelajah DOM](/modules/js-dom-transversing.md)
Tugas :
- 💪
[[**Latihan Pribadi 1**] Memanipulasi Element HTML](modules/anchor-js-dom-manipulation.md)
- 💪
[[**Latihan Pribadi 2**] Memanipulasi dan Menjelajah DOM](modules/anchor-js-dom-transverse-manipulation.md)
- 💪
[[**Latihan Pribadi 3**] Membuat Validasi Form menggunakan JavaScript](modules/anchor-js-form-validation.md)
- 💪
[[**Latihan Pribadi 4**] Membuat Element HTML Dinamis Dengan JavaScript](modules/anchor-js-dom-creation.md)
## Jumat - Final Project!
Tibalah di hari terakhir fase 0. Kamu akan ditantang untuk membuat final project web app apapun memanfaatkan topik DOM. Final Project ini paling lambat dikumpulkan di sabtu malam agar kamu punya waktu luang untuk berkreasi dan mempersiapkan diri ke fase 1. Final Project sebagai syarat untuk student yang telah memenuhi final live code dan nilai tugas agar bisa masuk ke fase 1.
- :anchor:
[[**Final Project**] Membuat Web App menggunakan HTML, CSS, dan JavaScript](modules/anchor-js-dom-web-app.md)
## Sabtu dan Minggu
- [Refleksi kegiatan pekan ini](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/reflection.md)
- [Blogging teknikal terkait skill pekan ini](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/blog.md)
Selamat berpetualang dengan istilah dan teknologi yang makin seru! Jika ada hal yang perlu ditanyakan, langsung saja berdiskusi di grup ya.
Salam,
Tim Hacktiv8

================================================
FILE: README.md
================================================
# HACKTIV8 Phase 0 Activities
Phase 0 adalah aktivitas yang mempersiapkan murid untuk mampu memahami dan masuk ke dalam Phase 1 Program
Full-Stack JavaScript Development Course di HACKTIV8. Repositori ini digunakan sebagai acuan untuk pembelajaran dan bersifat wajib untuk dipelajari dan dikerjakan untuk berkesempatan melanjutkan ke dalam Phase 1.
Materi di bagi ke dalam enam minggu, yang tiap minggu nya terdiri dari berbagai fokus materi. Kebanyakan dari
materi dan tantangan yang tertera pada repositori ini hanya dapat di akses oleh murid yang sedang aktif di dalam phase 0 batch program.
### [Week 1: Membuat Website Pertama Saya](./README-WEEK-1.md)
### [Week 2: Mengenal JavaScript](./README-WEEK-2.md)
### [Week 3: Mendalami JavaScript](./README-WEEK-3.md)
### [Week 4: Bermain Logic di JavaScript](./README-WEEK-4.md)
### [Week 5: Bermain Logic di JavaScript](./README-WEEK-5.md)
### [Week 6: Menguasai JavaScript ES6 dan Paradigma Programming](./README-WEEK-6.md)
================================================
FILE: checklist.md
================================================
Berikut adalah list challenges yang wajib diselesaikan karena akan diperhitungkan sebagai completion rate.
List di bawah ini merupakan summary dari kegiatan week 2 - 4 yang bertanda :anchor:
Pedoman :
- https://github.com/hacktiv8/phase-0-activities/blob/master/README-WEEK-2.md
- https://github.com/hacktiv8/phase-0-activities/blob/master/README-WEEK-3.md
- https://github.com/hacktiv8/phase-0-activities/blob/master/README-WEEK-4.md
## Week 2 (13 poin)
1. Membuat thinking.html / leaarning.html
2. menyelesaikan https://www.codecademy.com/learn/javascript unit 1 dan 2
3. Menyelesaikan codecademy https://www.codecademy.com/learn/javascript unit 3, 4, dan 5
4. Membuat Konversi Waktu
5. Membuat Order String
6. Membuat function palindrome
7. Membuat fungsi matematika dasar
8. Membuat permainan suit lokal
9. Menyelesaikan codecademy https://www.codecademy.com/learn/javascript unit 6, 7, dan 8
10. Membuat function format huruf
11. Membuat function separate number
12. Membuat function format angka
13. Membuat daftar kontak sederhana
## Week 3 (16 poin)
1. Challenge-Cek Bilangan Prima
2. Challenge-Index Bilangan Prima
3. Challenge-Jenis Bilangan
4. Challenge-Bilangan Faktor
5. Challenge-Faktor Prima
6. Challenge-Palindrome 2
7. Challenge-String Compression
8. Challenge-Cek String
9. Challenge-Remove Duplicate
10. Membuat permainan tebak angka
11. Challenge-Array 1
12. Challenge-Repeated Letter
13. Challenge-Pergeseran Huruf
14. Challenge-Pola Angka
15. Challenge-Cek Angka
16. Challenge-Konversi Huruf dan Angka
## Week 4 (6 poin)
1. Challenge-Menu Restaurant
2. Challenge-Recursive Range Angka
3. Challenge-Promo Menu
4. Challenge-Recursive is Even Number
5. Challenge-Promo Credit Card
6. Challenge-Recursive Angka Kuadrat
================================================
FILE: modules/README-WEEK-5-old-dom.md
================================================
## DEPRECATED.
# Hacktiv8 Phase 0 Week 5: The World of DOM

Selamat sudah melalui kegiatan pekan keempat! Dua hari pertama akan memantapkan logika kamu dalam JavaScript, dan setelah tiga minggu penuh bermain dengan console dan logika, minggu ini kita akan "refreshing" sejenak dan mempelajari DOM, yang akan membuat website kamu menjadi interaktif dan menarik!

## Senin - DOM Introduction
Akhirnya beberapa pekan tantangan yang penuh logika berakhir. Sekarang, kamu akan mencoba bermain dengan DOM dan pada akhirnya membuat aplikasi web yang interaktif dengan JavaScript. Anggap saja beberapa hari ini sebagai refreshing dari pekan lalu, dan hasil dari pekan ini pun akan menghasilkan aplikasi web yang menarik dan interaktif.
- :notebook_with_decorative_cover: [Memahami Document Object Model](modules/js-dom-intro.md)
- :anchor: [Seleksi dan Manipulasi DOM Sederhana](modules/anchor-js-dom-manipulation.md)
- :pushpin: [Form Pengumpulan Tugas Week 5](https://airtable.com/shrZrcEN6oV9Gb25d)
## Selasa - DOM Transversing
Setelah mencoba menseleksi DOM, hari ini saatnya kita belajar bagaimana melakukan DOM transversing atau disebut juga penjelajahan DOM.
- :notebook_with_decorative_cover: [Memahami DOM Transversing](modules/js-dom-transversing.md)
- :anchor: [Penjelajahan dan Manipulasi DOM Sederhana](modules/anchor-js-dom-transverse-manipulation.md)
- :pushpin: [Form Pengumpulan Tugas Week 5](https://airtable.com/shrZrcEN6oV9Gb25d)
## Rabu - DOM Events
Ternyata bermain dan menjelajah DOM sangat menarik, walaupun hingga saat ini kita masih belum bisa membuat web yang interaktif. Hari ini mulai saatnya kita bisa menambah sisi interaktif dari web kita!
- :notebook_with_decorative_cover: [Memahami DOM Events](modules/js-dom-events.md)
- :anchor: [Validasi Form dengan JavaScript](modules/anchor-js-form-validation.md)
- :pushpin: [Form Pengumpulan Tugas Week 5](https://airtable.com/shrZrcEN6oV9Gb25d)
## Kamis - Menyusun Halaman HTML dengan JavaScript
Sebelumnya kita telah belajar menseleksi, menjelajah, dan membuat halaman kita interaktif. Tapi ternyata kita juga bisa menyusun HTML element sendiri dengan JavaScript lho! Saatnya kita menyusun web kita dengan JavaScript!
- :notebook_with_decorative_cover: [Membuat DOM Secara Dinamis](modules/js-dom-creation.md)
- :anchor: [Menyusun Layout HTML dengan JavaScript](modules/anchor-js-dom-creation.md)
- :pushpin: [Form Pengumpulan Tugas Week 5](https://airtable.com/shrZrcEN6oV9Gb25d)
## Jumat - Interactive App using JavaScript
Kamu telah mempelajari event dan manipulasi DOM dengan vanilla JavaScript. Sekarang saatnya kamu membuat sebuah website yang interaktif menggunakan pengetahuan yang telah kita dapatkan satu minggu kebelakang.
- :notebook_with_decorative_cover: [Mengubah Style DOM Secara Dinamis](modules/js-dom-style.md)
- :books: [Memberikan Animasi sederhana dengan CSS dan JS](modules/animation-using-css-and-js.md)
- :anchor: [WEEKLY PROJECT - Web App / Game using DOM Manipulation](modules/anchor-js-dom-web-app.md)
- :pushpin: [Form Pengumpulan Tugas Week 5](https://airtable.com/shrZrcEN6oV9Gb25d)
## Sabtu dan Minggu
- [Refleksi kegiatan pekan ini](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/reflection.md)
- [Blogging teknikal terkait skill pekan ini](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/blog.md)
Selamat berpetualang dengan istilah dan teknologi yang makin seru! Jika ada hal yang perlu ditanyakan, langsung saja berdiskusi di grup ya.
Salam,
Tim Hacktiv8

================================================
FILE: modules/algorithm-pseudocode.md
================================================
# Learn Algorithm and Pseudocode
## Objectives
- ▢ Memahami struktur alur program dengan algoritma dan pseudocode
## Learnings
### Mengenal Algoritma
Belajar pemrograman tentu saja memerlukan banyak berpikir secara logika, sehingga kita bisa memecahkan masalah atau melakukan kegiatan yang kita targetkan. Agar kita bisa menjelaskan alur logika kita, perlu digunakan algoritma.
Namun apa itu algoritma? Mari kita ilustrasikan terlebih dahulu.
Bagaimana cara kamu menggunakan komputer sehari-hari? Mulai dari menekan tombol on/off, menunggu proses booting, memasukkan password, membuka aplikasi yang dibutuhkan, kemudian bekerja sesuai aplikasi tersebut. Atau lain lagi, bagaimana cara menggunakan smartphone? Cukup unlock dari posisi standby, lalu pilih dan buka aplikasi yang dibutuhkan, dan seterusnya.
Nah itulah algoritma, kumpulan proses ataupun aturan untuk melakukan atau menyelesaikan sesuatu. Sesuatu ini biasanya berupa masalah atau kegiatan yang langkah-langkahnya pasti terbatas (tidak terus-menerus).
Dalam menggunakan bahasa pemrograman, kita bisa menggunakan atau bahkan tidak perlu menggunakan algoritma. Tapi hampir 99% pastinya perlu algoritma. Misalnya saja kita sudah tahu algoritma dasar dari perulangan dan perkondisian.
Algoritma bisa sesederhana kita jabarkan langkah-langkahnya seperti tadi, atau kita visualisasikan dalam bentuk flowchart seperti berikut.

- ▢ Tonton video ini jika perlu: [What is an algorithm and why should you care? - Intro to algorithms on Khan Academy](https://www.khanacademy.org/computing/computer-science/algorithms/intro-to-algorithms/v/what-are-algorithms)
### Basic Simbol / Notasi Flowchart
Flowchart merupakan diagram yang menggambarkan algoritma, atau proses-proses, yang digunakan untuk memecahkan suatu masalah. Intinya, flowchart bisa dipakai sebelum menulis kode karena syntax lebih mudah digambar. Syntax basic flowchart seperti berikut:
##### Start/End

##### Input/Output

##### Process

##### Conditional (IF)

Banyak tools software yang dapat kamu gunakan untuk menggambar flowchart. salah satunya tools online editor [draw.io](https://www.draw.io/)
Bagi kalian yang nanti akan membuat sebuah sistem yang complex, menggambar flowchart bisa jadi hal pertama yang kalian lakukan sebelum coding. Kenapa ?
Karena untuk membuat sebuah sistem yang kompleks kalian harus punya gambaran yang jelas dari proses atau prosedur dari awal hingga akhir sistem yang kalian buat. Kalau tidak ada flowchart kadang di tengah pengerjaan project kita lupa alur dari sistem yang kita buat. Tentu hal ini akan mempengaruhi codingan kalian.
### Mengenal Pseudocode
Atau agar lebih rapi, kita gunakan pseudocode. Psedudocode adalah konvensi terstruktur atau cara menyajikan penjelasan algoritma dengan bahasa yang deskriptif seperti kita menulis kalimat biasa sehingga mudah kita baca. Umumnya digunakan bahasa Inggris atau bahasa perantara yang mirip bahasa pemrograman. Lihatlah contoh algoritma penambahan angka sederhana dengan pseudocode berikut.
**Bahasa Inggris**
```
READ and SAVE "first number"
READ and SAVE "second number"
COMPUTE "first number" added by "second number"
SAVE previous computation result
SHOW the computation result
```
Bahasa inggris diatas nantinya akan diubah menjadi bahasa pemrograman yang kita mau. Dibawah ini adalah contoh hasil konversi pseudocode diatas menjadi kode di bahasa lain. Saat ini kamu hanya cukup melihat hasil konversinya sekilas saja, tidak harus dipelajari, karena kita akan fokus pada pseudocode terlebih dahulu.
**JavaScript**
```
var a,b,c;
a = prompt("First Number?");
b = prompt("Second Number?");
c = Number(a) + Number(b);
console.log(c);
alert("Result = " + c);
```
Dengan begini, kita bisa menjelaskan proses atau alur logika tanpa bahasa pemrograman tertentu. Sehingga juga logika yang sama bisa ditransfer atau diterapkan ke bahasa pemrograman lain. Misalnya...
**Python**
```
a = input("First Number? ")
b = input("Second Number? ")
c = int(a) + int(b)
print("Result", c)
```
**Ruby**
```
puts "First Number?"
a = gets.chomp
puts "Second Number?"
b = gets.chomp
c = a.to_i + b.to_i
puts c
```
### Lebih dalam tentang Pseudocode
Berikut adalah contoh yang perlu kamu tahu saat membuat pseudocode. **Jangan Terpaku 100% dengan contoh, karena dalam pseudocode tidak terpaku pada penggunakan kata tertentu. Selama pseudocode dapat dimengerti sesama pembaca, maka sudah cukup bisa digunakan.** Kita bisa menggunakan huruf kapital untuk keyword yang ditekankan dari sebuah step. Misal: CALCULATE 5 plus 2, atau DISPLAY "hello".
#### Storing Values
Biasanya, pada saat kita belajar matematika atau fisika, kita akan bertemu dengan rumus. Paling sederhana adalah rumus luas persegi, yaitu width dikalikan height.
Kita sebagai manusia dengan natural dapat langsung mengkalkulasi nilai panjang dan lebar untuk mendapatkan luas. Tapi, komputer tidak semudah itu. Komputer harus menyimpan nilai panjang dan nilai lebar di dalam memori. Memori komputer, bayangkan saja seperti otak kita yang bisa menyimpan berbagai informasi. Sebetulnya, saat kita menghitung panjang dan lebar secara tidak sadar kita pun menampung nilai tersebut di kepala kita.
Contoh Pseudocode
```
STORE "width" with any value
STORE "height" with any value
STORE "area" without any value
CALCULATE "width" times "height"
SET "area" value with calculation result
DISPLAY "area"
```
Bisa dilihat dari pseudocode diatas, ada beberapa step yang kita jalankan. Mari kita bahas tiap step ke bahasa yang lebih "manusiawi" :)
1. Simpan "width" dengan nilai berapapun
2. Simpan "height" dengan nilai berapapun
3. Simpan "area" tanpa diberikan nilai. Ini akan kita isi nanti.
4. Hitung hasil perkalian "width" dengan "height"
5. Setelah mendapatkan hasil perhitungan, isikan hasilnya ke dalam "area"
6. Tampilkan nilai dari "area"
#### Conditional
Saat komputer menjalankan program, seringkali komputer harus melakukan sebuah tindakan jika suatu kondisi terpenuhi. Mudahnya, di kehidupan sehari-hari misalnya, jika kita lapar, kita akan makan. "Jika kita lapar" adalah sebuah kondisi, dan "kita akan makan" adalah step yang hanya akan dijalankan apabila kondisi tersebut terpenuhi.
Contoh Pseudocode
```
IF "hungry"
DO "eat"
DISPLAY "i am happy"
```
Jika kita lihat pseudocode diatas, bisa dijabarkan sebagai step berikut
1. Jika lapar, maka masuk ke step 2. Jika tidak, abaikan step 2 dan langsung ke step 3.
2. lakukan proses "eat"
3. Tampilkan "i am happy"
Yang terjadi disini ada dua kemungkinan. Jika lapar, step 2 akan diabaikan. Kita bisa lihat dari pseudocode dimana "eat" kita buat menjorok ke dalam (ingat dengan identasi di HTML? ya betul! :D) untuk menunjukkan semua proses yang menjorok ke dalam setelah sebuah kondisi merupakan proses yang dijalankan hanya jika kondisi terpenuhi.
Tidak hanya sampai disana, kondisional bisa juga melakukan proses yang hanya dijalankan jika kondisi tidak terpenuhi. Misal, saat nilai ujian dibawah 70, saya harus berlajar lebih giat. Tapi jika tidak, maka saya layak memberi reward untuk diri sendiri.
Contoh Pseudocode
```
STORE "score" to any number
IF "score" < 70
DO "learn more"
ELSE
DO "reward myself"
DO "continue with life..."
```
Nah disini terjadi yang biasa dinamakan percabangan. Jika score dibawah 70, maka kita akan "learn more", dan jika tidak, maka kita harus "reward myself".
Namun apapun kondisinya, kita pasti akan masuk ke step "continue with life..."
Pseudocode diatas bisa digambarkan ke step berikut:
1. Jika "score" dibawah 70, masuk ke step 2a. Jika tidak, masuk ke step 2b.
2a. Lakukan "learn more"
2b. Lakukan "reward myself"
3. Lakukan "continue with life..."
Saat program berjalan, berarti hanya ada dua kemungkinan. Antara menjalankan step 1 -> 2a -> 3, atau step 1 -> 2b -> 3.
#### Looping
Nah sekarang kita akan masuk ke bagian terakhir yang dibutuhkan hari ini dan sekaligus yang sedikit lebih sulit dibandingkan bagian sebelumnya, yaitu perulangan.
Komputer seringkali dibutuhkan untuk melakukan sebuah proses yang sama berulang-ulang. Hal ini sering disebut sebagai **looping**. Tentunya, saat komputer melakukan looping, pasti ada kalanya proses tersebut akan berhenti. Sama hal nya saat kita sebagai manusia melakukan berbagai hal yang berulang, pasti ada kalanya kegiatan itu kita hentikan. Nah, looping sebetulnya melibatkan yang sudah kita pelajari sebelumnya, yaitu conditional. Looping akan terus dilakukan sampai sebuah kondisi terpenuhi. Contoh mudahnya adalah, kita akan makan hingga kenyang bukan?
Contoh Pseucodode
```
WHILE "hungry"
DO "eat"
```
Nah, pseudocode di atas cukup simple dan mencontohkan kita proses paling sederhana dalam looping. WHILE adalah standard keyword untuk menunjukkan kondisi "selama kita masih lapar", lakukan proses makan.
Biasanya, saat kita membuat looping, ada sebuah proses yang dilakukan untuk mencapai kondisi tersebut. Kita coba perbaiki contoh pseudocode diatas, dengan asumsi kemampuan makan kita dalam sekali makan adalah 5 sendok nasi. Kita coba umpakan kemampuan makan ini sebagai "hungry level".
```
STORE "full level" with 0
WHILE "full level" < 5
ADD "full level" by 1
DISPLAY "I'm full!"
```
Nah, looping kali ini sudah lebih mendekati coding sebenarnya. Saat terjadi looping, harus ada proses apapun yang akan membuat kondisi perulangan lambat laun akan terpenuhi. Pseudocode di atas menggambarkan kita mulai dari level kenyang kita dari 0, berarti kita saat ini sangat lapar. Setiap kali kita melakukan proses makan, tingkat kenyang kita akan bertambah 1. Karena kita hanya kuat makan hingga 5 kali, maka kondisinya adalah "full level" < 5.
Kita coba ilustrasikan step pseudocode diatas:
1. Simpan nilai "full level" dengan angka 0
2. Ulangi step 3 selama "full level" masih dibawah 5. Jika "full level" sudah 5, lanjut ke step 4.
3. Tambah "full level" dengan 1, agar semakin mendekati batas perulangan. Kembali ke step 2.
4. Tampilkan "I'm full", berarti saya sudah sangat kenyang!
Ternyata, setelah dijabarkan, looping tidak begitu sulit, bukan? Nah, sebuah komputer tentu saja dapat memiliki program yang sangat memungkinkan menggabungkan penyimpanan nilai, kondisi, dan perulangan dengan sekaligus. Disini, kita sebagai calon programmer diwajibkan untuk mampu menggabungkan berbagai konsep ke dalam satu kesatuan.
Kita akan coba membuat pseudocode yang menggunakan looping dan conditional sekaligus, berangkat dari kasus berikut:
Seorang anak SD sedang belajar angka genap dan ganjil. Dia ditugaskan oleh ibu guru untuk menghitung angka dari 1 sampai 10 dengan menyebut angka tersebut dan untuk setiap angka ganjil, ia harus menyebut "ODD!" dan sebaliknya jika genap, ia harus menyebut "EVEN!".
Tunggu! Angka disebut genap jika habis dibagi dua. Tapi bagaimana saya menyebutnya di pseudocode? Mudah, caranya adalah menggunakan yang namanya mod, atau kepanjangannya modulo. Modulo, adalah sebuah proses matematika untuk mendapatkan remainder atau sisa bagi dari sebuah proses pembagian. Misal, angka 3 jika dibagi 2 sisanya adalah 1. Nah berarti kita bisa menyebutkan proses ini sebagai 3 mod 2.
Contoh Pseudocode
```
STORE "count" to 1
WHILE "count" < 11
DISPLAY "count"
CALCULATE "count" mod 2
STORE "remainder" to the result of calculation
IF "remainder" equals to 0
DISPLAY "EVEN!"
ELSE
DISPLAY "ODD!"
```
### References
- [What is a computer algorithm? on HowStuffWorks](http://computer.howstuffworks.com/question717.htm)
- [Algorithm, on Wikipedia](https://en.wikipedia.org/wiki/Algorithm)
- [Algorithms Course on Khan Academy](https://www.khanacademy.org/computing/computer-science/algorithms)
- [Sorting Algorithm Animations](http://sorting-algorithms.com)
- [VisuAlgo: Visualising data structures and algorithms through animation](http://visualgo.net)
- [Notes on Algorithms, Pseudocode, and Flowcharts - Dr. Burford J. Furman](http://www.engr.sjsu.edu/bjfurman/courses/ME30/ME30pdf/Notes_on_Algorithms.pdf)
- [Pseudocode Standard - Dr. John Dalbey](http://users.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html)
================================================
FILE: modules/anchor-akses-array.md
================================================
# Mengakses Nilai Dalam Array
Tahukah kamu jika *string* adalah sebuah *array*? Kamu dapat mengakses karakter-karakter pada sebuah string layaknya mengakses nilai pada sebuah array. Untuk membuktikannya, kerjakanlah tantangan ini!
## Objectives
- Mengetahui *properties* Pada Array
- Mengerti Cara Mengakses Nilai Dalam Array
## Directions
Buatlah sebuah fungsi dengan nama **balikString**. Fungsi ini akan menerima argumen sebuah string dan mengembalikan kebalikannya.
### Example
```javascript
//input "hello world!"
//output
"!dlrow olleh"
```
### Hints
Untuk membantumu mengerjakan tantangan ini, gunakanlah properti `length` pada sebuah array yang akan memberikan panjang dari array-nya. Ingat, indeks sebuah array pada JavaScript dimulai dari 0. **Untuk tugas ini, kamu wajib menggunakan looping dan dilarang menggunakan sintaks .reverse!**
================================================
FILE: modules/anchor-basic-function.md
================================================
# Mengenal Penggunaan Function
## Objectives
- Mampu memahami serta mengimplementasi penggunaan function pada JavaScript
## Directions
1. Lanjutkan kode berikut ini hingga dapat menampilkan nilai / output yang diminta!
### Tugas 1
Buatlah sebuah fungsi bernama shoutOut(), yang mengembalikan nilai berupa "Halo Function!", yang kemudian
akan ditampilkan di console.
```JavaScript
/*
BUATLAH KODE FUNCTION DISINI
*/
console.log(shoutOut()) // Menampilkan "Halo Function!" di console
```
### Tugas 2
Buatlah sebuah fungsi bernama calculateMultiply(), yang mengembalikan nilai berupa hasil kali dari dua parameter yang dikirim.
```JavaScript
/*
BUATLAH KODE FUNCTION DISINI
*/
var num1 = 5;
var num2 = 6;
var hasilPerkalian = calculateMultiply(num1,num2);
console.log(hasilPerkalian); // Menampilkan angka 30
```
### Tugas 3
Buatlah sebuah fungsi bernama processSentence(), yang akan memproses seluruh parameter yang diinput menjadi satu kalimat berikut: "Nama saya [Name], umur saya [Age] tahun, alamat saya di [Address], dan saya punya hobby yaitu [hobby]!"
```JavaScript
/*
BUATLAH KODE FUNCTION DISINI
*/
var name = "Agus";
var age = 30;
var address = "Jln. Malioboro, Yogjakarta";
var hobby = "gaming";
var fullSentence = processSentence(name,age,address,hobby);
console.log(fullSentence); // Menampilkan "Nama saya Agus, umur saya 30 tahun, alamat saya di Jln. Malioboro, Yogjakarta, dan saya punya hobby yaitu gaming!"
```
================================================
FILE: modules/anchor-before-recursive.md
================================================
# Pemanasan Sebelum Tantangan Recursive
Tantangan ini berguna untuk mempersiapkan kamu mengerjakan tantangan rekursi. Pastikan solusimu benar agar dapat mengerjakan tantangan [selanjutnya](https://github.com/hacktiv8/phase-0-activities/blob/master/modules/anchor-recursive.md) dengan baik.
# Directions
- Buatlah 2 buah function berbeda. Beri nama function sesuai dengan keinginanmu. Gunakan *looping* untuk menyelesaikan tugas ini.
- Function pertama menerima 1 parameter berupa angka. Sedangkan function kedua menerima 2 parameter yang keduanya juga angka.
- Tugas function pertama adalah untuk menghitung deret perkalian sederhana, dimana parameternya menentukan nilai pertama dari deret. Nilai akhir dari deret adalah angka terkecil **N**, dimana **N** > 0. Function akan mengembalikan total deret tersebut.
> **cara kerja fungsi pertama**
> parameter = 5
> keluaran = 5 * 4 * 3 * 2 * 1 = 120
- Tugas function kedua hampir sama dengan function pertama. Yang membedakannya adalah parameter kedua menentukan beda antar angka dalam deret.
> **cara kerja fungsi kedua**
> parameter1 = 12, parameter2 = 5
> keluaran = 12 * 7 * 2 = 168
================================================
FILE: modules/anchor-belajar-for.md
================================================
# Melakukan *Looping* Menggunakan `For`
## Objectives
* Mengerti Cara Melakukan *Looping* Menggunakan `For`
* Mengetahui Operator *Increment* dan *Decrement*
## Directions
Pada tugas ini kamu diminta untuk melakukan *looping* dalam JavaScript dengan menggunakan *syntax* `for`. Untuk membuat tantangan ini lebih menarik, kamu juga diminta untuk membuat suatu *looping* yang menghitung maju dan menghitung mundur. Jangan lupa tampilkan di console juga judul 'LOOPING PERTAMA' dan 'LOOPING KEDUA'.
## Hints
> Operator `++` disebut dengan operator *Increment*
> Operator `--` disebut dengan operator *Decrement*
## Output
```
LOOPING PERTAMA
1 - I love coding
2 - I love coding
3 - I love coding
4 - I love coding
5 - I love coding
6 - I love coding
7 - I love coding
8 - I love coding
9 - I love coding
10 - I love coding
11 - I love coding
12 - I love coding
13 - I love coding
14 - I love coding
15 - I love coding
16 - I love coding
17 - I love coding
18 - I love coding
19 - I love coding
20 - I love coding
LOOPING KEDUA
20 - I will become fullstack developer
19 - I will become fullstack developer
18 - I will become fullstack developer
17 - I will become fullstack developer
16 - I will become fullstack developer
15 - I will become fullstack developer
14 - I will become fullstack developer
13 - I will become fullstack developer
12 - I will become fullstack developer
11 - I will become fullstack developer
10 - I will become fullstack developer
9 - I will become fullstack developer
8 - I will become fullstack developer
7 - I will become fullstack developer
6 - I will become fullstack developer
5 - I will become fullstack developer
4 - I will become fullstack developer
3 - I will become fullstack developer
2 - I will become fullstack developer
1 - I will become fullstack developer
```
================================================
FILE: modules/anchor-belajar-operator-mtk.md
================================================
# 2. Belajar Menggunakan Operator Matematika
## Objectives
* Mengerti Cara Penggunaan Operator Matematika
* Mengerti Kegunaan Tiap-tiap Operator
* Mengetahui Kegunaan Operator `+` selain untuk menghitung
## Directions
Gunakan kembali kode yang sudah kamu buat [sebelumnya](./belajar-variabel.js) untuk mengerjakan tugas ini (kecuali bagian dengan `console.log()`). Pada tugas ini kamu diajak untuk mengimplementasikan operator matematika. Dibawah ini sudah diberikan potongan *source code* yang perlu kamu lengkapi. Lakukan deklarasi variabel dan operasi matematis sedemikian sehingga keluaran program-mu sama seperti **output** yang diinginkan.
```javascript
// deklarasikan variabel dan lakukan operasi mulai dari sini
// kode dibawah tidak boleh diubah
console.log(total);
console.log(substract);
console.log(multiply);
console.log(division);
console.log(modulus);
console.log(words);
console.log(wordnumber);
console.log(numberword)
```
### Hints
> * Deklarasikan variabel dengan lengkapi
### Output
> 39
> 27
> 198
> 5.5
> 3
> "foobar"
> "foo33"
> "6bar"
================================================
FILE: modules/anchor-belajar-variabel.md
================================================
# 1. Belajar Tentang Variabel pada JavaScript
## Objectives
* Mengerti cara *assignment* pada variabel
* Mengerti cara memanggil data dengan variabel
## Directions
Terdapat beberapa data dibawah ini yaitu:
* 33
* 6
* 'foo'
* 'bar'
* true
* false
Dan juga terdapat beberapa nama variabel yang boleh kamu buat antara lain:
* number1
* number2
* string1
* string2
* boolean1
* boolean2
tugas kamu adalah melakukan *assignment* pada variabel-variabel yang tersedia dengan data yang ada dan menuliskannya menggunakan `console.log()`.
### Hint
* JavaScript memang tidak memiliki tipe data secara eksplisit, namun solusi yang benar dari tugas ini adalah menempatkan data pada variabel dengan nama yang sesuai.
* Deklarasikan variabel dengan lengkap
* Keluarkan output dengan memanggil variabel, bukan data
* Gunakan sebuah `console.log()` untuk masing-masing variabel.
### Output
```javascript
33
6
"foo"
"bar"
true
false
```
================================================
FILE: modules/anchor-belajar-while.md
================================================
# Melakukan *Looping* Menggunakan `While`
## Objectives
* Mengerti Cara Melakukan *Looping* Menggunakan `While`
## Directions
Pada tugas ini kamu diminta untuk melakukan looping dalam JavaScript dengan menggunakan syntax while. Untuk membuat tantangan ini lebih menarik, kamu juga diminta untuk membuat suatu looping yang menghitung maju dan menghitung mundur. Jangan lupa tampilkan di console juga judul 'LOOPING PERTAMA' dan 'LOOPING KEDUA'.
## Output
```
LOOPING PERTAMA
2 - I love coding
4 - I love coding
6 - I love coding
8 - I love coding
10 - I love coding
12 - I love coding
14 - I love coding
16 - I love coding
18 - I love coding
20 - I love coding
LOOPING KEDUA
20 - I will become fullstack developer
18 - I will become fullstack developer
16 - I will become fullstack developer
14 - I will become fullstack developer
12 - I will become fullstack developer
10 - I will become fullstack developer
8 - I will become fullstack developer
6 - I will become fullstack developer
4 - I will become fullstack developer
2 - I will become fullstack developer
```
================================================
FILE: modules/anchor-case-to-pseudocode.md
================================================
# Mengubah Kasus Menjadi Pseudocode
## Objectives
- Mampu menganalisa kasus dan mengubahnya dalam bentuk pseudocode
## Directions
1. Ubah semua kasus di bawah ke dalam bentuk pseudocode
### Tugas 1
Buatlah sebuah pseudocode yang mengambil dua angka, dan menghitung serta menampilkan hasil perkalian dari kedua bilangan tersebut.
hint: Gunakan kata kunci `SIMPAN`, `HITUNG`, dan `TULISKAN`.
### Tugas 2
Buatlah sebuah pseudocode yang mengambil sebuah kata, dan jika kata yang diambil bertuliskan "Saya Belajar JavaScript!", tampilkan "Pasti Bisa!".
hint: Gunakan kata kunci `SIMPAN`, `IF`, dan `TULISKAN`.
### Tugas 3
Buatlah sebuah pseudocode yang mengambil sebuah angka. Tampilkan sebuah deret angka yang habis dibagi 3 dan dimulai dari angka 1. Deret angka akan berhenti sampai deret angka tersebut mencapai angka yang disimpan sebelumnya.
hint: Gunakan kata kunci `SIMPAN`, `ULANGI`, dan `TAMPILKAN`.
================================================
FILE: modules/anchor-css-layouting.md
================================================
# Menghias Laman HTML dengan CSS Layouting
## Objectives
Dengan menggunakan CSS kamu dapat membuat layout serta menghias halaman HTML yang sebelumnya sudah dibuat menjadi lebih bagus. Kali ini kamu ditantang untuk membuat layout web blog sederhana!
## Directions
### 1. Membuat File HTML
Buatlah sebuah file HTML bernama *index.html* di sebuah folder bernama *project-css-layouting*.
Gunakan kode yang sudah disiapkan berikut:
```html
Lorem Ipsum Dolor Sit Amet, mea te verear signiferumque, per illum labores ne. Blandit omnesque scripserit pri ex, et pri dicant eirmod deserunt. Aeque perpetua ea nec. Sit erant patrioque delicatissimi ut. Et sea quem sint, nam in minim voluptatibus. Etiam placerat eam in.
Lorem Ipsum Dolor Sit Amet, mea te verear signiferumque, per illum labores ne. Blandit omnesque scripserit pri ex, et pri dicant eirmod deserunt. Aeque perpetua ea nec. Sit erant patrioque delicatissimi ut. Et sea quem sint, nam in minim voluptatibus. Etiam placerat eam in.
Lorem Ipsum Dolor Sit Amet, mea te verear signiferumque, per illum labores ne. Blandit omnesque scripserit pri ex, et pri dicant eirmod deserunt. Aeque perpetua ea nec. Sit erant patrioque delicatissimi ut. Et sea quem sint, nam in minim voluptatibus. Etiam placerat eam in.
Lorem Ipsum Dolor Sit Amet, mea te verear signiferumque, per illum labores ne. Blandit omnesque scripserit pri ex, et pri dicant eirmod deserunt. Aeque perpetua ea nec. Sit erant patrioque delicatissimi ut. Et sea quem sint, nam in minim voluptatibus. Etiam placerat eam in.
Lorem Ipsum Dolor Sit Amet, mea te verear signiferumque, per illum labores ne. Blandit omnesque scripserit pri ex, et pri dicant eirmod deserunt. Aeque perpetua ea nec. Sit erant patrioque delicatissimi ut. Et sea quem sint, nam in minim voluptatibus. Etiam placerat eam in.
```
### 2. Membuat File CSS
Buatlah sebuah file CSS bernama *style.css* pada folder yang sama dengan file *index.html* yang telah di hubungkan pada file html tersebut.
> ``
### 3. Menyiapkan Aset Gambar
Buatlah sebuah folder di project tersebut dengan nama *img*, dimana kita akan meletakkan aset gambar kita disana. Aset gambar bisa kamu save as dari gambar di bawah ini:


### 4. Membuat Layout dan Desain
Sesuaikan kode html yang telah terhubung dengan css di atas, buatlah halaman HTML menjadi lebih bagus dan sesuai dengan tampilan di bawah ini!

### 5. Pengumpulan
Upload tugas project dalam bentuk zip dari folder *project-css-styling*! **Perhatian** Hanya gunakan zip, jangan upload file isi nya satu per satu ataupun dengan rar, 7z, ataupun kompresi lainnya.
> **Syntax Penting**
> - color
> - font-size
> - font-family
> - background
> - font-weight
> - text-align
> - text-decoration
> - position
> - cursor
================================================
FILE: modules/anchor-css-selector-and-styling.md
================================================
# Menghias Laman HTML dengan CSS
## Objectives
Dengan menggunakan CSS kamu dapat menghias halaman HTML. Pada latihan kali ini, kamu telah diberikan file CSS. Kamu diminta untuk membuat id atau class yang menjadi selector yang tepat di HTML!
## Directions
### 1. Membuat File HTML
Buatlah sebuah file HTML bernama *index.html* di sebuah folder bernama *project-css-styling*.
Gunakan kode yang sudah disiapkan berikut:
```html
1. Selector dan Styling Sederhana
Saya adalah Box Berwarna Maroon
Saya adalah Box Berwarna Dark Blue
Saya adalah Box Berwarna Salem
2. Selector Lebih Dari Satu
Saya adalah Box Red berukuran 100
Saya juga Box Red tapi ukurannya 200
Saya adalah Box Blue berukuran 200
Saya juga berukuran 200 tapi warnanya Green
3. Selector Melalui Parent
Desain saya diatur oleh Parent Saya
Desain saya diatur oleh Parent Saya
Desain saya diatur oleh Parent Saya, tapi saya punya warna khusus, yaitu Gold!
```
### 2. Membuat File CSS
Buatlah sebuah file CSS bernama *style.css* pada folder yang sama dengan file *index.html* yang telah di hubungkan pada file html tersebut.
> ``
Kamu **wajib** menggunakan kode CSS dibawah ini dan tidak mengubah apapun:
```css
/* Style Default */
body {
font-family: 'Slabo 27px', serif;
}
h1 {
border-bottom: 1px solid rgba(0, 0, 0, .1);
padding-bottom: 10px;
}
.separator {
width: 100%;
height: auto;
overflow: hidden;
}
/* Style Untuk Soal 1, 2, dan 3. Gunakan Dengan Sesuai! */
.box-100 {
width: 100px;
height: 100px;
float: left;
margin: 20px;
padding: 20px;
font-size: 15pt;
text-align: center;
}
.box-200 {
width: 200px;
height: 200px;
float: left;
margin: 20px;
padding: 20px;
font-size: 15pt;
text-align: center;
}
#maroon-box {
color: #FFFFFF;
background: #96281B;
}
#dark-blue-box {
color: #FFFFFF;
background: #4B77BE;
}
#salem-box {
color: #FFFFFF;
background: #1E824C;
}
.red-background {
color: #FFFFFF;
background: #C0392B;
}
.blue-background {
color: #FFFFFF;
background: #446CB3;
}
.green-background {
color: #FFFFFF;
background: #26A65B;
}
.box-list div {
width: 200px;
height: 200px;
float: left;
margin: 20px;
padding: 20px;
font-size: 15pt;
text-align: center;
background: #353535;
color: #FFFFFF;
}
#gold-box {
border-radius: 20px;
color: #353535;
background: #F9BF3B;
}
```
### 3. Menambahkan Class dan Id yang sesuai di HTML!
CSS telah siap digunakan. Sekarang kamu harus menambahkan `class` atau `id` pada HTML element untuk memberikan desain kepada halaman HTML kita. Hasil akhir dari HTML yang dibuat harus tampil seperti berikut:

> **Syntax Penting**
> - class
> - id
================================================
FILE: modules/anchor-es5-to-es6.md
================================================
# Mengubah ES5 menjadi ES6
## Objectives
- Mampu memanfaatkan ES6
- Mampu mengkonversi kode ES5 ke ES6
## Directions
1. Ubah semua kode JavaScript dibawah ini ke dalam ES5. (setiap kode satu file JavaScript)
### Tugas 1
Ubahlah seluruh `var` pada kode JavaScript dibawah ini menjadi `let` atau `const`!
```javascript
var phi = 3.14;
var power = 2;
var radius = 0;
var calculateArea = function (radius) {
return phi * Math.pow(radius, power);
}
radius = 21;
var area21 = calculateArea(radius);
radius = 7;
var area7 = calculateArea(radius);
console.log('area with 21 radius: ' + area21 + ', and area with 7 radius: ' + area7);
```
### Tugas 2
Ubahlah anonymous functions dibawah ini menjadi ES6 Arrow Function!
```javascript
const multiply = function (num1, num2) {
return num1 * num2;
}
const divide = function (num1, num2) {
return num1 / num2;
}
const doubleMe = function (num) {
return num * 2;
}
console.log(multiply(5,2));
console.log(divide(10,2));
```
================================================
FILE: modules/anchor-es6-functional.md
================================================
# Memanfaatkan Map, Filter, dan Reduce
## Objectives
- Mampu memanfaatkan Map, Filter, dan Reduce
## Directions
1. Selesaikan beberapa kasus dibawah ini menggunakan sintaks yang diminta!
### Tugas 1
Buatlah sebuah code yang mentransformasi array menggunakan `map`!
```javascript
var transformArrToLowerCase = arr => {
// Ubah setiap element array menjadi lowercase!
};
console.log(transformArrToLowerCase(['BUDI', 'MArNi', 'mukIDi'])); // ['budi', 'marni', 'mukidi']
```
### Tugas 2
Buatlah sebuah code yang melakukan filter ke array menggunakan `filter`!
```javascript
var filterArrUnder10 = arr => {
// Filter setiap element array yang nilainya dibawah 10, sisakan yang 10 ke atas!
};
console.log(filterArrUnder10([1, 5, 12, 15, 20])); // [12, 15, 20]
```
### Tugas 3
Buatlah sebuah code yang mendapatkan nilai terbesar menggunakan `reduce`!
```javascript
var reduceFindMaximum = arr => {
// kembalikan sebuah nilai yang mengandung angka terbesar dengan reduce!
}
console.log(reduceFindMaximum([5, 1, 7, 6, 9])); // 9
```
================================================
FILE: modules/anchor-es6-oop-start.md
================================================
# Membuat ES6 Class Sederhana
## Objectives
- Mampu memanfaatkan Class pada ES6 untuk membangun object JavaScript
## Directions
1. Ubah kasus dibawah ini ke dalam bentuk ES6 Class.
### Tugas
Buatlah sebuah Class Mobil, yang memiliki atribut berikut:
- Merek,
- Harga,
- Warna,
- Bensin, dan
- Jumlah Roda.
Class tersebut juga bisa memanggil function dengan proses sebagai berikut:
- tampilkanSpesifikasi: menampilkan melalui console.log merek, harga, warna, bensin, dan jumlah roda dengan format berikut:
"Mobil saya bermerek Hando dengan harga 300000000 rupiah, berwarna merah, bensinnya solar, dan beroda 4".
- jualMobil: menampilkan melalui console.log harga mobil yang dikurangi 20%.
================================================
FILE: modules/anchor-es6-oop.md
================================================
# Membuat ES6 Class Lanjutan
## Objectives
- Mampu memanfaatkan Class pada ES6 untuk membangun object JavaScript
## Directions
1. Ubah kasus dibawah ini ke dalam bentuk ES6 Class.
### Tugas
Buatlah sebuah Class Student, yang memiliki atribut berikut:
- Name,
- Age,
- Date of Birth,
- Gender
- Student ID (bisa berupa angka atau teks), dan
- Hobbies (bisa menampung lebih dari 1 hobi).
Class tersebut juga bisa memanggil fungsi dengan proses sebagai berikut:
- SetName: mengubah nama student dengan mengirimkan satu parameter ke dalam fungsi berupa teks
- SetAge: mengubah umur student dengan mengirimkan satu parameter ke dalam fungsi berupa angka
- SetDateOfBirth: mengubah tanggal lahir student dengan mengirimkan satu parameter ke dalam fungsi berupa teks
- SetGender: mengubah gender student dengan mengirimkan satu parameter ke dalam fungsi berupa teks, dan hanya bisa menerima nilai `Male` atau `Female`
- addHobby: menambah hobi dengan mengirimkan satu parameter ke dalam fungsi berupa teks
- removeHobby: menghapus list hobi yang ada dengan mengirimkan satu parameter berupa teks, yang merupakan hobi apa yang akan dihapus
- getData: menampilkan seluruh data atribut murid
================================================
FILE: modules/anchor-jquery.md
================================================
# Membuat Website yang Interaktif dengan JQuery
Kamu telah mempelajari event dan manipulasi DOM dengan vanilla JavaScript maupun jQuery. Sekarang saatnya kamu membuat sebuah website yang interaktif menggunakan pengetahuan yang telah kita dapatkan dua hari kebelakang.
## Objectives
- Memahami event-handling dengan JQuery
- Memahami DOM Manipulation dengan JQuery
## Directions
- Unduh [file ini](assets/anchor-jquery.zip) untuk mulai mengembangkan website-mu.
- Pada file `index.html`, lengkapi konten halaman sesuai dengan perintah yang diberikan dan data yang kamu miliki.
- Kamu boleh memodifikasi file `style.css` sesuai dengan desain yang kamu inginkan.
- Secara *default*, desain halaman akan menjadi seperti contoh dibawah.
- Pada file `script.js`, lengkapi program JavaScript agar memiliki *behavior* yang sama seperti pada contoh dibawah.
- **Attention!** Kamu boleh menambah tapi tidak boleh mengurangi isi file.
- Apabila diinginkan, tambahkan konten dan *behavior* halaman website sesuai keinginanmu.
### Contoh Hasil Akhir

================================================
FILE: modules/anchor-js-dom-creation.md
================================================
# Menyusun Halaman HTML Dinamis di JavaScript
Setelah mengetahui tentang DOM selection dan manipulation serta DOM transversing, kita akan mencoba memanipulasi DOM kembali, tapi memanfaatkan penjelajahan DOM berdasarkan hubungan parent-child.
## Objectives
- Mengetahui Cara create DOM
- Mereview Cara menggunakan DOM Event
## Directions
- Buatlah suatu halaman HTML yang dinamis dibuat dari HTML "kosong" seperti berikut:
**index.html (Gunakan file index.html ini)**
```html
Tugas Anchor DOM!
```
Dan dengan teknik `createElement`, susunlah dengan dinamis menggunakan **script.js** untuk menjadikan HTML menjadi seperti di bawah ini:
**HASIL AKHIR**
```html
Tugas Anchor DOM!