Kemampuan Dasar

Memahami Ruang Lingkup Pengembangan Software

  1. Teknologi informasi dan teknologi software
  2. Metodologi Pengembangan Software

Tujuan

  1. Memahami teknologi informasi secara umum dan kaitannya dengan software.
  2. Memahami ranah pendidikan yang terkait dengan teknologi informasi: istilah teknik informatika / informatics, ilmu komputer / computer science.
  3. Memahami arti penting dari metodologi pengembangan software
  4. Memahami Agile Software Development secara umum
  5. Memahami dasar yang kuat dari praktik Agile Software Development: Extreme Programming dan Scrum

Pembahasan

  1. Teknologi informasi dan teknologi software
  2. Metodologi pengembangan software
  3. Extreme Programming dan Scrum

Pembelajaran

Materi dan Penjelasan
  1. Halaman Wikipedia - Information Technology, serta komponen-komponen dari TI dengan penekanan lebih pada software.
  2. Halaman StackExchange tentang perbedaan informatics dengan computer science.
  3. Halaman Wikipedia - Software Development memberikan penjelasan umum tentang aktivitas, model, serta hal-hal lain yang terkait dengan software development. Dengan mempelajari bagian ini, siswa diharapkan memahami bahwa software development merupakan aktivitas yang kompleks dan memerlukan berbagai macam roles / peran. Penerapan dari engineering ke dalam aktivitas software development ini disebut dengan Software Engineering
  4. Halaman Wikipedia - Agile Software Development membahas hal yang lebih spesifik dari software development, yaitu salah satu model / metodologi yang digunakan untuk membangun software.
  5. Halaman Wikipedia - Scrum membahas tentang salah satu process framework yang termasuk dalam metodologi Agile.
  6. Halaman Wikipedia - XP membahas tentang salah satu process framework yang termasuk dalam metodologi Agile.

Kemampuan Teknis Dasar 1: Sistem Operasi

  1. Sistem Operasi: UI, shell, utilities, shell script

Tujuan

  1. Memahami software paling mendasar: operating system
  2. Memahami ekosistem sistem operasi saat ini
  3. Memahami komponen-komponen sistem operasi - khususnya berbasis Linux
  4. Memahami UI di Linux (GUI dan text mode / shell)
  5. Memahami dan bisa menggunakan berbagai utilitas dasar dalam Linux
  6. Mehamami dasar-dasar dari shell script.

Pembahasan

  1. Cara software bekerja
  2. Ekosistem sistem operasi saat ini
  3. Komponen sistem operasi
  4. Untuk pemakai Linux:
    • Gambaran umum Linux
    • Komponen-komponen SO Linux
    • Windowing System di Linux
    • Linux console dan terminal
    • Utilitas dasar Linux
    • Shell Script
  5. Untuk pemakai macOS:
    • Gambaran umum macOS
    • Arsitektur Komponen-komponen macOS
  6. Untuk pemakai Windows:
    • Keluarga Windows OS
    • Komponen-komponen Windows

Pembelajaran

  1. Cara software menempati komputer kita serta bagaimana user berinteraksi dengan tasks komputasi. Tekankan pemahaman pada bagaimana sistem operasi bekerja.
  2. Overview dari daftar sistem operasi yang ada di dunia ini.
  3. Untuk pemakai Linux:
  4. Untuk pemakai macOS:
  5. Untuk pemakai keluarga Microsoft Windows:
Latihan

Catatan: semua hasil pada latihan ini disimpan pada direktori Coding-PGT/kemampuan-dasar-1/latihan (jika menggunakan Windows, pemisah antar direktori adalah \, jadi pada Windows hasilnya akan disimpan di Coding-PGT\kemampuan-dasar-1\latihan. Anda bebas menentukan lokasi tempat direktori Coding-PGT berada.

Untuk Pemakai Linux

  1. Boot laptop masing-masing, perhatikan proses booting dari awal, jika muncul Grub, usahakan melihat parameter dari Grub tersebut. Cari informasi di Internet tentang parameter Grub tersebut. Simpan hasil anda pada file teks biasa dengan nama file grub.txt.
  2. Cari informasi tentang software yang ada di laptop anda: display manager yang digunakan, window manager yang digunakan, desktop environment yang digunakan, serta shell apa yang digunakan. Dari mana bisa mengetahui informasi tersebut? Tulis jawaban pada file teks biasa dengan nama file env.txt.
  3. Cari lokasi dari kernel Linux, sebutkan file-file yang terkait dan kegunaannya. Tulis jawaban pada file teks biasa dengan nama file kernel-linux.txt.
  4. Masuk ke terminal / console dan kerjakan beberapa perintah berikut melalui command line / shell:
    • silahkan coba beberapa perintah di Guru99 dan E-Guide - PDF, minimal 10 perintah.
    • tulis hasil dari masing-masing perintah tersebut ke dalam file cmdline.txt (gunakan copy paste dari shell)
  5. Untuk latihan ini, letakkan hasil pada direktori Coding-PGT/kemampuan-dasar-1/latihan/shellscripts: silahkan coba 30 contoh shell script.

Untuk Pemakai macOS

  1. Kerjakan berbagai hal yang ada di artikel tentang beberapa utilities di macOS dan artikel ini. Tulis hasil semua yang anda coba pada file cmdline.txt.
  2. Untuk latihan ini, letakkan hasil pada direktori Coding-PGT/kemampuan-dasar-1/latihan/shellscripts: silahkan coba 30 contoh shell script. Jika anda menggunakan Zsh, silahkan kerjakan materi ini.

Untuk Pemakai Windows

  1. Kerjakan minimal 20 command line yang ada di daftar command line di Windows. Tulis hasil semua yang anda coba pada file cmdline.txt.
  2. Untuk latihan ini, letakkan hasil pada direktori Coding-PGT\kemampuan-dasar-1\latihan\powershellscripts. Kerjakan contoh Powershell script, juga di artikel ini, artikel ini, dan batch file dan Powershell script.
Kasus

Referensi:

  1. Wikibooks - Bash Shell Scripting
  2. Bash Reference Manual
  3. Bash Handbook
  4. Dokumentasi Zsh
  5. Perintah-perintah di batch file.
  6. Dokumentasi Powershell.

Selesaikan kasus-kasus berikut.

Catatan: semua hasil pada latihan ini disimpan pada direktori Coding-PGT/kemampuan-dasar-1/kasus (jika menggunakan Windows, pemisah antar direktori adalah , jadi pada Windows hasilnya akan disimpan di Coding-PGT/kemampuan-dasar-1/kasus. Anda bebas menentukan lokasi tempat direktori Coding-PGT berada.

  1. Buat shell script / powershell sript / batch file cari-java.sh (untuk shell script - macOS dan Linux) atau cari-java.bat (untuk Windows). Tujuan dari script tersebut adalah untuk melihat daftar file pada suatu direktori (termasuk direktori anak-anaknya) dan jika terdapat file dengan ekstensi .java - tampilkan tulisan "Ada file Java pada direktori {nama direktori}". Hasil eksekusi (di Linux, lainnya menyesuaikan):
$ cari-java.sh $HOME/src
Ada file Java pada direktori /home/bpdp/src/hari-01
  1. Untuk pemakai Linux dan macOS: Buat shell script process-killer.sh untuk menanyakan suatu nama program (misalnya firefox), setelah itu mencari PID dari program tersebut dan jika PID program tersebut ada, maka program tersebut akan dimatikan. Saran: gunakan perintah-perintah ps, grep, awk, dan kill.

  2. Untuk pemakai Windows: Lanjutkan kasus nomor 1. Beri nama file yang anda kerjakan ini dengan nama file-ren.bat. Setelah menemukan file .java, akan muncul pertanyaan:

    • nama-file.java ada, diganti namanya (y/t)?
    • jika y, maka input nama baru kemudian diganti
    • jika t, maka lanjut ke proses berikutnya

Kemampuan Teknis Dasar 2: Source Code Management - Git dan GitHub

Bagian ini dikerjakan oleh semua pemakai sistem operasi: Linux, macOS, dan Windows.

Tujuan

  1. Memahami aktivitas pada metodologi agile serta kaitannya dengan source code management
  2. Memahami dan mampu menggunakan Git untuk mengelola repository.
  3. Memahami dan mampu menggunakan Git untuk mengelola remote repository di GitHub.
  4. Memahami dan mampu menggunakan Git dan GitHub, baik untuk single person maupun team development.

Pembahasan

  1. Software engineering, software configuration management, version control, dan distributed version control.
  2. Git dan perintah-perintah dasarnya
  3. Markdown sebagai format untuk dokumentasi
  4. Git dan remote repository (GitHub, GitLab, Assembla, BitBucket)
  5. Git untuk single person development
  6. Git untuk tim pengembang aplikasi

Pembelajaran

Materi dan Penjelasan
  1. Ruang lingkup software engineering.
  2. Keterkaitan software engineering dengan SCM - Software Configuration Management.
  3. Keterkaitan SCM dengan Version Control dan Distributed Version Control.
  4. Git dan keterkaitannya dengan Distributed Version Control
  5. Men-setup Git - Chapter 1 - Getting Started, pastikan juga bahwa git telah terinstall.
  6. Membuat account GitHub serta membuat repo di GitHub.
  7. README.md serta mampu menggunakan pemformatan file markdown untuk menuliskan dokumentasi.
  8. Penggunaan git status, git add, git commit, git push untuk menyimpan ke remote repo
  9. Penggunaan branching and merging.
  10. Pull request untuk repo di GitHub milik sendiri, merging, kemudian sinkronisasi ke lokal repo di komputer.
  11. Menggunakan Github untuk kolaborasi tim.

Persiapan

Buat repo di account Github anda dengan nama Coding-PGT. Setelah itu inisialisasi repo tersebut di komputer lokal anda. Repo ini yang akan menjadi hasil dari kemampuan dasar anda. URL dari repo anda ini seharusnya adalah https://github.com/username/Coding-PGT:

  1. Kerjakan petunjuk pembuatan repo dari Github ini. Cukup kerjakan langkah 1 - 6 saja, setelah itu berhenti pada saat repo telah dibuat. Untuk langkah 5, jangan mengaktifkan checkbox Initialize this repository with a README. Untuk selanjutnya, ini akan kita sebut sebagai repo GitHub.
  2. Di komputer lokal, kerjakan (lokasi direktori bebas, asal hak akses memenuhi - bisa create dir, file, dan seterusnya - lokasi yang anda pilih akan disebut sebagai $LOKASI):
  3. Latihan dan kasus berikut seharusnya dikerjakan di repo lokal dan hasilnya di-push ke repo Github.
Latihan
  1. Untuk keperluan pengerjaan kemampuan dasar ini, buat direktori di repo lokal dengan nama kemampuan-dasar. Setelah itu, masukkan hasil pekerjaan yang telah anda kerjakan pada materi Kemampuan Teknis Dasar 1 di atas ke direktori kemampuan-dasar-1 dalam direktori kemampuan-dasar sehingga pada repo lokal anda akan terdapat 2 direktori. Setelah itu, push ke repo GitHub. Struktur direktori dan berbagai file yang harus ada pada posisi ini adalah (jika menggunakan Linux, pengguna lain silahkan menyesuaikan):
kemampuan-dasar/
└── kemampuan-dasar-1
    ├── kasus
    │   ├── cari-java.sh
    │   └── process-killer.sh
    └── latihan
        ├── cmdline.txt
        ├── env.txt
        ├── grub.txt
        ├── kernel-linux.txt
        └── shellscripts
            ├── echo_example.sh
            ├── first.sh
            ....
            ....
            .... seluruh shell script yang dicoba
            ....
            ....
            └── sleep-example.sh
  1. Untuk praktik berikut ini, kerjakan semuanya di dalam direktori kemampuan-dasar-2 di bawah kemampuan-dasar. Cara mengerjakannya adalah dengan mempraktikkan dan kemudian meng-capture / meng-copy hasil dari praktik tersebut ke dalam file markdown. Jika di praktik tersebut diminta untuk membuat repo, buatlah juga di account anda, tidak perlu berada dalam repo Coding-PGT. Buat file README.md yang berisi nama-nama repo di account GitHub anda yang berhubungan dengan praktik-praktik tersebut. Praktik-praktik yang harus dikerjakan adalah:

  2. Buat direktori wawasan pada direktori kemampuan-dasar. Buatlah rangkuman dari "Ruang Lingkup Pengembangan Sofwtare - Materi dan Penjelasan - point 1 sampa 6" di atas (awal dokumen ini). Tuliskan hasil rangkuman anda pada file README.md, letakkan di direktori wawasan tersebut. Yang anda kerjakan adalah merangkum, bukan menterjemahkan. Pahami esensinya, setelah itu tuliskan secara ringkas.

Hasil Akhir

Setelah menyelesaikan kemampuan dasar teknis 1 dan 2 di atas, struktur direktori dan file di repo hasil pekerjaan anda (baik repo lokal maupun repo GitHub) adalah sebagai berikut (jika menggunakan Linux, pengguna lain silahkan menyesuaikan):

kemampuan-dasar/
├── kemampuan-dasar-1
│   ├── kasus
│   │   ├── cari-java.sh
│   │   └── process-killer.sh
│   └── latihan
│       ├── cmdline.txt
│       ├── env.txt
│       ├── grub.txt
│       ├── kernel-linux.txt
│       └── shellscripts
│           ├── first.sh
│            ....
│            ....
│            .... seluruh shell script yang dicoba
│            ....
│            ....
│           └── sleep-example.sh
├── kemampuan-dasar-2
│   ├── praktik-1.md
│   ├── praktik-2.md
│   └── README.md
└── wawasan
    └── README.md