Sunday, June 6, 2021

Semester 6: Tentang Mata Kuliah

Hallo semuanya, di tulisan kali ini, aku bakal mengulas setiap mata kuliah yang aku ambil di Semester 6. Apabila ingin melihat kehidupanku di semester 6, kalian bisa membacanya pada tulisan My Life Story in 6th Semester sebelumnya. Namun, kalau mau melihat bagaimana mata kuliah di semester 6, kalian bisa teruskan membaca tulisan ini.

Perkuliahan semester 6 aku dimulai pada 18 Januari 2021 dan berakhir pada 30 April 2021. Sisanya sepanjang bulan Mei hanyalah masa Ujian Akhir Semester mulai pada 3 Mei 2021 dan berakhir pada 25 Mei 2021. Waktu yang cukup panjang untuk menjalani Ujian karena terpotong lebaran di tengah.

Gambar 1. Cuplikan Permainan Racquetuer Hasil Kerja Tim

Secara garis besar, terdapat berbagai macam tugas besar yang dikerjakan selama semester 6 ini.

  1. Pembuatan Smart Shop Sederhana dengan Arduino
  2. Game Tanks Unity versi Extended (+ Multiplayer)
  3. Workout Android Application (Running Application)
  4. Student Service Ticketing untuk Direktorat Pendidikan ITB
  5. WebCAD 2D Sederhana menggunakan WebGL
  6. Pemodelan Hollow Objects menggunakan WebGL
  7. Pemodelan Articulated Objects dan Animasi sederhana menggunakan WebGL
  8. Artificial Neural Network from Scratch
  9. Paralelisasi Algoritma Minimum Spanning TREE menggunakan OpenMP, OpenMPI, CUDA
  10. Distributed System menggunakan PAXOS
  11. Video Mengatasi Kebiasaan Buruk
  12. Video Presentasi Buku Pengembangan Diri
  13. Proposal Software Sederhana mempertimbangkan Sustainability
  14. Racqueteuer, sebuah game berbasis Unity dari Agate
Berikut ini adalah ulasan-ulasan lebih lengkap terkait mata kuliah yang aku ambil di Semester 6.

1.  IF3210 - Pengembangan Aplikasi pada Platform Khusus (Platform Based Development)

Mata kuliah ini merupakan mata kuliah yang mengajarkan pemrograman pada platform-platform tertentu. Setelah semester lalu mempelajari pengembangan aplikasi pada web, semester ini aku diajarkan untuk pengembangan aplikasi pada platform khusus. Terdapat 3 platform berbeda yang akan diajarkan, yaitu
  • Arduino (4 minggu)
  • Unity (4 minggu)
  • Android (6 minggu)
Mata kuliah ini mengupas mulai dari basic-basic ingredients dari suatu aplikasi yang dibangun pada masing-masing platform hingga implementasinya secara langsung dalam kehidupan nyata. Dimulai dari Arduino yang prakteknya dalam bentuk sistem Smart Shop, Unity dalam bentuk game Tanks sederhana, hingga Android dalam bentuk aplikasi Workout (semacam Nike Run Club tapi versi sendiri). Mata kuliah ini juga ada Ujiannya yang lebih menguji konsep-konsep dari pengembangan aplikasi pada masing-masing platform itu sendiri.

Secara bobot, mata kuliah ini setara dengan 3 SKS (bisa dibilang 1 SKS untuk setiap platform) sehingga menurut saya belajar dan mengandalkan mata kuliah ini sendiri sangatlah tidak cukup. Mahasiswa sangat dituntut untuk melakukan eksplorasi lebih agar dapat menguasai luaran mata kuliah ini sendiri. Ada banyak resource-resource pembelajaran yang bisa dipelajari oleh para mahasiswa agar dapat menguasai ketiga platform ini. Oleh karena itu, mata kuliah PBD ini selalu memberikan tugas setiap minggunya yang bersifat eksploratif. Bisa dikatakan bahwa PBD ini menjadi kontributor terbesar dalam tugas-tugas di Informatika karena tiga platform itu sendiri.

2.  IF3230 - Sistem Paralel dan Terdistribusi

Mata kuliah ini merupakan puncak dari perkuliahan low level di Informatika. Setelah mendapatkan ilmu-ilmu dari Orkom, OS, dan Jaringan Komputer, disinilah ketiga konsep tersebut terpakai. Mata kuliah ini mengajarkan terkait sistem komputer yang berjalan di dunia ini. Sebagaimana kita tahu, sistem-sistem yang dipakai seperti Google dan perusahaan besar tentu memiliki arsitektur tertentu yang kompleks agar sistem bisa berjalan secara efisien. Google sendiri tersebar dalam beragam server di beragam lokasi di dunia. Konsep sistem paralel dan terdistribusi inilah yang menjadi dasar bagi pengembangan sistem tersebut.

Paruh semester pertama, mahasiswa diajarkan terkait pengenalan konsep paralel dan terdistribusi serta beberapa algoritma paralelisasi yang dapat meningkatkan performansi dari suatu pekerjaan yang membutuhkan sampai jutaan duta. Beberapa algoritma yang kami pelajari adalah OpenMP, OpenMPI, CUDA, dan Threading. Memasuki paruh semester kedua, baru kami mempelajari terkait sistem terdistribusi, yang mana sebagian besar dijelaskan secara konseptual. Prakteknya secara langsung adalah sistem paxos (yang mana dari 1 angkatan hanya ada 1-2 kelompok yang bisa berhasil dan tuntas sampai final).

Saya sendiri merasa kesulitan untuk mempelajari sistem terdistribusi karena memang pola pikir dan logikanya yang begitu kompleks untuk dipahami dalam sekali belajar. Sejauh ini, mata kuliah ini adalah mata kuliah tersulit kedua setelah OS dari sisi tugas. Di angkatan sendiri, terdapat 2x tutorial oleh para penutor angkatan yang menguasai materi sister ini. Terima kasih kepada para penutor yang sangat berjasa untuk mata kuliah ini! Tanpa kalian, belum tentu kami akan survive mata kuliah ini.


3.  IF3250 - Proyek Perangkat Lunak

Mata kuliah ini adalah hidangan utama dari sensasi semester 6. Bagaimana tidak? Mata kuliah ini berbobot 4 SKS dan memang benar-benar 4 SKS secara beban. Mata kuliah ini merupakan mata kuliah yang paling krusial dan menurutku paling mengembangkan kemampuan Software Engineering dari para mahasiswanya (termasuk diriku sendiri). 75% perkuliahan diisi dengan pengerjaan project dan project review dari para dosen. 25% perkuliahan baru diisi dengan materi-materi penunjang perkuliahan PPL ini (yang mana sebagian besar sudah dipelajari di Rekayasa Perangkat Lunak sebelumnya). Perkuliahannya sendiri selalu dilaksanakan dalam kelas besar (3 kelas jadi 1 kelas).

Tiga minggu pertama adalah minggu-minggu tersantai dalam mata kuliah ini. Memasuki minggu ke-4, that's where the fun begins. Disitu kami seangkatan 150 orang terbagi ke dalam 31 kelompok berbeda dengan 31 project berbeda satu sama lain. Uniknya di tahunku adalah kelompoknya merupakan kelompok gabungan dan lintas kelas antara K1, K2, dan K3 yang beranggotakan 5 orang. Komposisinya sudah diatur oleh para dosen agar bisa balance satu sama lain. Di situ, kelompokku mendapatkan project dari Direktorat Pendidikan berupa pembangunan aplikasi web untuk Student Service Ticketing.

Mata kuliah ini menurutku adalah mata kuliah yang sangat cocok untuk mempelajari praktik-praktik Software Engineering di kehidupan kerja nantinya. Di mata kuliah, kami menggunakan pendekatan Agile / Scrum untuk membangun software tersebut. Project dilaksanakan dalam 5x sprint dimana setiap sprintnya berdurasi 2 minggu sehingga durasi pengerjaan project secara total adalah 10 minggu. Setiap 2 harinya setiap kelompok selalu mengadakan meeting untuk review pencapaian per 2 hari yang dipimpin oleh Scrum Master. Intinya segala materi RPL dan MPPL yang dipelajari sebelumnya benar-benar dipraktekkan dalam mata kuliah ini.

Tingkat chaos dari setiap kelompok berbeda-beda bergantung dari seberapa sulit dan besar project yang setiap kelompok dapatkan. Oleh karena itu, tidak heran banyak orang yang mengatakan bahwa PPL ini adalah tugas terbesar dan tersibuknya anak Informatika di tingkat 3. Hanya ada dua poin penting untuk survive di mata kuliah ini, yaitu koordinasi dan konsistensi. Keberhasilan project sangat bergantung pada bagaimana satu kelompok tersebut bekerja sama membangun aplikasi tersebut. Disini jugalah kita mulai mengetahui sifat-sifat asli dari orang dalam bekerja sama karena dilakukan selama 10 minggu.

4.  IF3260 - Grafika Komputer

Mata kuliah ini adalah lanjutan dari Aljabar Linear dan Geometri yang sudah dipelajari di semester 3. Apabila ketika semester 3 sudah mendapatkan tugas berupa transformasi 3D objects, maka tidak perlu mengalami kesulitan untuk mengikuti mata kuliah ini (kebetulan angkatanku tidak mendapatkan tugas tersebut, tetapi angkatan di atasku masih mendapatkannya). Mata kuliah ini mengajarkan hal-hal dasar dari Computer Graphics, mulai dari sejarahnya, aplikasi / tools penunjangnya, bagaimana sebuah gambar diproses dalam komputer, proyeksinya ke dalam monitor, hingga beberapa teknik yang dilakukan sebuah pemrosesan komputer dalam mengolah gambar untuk ditampilkan dalam komputer. Secara garis besar, konsep aljabar geometri sangat erat dengan mata kuliah ini sehingga sebaiknya mereview kembali mata kuliah Aljabar Geometri sebelum mengikuti mata kuliah ini.

Tidak ada Ujiannya, hanya ada 7 kali kuis setiap 2 minggunya dan tiga buah tugas besar yang perlu dikerjakan oleh para mahasiswa. Materi kuis diambil dari materi dan teori yang diajarkan selama perkuliahan, sedangkan tugas besar merupakan bentuk praktek dari teori-teori yang sudah diajarkan. Kalau menurutku pribadi, overlap dari materi kuliah dan prakteknya masih kecil mengingat struggling yang dialami tugas besar sebagian besar adalah dari sisi technical (code WebGL, membuat struktur data untuk WebGL, dan sebagainya), sedangkan kalau kuliah sendiri lebih mengajarkan konseptual dibalik suatu gambar disajikan ke dalam komputer. Disini, kami seolah-olah diajarkan bagaimana WebGL itu bekerja untuk menampilkan gambar (yang mana pada prakteknya, kami hanya menggunakan API yang tersedia, semua sudah diurus oleh function di WebGL).

5.  IF3270 - Pembelajaran Mesin

Pembelajaran Mesin atau Machine Learning adalah mata kuliah lanjutan dari Artifical Intelligence di semester 5, yang mana lebih spesifik pada bidang Machine Learning itu sendiri. Machine Learning sendiri berarti belajar untuk membuat suatu model pembelajaran yang dapat membantu pekerjaan manusia layaknya sebuah AI (secara definisi asli bisa searching sendiri di google). Dua kata kunci yang paling besar dari mata kuliah ini adalah training dan testing. Persoalan-persoalan yang umumnya masuk ke dalam topik Machine Learning adalah persoalan untuk melakukan klasifikasi, pengelompokkan data-data, hingga mempelajari behavior-behavior tertentuk untuk mengambil keputusan tertentu. Contoh nyatanya adalah Recommender System pada Netflix / YouTube yang dibaliknya adalah Machine Learning yang bekerja.

Di mata kuliah ini sendiri, kami mempelajari secara spesifik beberapa algoritma Machine Learning dasar, seperti
  • Decision Tree Learning
  • Logistic Regression
  • Artificial Neural Network
  • Support Vector Machines
  • Design of Experiment
  • Clustering Algorithm
Kurang lebih itu adalah dasar-dasar yang diajarkan pada mata kuliah ini. Mengingat topik Machine Learning masih sangat luas, maka keenam materi di atas hanya sebagai pengantar untuk Machine learning yang sesungguhnya (seperti Deep Learning). Modal dasar yang sangat penting untuk Pembelajaran Mesin ini adalah Probabilitas dan Statistik. Matematika menjadi hal fundamental untuk memahami Machine Learning ini (tidak heran kalau di Matematika juga ada mata kuliah ini pula). Konsep-konsep kalkulus dasar juga akan terpakai pada mata kuliah (seperti turunan pada ANN). Ujiannya sendiri kami menggunakan Google Spreadsheet untuk pengolahan datanya. Aku sendiri menikmati keberjalanan mata kuliah ini mengingat aku sendiri juga suka Matematika.

6.  IF3280 - Socio-Informatika dan Profesionalisme

Mata kuliah ini adalah mata kuliah paling refreshing sepanjang kuliah di Informatika di semester 6. Biasanya matkul-matkul yang didapatkan tentu berorientasi pada pemrograman atau suatu project tertentu. Berbeda dengan mata kuliah ini. Mata kuliah ini bisa dibilang "memanusiakan" anak-anak Informatika, yang mana sejauh ini hard skillnya yang selalu dilatih sebelumnya. Di mata kuliah ini, adalah sebaliknya, yaitu soft skill yang dilatih di mata kuliah ini.

Seperti judulnya, luaran mata kuliah yang selalu disebutkan oleh dosen pengajarku adalah supaya mahasiswa IF siap untuk masuk ke dunia kerja saat Kerja Praktek secara profesional. Profesional yang bagaimana? Profesional baik secara perilaku, sikap, dan skill dalam bekerja nantinya. Mata kuliah ini sebagian besar diisi oleh diskusi bersama, permainan, dan berbagai kuliah tamu yang dibawakan oleh tamu-tamu yang datang dari dunia kerja maupun dari tim self development. Mengingat mata kuliah semester 6 adalah mata kuliah super programming, maka tidak heran disisipkan mata kuliah ini juga yang kiranya bisa memanusiakan anak-anak IF ini sekaligus tempat untuk refreshing dari mata kuliah lainnya.

Tugas-tugasnya sendiri cukup menarik. Mahasiswa IF diminta untuk membaca buku pengembangan diri, menonton 10 video ulasan dari teman-teman terkait buku yang dibaca, berolahraga sekali seminggu, dan mengikuti sebanyak mungkin rapat atau diskusi untuk meningkatkan kemampuan berkomunikasi dan soft skill lainnya. Di tengah-tengah, kami juga membuat video untuk mengatasi kebiasaan buruk yang setiap kelompok miliki. Umumnya tidak jauh dari self management, mengatasi kemalasan dalam hidup, dan kebiasaan menunda-nunda pekerjaan. Terdapat seminar-seminar menarik yang ada di mata kuliah ini, daftar seminar yang aku dapatkan adalah:
  • Self Love dan Self Aware oleh Dosen FSRD
  • Teamwork oleh Tim Fasilitator dari suatu Komunitas
  • UU ITE dan Regulasi terkait Layanan Elektronik
  • Pengenalan Dunia Kerja dan Pencarian Passion Pekerjaan
  • Keamanan dalam Teknologi Informasi
So far, this is the most enjoyable course di semester 6 karena tidak perlu berpikir keras secara hard skill (programming dst), melainkan cukup enjoy dan mengikuti rangkaian kegiatan yang diselenggarakan untuk mata kuliah ini. Meskipun banyak teman-temanku yang mengatakan bahwa mata kuliah ini tidak berguna, namun aku menganggapnya sebaliknya, yaitu sebagai mata kuliah yang berguna untuk pengembangan diriku sendiri, apalagi yang mau masuk ke dunia kerja nantinya.

7.  IF4081 - Agate Academy Game Development

Di tahun 2021, ada program baru yang diadakan oleh Kemendikbud untuk setiap kampus, yaitu program MBKM (Merdeka Belajar Kampus Merdeka), dimana program yang memungkinkan mahasiswa untuk melakukan pembelajaran di luar kampus namun diakui sebagai SKS di kampus. Di tahun 2021, terdapat program menarik dari perusahaan Agate bernama Agate Academy, yang menyelenggarakan pembelajaran untuk Game Development dan sekaligus diakui sebagai 3 SKS di kampus asal karena sudah koordinasi dengan kaprodi IF di awal Januari itu. Oleh karena itu aku mencoba mengambilnya bersama dengan teman-temanku.

Course ini mengajarkan tentang pengembangan game, baik secara programming maupun design itu sendiri. Disini juga belajar mulai dari penentuan objective, character, dan core loop dari sebuah game hingga akhirnya game itu sendiri yang diimplementasikan. Kami juga diajarkan hal-hal yang bisa membuat sebuah game menjadi menarik untuk dimainkan. Hal yang menarik dari program ini adalah para mahasiswa akan mengerjakan tugas besar yang bukan pemberian dari dosen / mentor, melainkan game yang didesign oleh teman mahasiswa lainnya yang dipilih sebagai top 4 dari 20 mahasiswa yang mengikuti program ini. Aku memilih salah satu game untuk dijadikan tugas besar, yaitu game bernama Racquetuer, sebuah permainan multiplayer sederhana yang dasarnya seperti permainan Ping Pong tetapi ada bangunan yang harus dihancurkan. Selengkapnya dapat dibaca dan dilihat pada link berikut ini

Dalam pengembangan game sendiri, aku merasakan bahwa adanya role-role tertentu dibalik pengembangan game, seperti Product Manager, Game Designer, VFX Designer, Game Programmer, dan Quality Assurance. Karena aku juga mengambil PPL, maka pengembangan game ini seperti versi kedua dari PPL namun lebih sederhana karena scope projectnya berupa pengembangan game Racquetuer. It is recommended untuk diambil, terutama bagi yang penasaran bagaimana sebuah game dibangun secara spesifik mulai dari design hingga game diimplementasikan.

Closing Statement

Begitulah ulasan-ulasanku terkait seluruh mata kuliah yang aku ambil di semester 6. Total SKS yang aku ambil di semester 6 adalah 21 SKS. Secara keseluruhan, aku cukup bahagia dan bersyukur karena bisa melalui semester 6 yang benar-benar bisa membuat rambut kriting karena hal-hal yang lumayan advanced menurutku namun rasanya akan berdampak di masa depan nanti. Terima kasih telah membaca tulisan ini. Semoga bermanfaat buat para pembaca semua! Cheers!

Jakarta, 6 Juni 2021

Michael Hans
13518056
Teknik Informatika
Institut Teknologi Bandung

1 comment: