Relasi Antar Kelas – Agregasi

Relasi antar kelas pada Pemrograman Berorientasi Objek (PBO) dikenal dengan nama Asosiasi, yang terdiri dari agregasi dan komposisi, selain dari pewarisan/inheritance yang merupakan ciri khas PBO. Postingan kali ini akan membahas agregasi, merupakan relasi/asosiasi yang dikenal dengan istilah “Is – a”. Perhatikan diagram kelas berikut ini:

Di sini kita akan mengintegrasikan konsep pewarisan (kelas Unisma memiliki anak Dosen, Mahasiswa, dan Satpam) dan agregasi (mahasiswa memiliki dosen pembimbing dari kelas Dosen). Atribut mahasiswa di sini antara lain:

  • Nama
  • Status
  • Jurusan
  • NPM
  • Pembimbing

Atribut nama, status, dan jurusan berasal dari kelas induk (Unisma) sementara NPM dan Pembimbing dari kelas Mahasiswa (kelas anak). Agregasi digambarkan dengan garis, terkadang ada panah disertai penjelasan relasi tersebut, misalnya “membimbing”. Berikut kelas Unisma.

class Unisma(object):
  def __init__(self,nama,status,jurusan):
      self.nama=nama
      self.status=status
      self.jurusan=jurusan
  def Salam(self):
      print(‘Selamat Hari Raya Idul Fitri 1442H’)
  def Info(self):
      print(“INFO”)
      print(“Nama    : “ + self.nama)
      print(“Jurusan : “ + self.jurusan)

Berikut ini kode kelas Dosen. Perhatikan kata kunci “super” yang berarti dosen merupakan pewarisan dari kelas Unisma. Jadi Dosen mewarisi atribut-atribut nama, status, dan jurusan, berikut juga metode/operasi Salam() dan Info().

class Dosen(Unisma):
  def __init__(self,nama,status,jurusan,nip):
      super().__init__(nama,status,jurusan)
      self.nip=nip
  def SalamDosen(self):
      print(‘Kami {}  {} mengucapkan’.format(
          self.status,self.jurusan))
      self.Salam()

Berikut ini kode kelas Mahasiswa dengan tambahan satu atribut “pembimbing” yang nantinya akan direlasikan dengan objek Dosen selaku pembimbing.

class Mahasiswa(Unisma):
  def __init__(self,nama,status,jurusan,npm,pembimbing):
      super().__init__(nama,status,jurusan)      
      self.npm=npm
      self.pembimbing=pembimbing
  def SalamSiswa(self):
      print(‘Hai teman-teman, kami {} {} mengucapkan’.format(
          self.status,self.jurusan))
      self.Salam()
  def GetInfo(self):
      print(“Pembimbing : “ + self.pembimbing.nama)

Jalankan dengan kode-kode berikut untuk mengeceknya.

x=Dosen(“Rahmadya”,“Dosen”,“Teknik Komputer”,123)
y=Mahasiswa(“Wahyu”,“Mahasiswa”,“Teknik Mesin”,1111123,x)
y.Info()
y.GetInfo()

Untuk lebih jelasnya silahkan lihat video penjelasannya berikut ini. Sekian, semoga bermanfaat.

Ngobrol Tentang Deep Learning – Webinar APTIKOM Jabar #1

Salah satu metode machine learning yang saat ini berkembang pesat adalah Deep Learning (DL). Metode ini merupakan kelanjutan dari Neural Networks dengan tambahan preprocessing di layer awal yang berfungsi mengekstrak ciri suatu citra, yaitu konvolusi dan pooling.

Jumlah layer yang banyak beserta neuron-neuronnya membuat DL sulit melakukan proses pelatihan (training) jika menggunakan metode biasa. Dengan hanya mengandalkan hardware biasa, waktu itu laptop sempat ‘hang’ ketika melatih sistem pengenalan tanda tangan dengan ukuran vektor citra yang besar (ribuan bahkan puluhan ribu baris/kolom per objek). Namun saat ini python menyediakan teknik agar proses pelatihan dilakukan di Graphic Processing Unit (GPU) dan Tensor Processing Unit (TPU) bukan hanya mengandalkan CPU. Postingan ini terinspirasi dari hasil webinar tadi pagi dimana saya ditunjuk menjadi moderator.

Akurasi model-model DL saat ini sudah luar biasa tinggi dan hampir mendekati 100%. Terlepas dari riset yang membuat model-model tersebut, beberapa permasalahan masih membutuhkan solusi. Salah satu problem adalah ketika akan menerapkan DL pada piranti-piranti kecil/embedded yang kebanyakan memiliki spesifikasi yang berbeda dengan komputer yang memang dikhususkan untuk komputasi.

DL sudah merambah bidang-bidang lain di luar ilmu komputer misalnya kesehatan, pertanian, geografi, dan lain-lain. Problem utama DL adalah karakternya yang karena menyerupai syaraf makhluk hidup terkadang sulit menemukan logika atau rule yang mendasari pengambilan keputusan model DL, dan menyebutnya dengan istilah black box. Walau bukti akurasi sudah nyata, terkadang seorang dokter membutuhkan alasan yang mendasari keputusan dari suatu model DL. Berbeda jika menggunakan metode fuzzy atau decision tree serta turunannya yang memiliki rule mengapa suatu model DL menyimpulkan suatu hasil.

Pembicara webinar merupakan alumni kampus Jepang. Saya sendiri pernah satu semester diajar oleh dosen alumni Tokyo University dan memang isi kuliah sangat teknis sekali dimana membutuhkan kemampuan matematik, baik aljabar linear untuk pengolahan matriks maupun persamaan diferensial untuk memahami prinsip pelatihan/training, misalnya gradient descent (GD), lavenberg marquadt (LM). Ada juga saran-saran untuk mahasiswa doktoral, khususnya bidang ilmu komputer, antara lain di enam bulan pertama harus segera terjun ke bidang yang digeluti sesuai dengan lab-lab yang ada di kampus, mencari informasi dari periset-periset lain misalnya via Github. Lebih jelasnya silahkan lihat pada Youtube berikut. Sekian semoga bermanfaat.

Public, Private, dan Protected Pada Python

Public, Private, dan Protected dikenal dengan nama Visibility. Istilah ini telah lama dikenal oleh bahasa pemrograman C++ dan Java. Python, merupakan bahasa baru secara default mendefinisikan suatu atribut atau metode bersifat public. Diagram kelas UML mendefinisikan public dan private dalam bentuk simbol positif dan negatif.

Untuk membuat private dengan menggunakan simbol garis bawah dimana untuk protected satu garis bawah (“_”) dan untuk private dua garis bawah (“__”).

Berikut contoh kelas Unisma sebagai induk dan kelas Dosen dan Mahasiswa sebagai anak yang diambil dari materi sebelumnya tentang inheritance/pewarisan. Silahkan gunakan editor Python, misalnya Google Colab untuk menjalankan kode berikut.

class Unisma(object):
  def __init__(self,nama,status,jurusan):
      self.__nama=nama
      self.__status=status
      self.__jurusan=jurusan
  def Salam(self):
      print(‘Selamat Hari Raya Idul Fitri 1442H’)
  def Info(self):
      print(“INFO”)
      print(“Nama    : “ + self._Unisma__nama)
      print(“Jurusan : “ + self._Unisma__jurusan)

Berikutnya untuk kelas Mahasiswa:

class Mahasiswa(Unisma):
  def __init__(self,nama,status,jurusan,npm):
      super().__init__(nama,status,jurusan)      
      self.__npm=npm
  def SalamSiswa(self):
      print(‘Hai teman-teman, kami {} {} mengucapkan’.format(
          self._Unisma__status,self._Unisma__jurusan))
      self.Salam()

Berikutnya coba jalankan dengan instruksi pengaksesan kelas-kelas di atas.

y=Mahasiswa(“Wahyu”,“Mahasiswa”,“Teknik Mesin”,123)
y.SalamSiswa()
y.Info()

Berikut video youtube untuk lebih jelasnya.

PhD Study – Win or Lose, no Draw

Kuliah dengan beasiswa pasti memiliki ikatan dengan pemberi beasiswa, minimal ikatan alumni, misalnya sama-sama penerima beasiswa BPPLN Dikti, yang saat ini sudah tidak dibuka lagi karena diganti dengan BUDI lewat LPDP. Berbeda dengan LPDP yang dipilih dari anak-anak mudah super, BPPLN kebanyakan dosen-dosen mapan, santai, yang terpaksa harus mengambil S3 (tidak semua sih). Nah, ternyata hasil/outputnya tidak jauh berbeda dengan kendala yang sama dengan anak-anak super itu.

Postingan ini terinspirasi dari grup WA alumni penerima beasiswa yang tiba-tiba ada seseorang yang mancing-mancing curhat masalah kuliahnya dulu hingga akhirnya berbondong-bondong ikut curhat juga. Tapi saya tidak ikut, hanya nyimak .. hehe, walaupun banyak cerita dan problemnya cukup berat juga.

Masa Sulit dan Masa Mudah Memperoleh Beasiswa

Saat ini sebenarnya banyak sekali tawaran beasiswa, hanya saja kondisi dan banyaknya pesaing membuat terkesan sulit. Ketika saya mengajukan di tahun 2013, kala itu DPR kecewa dengan DIKTI yang tidak bisa memenuhi target penerima beasiswa, alias sedikit yang mengajukan. Memang waktu itu tuntutan S3 tidak terlalu dibanding sekarang, jadi sedikit yang berminat. Nah, saya melihat itu dan iseng-iseng mencoba. Pertama lewat pendidikan gratis 3 bulan pelatihan bahasa dengan skor IELTS 6.0 saya mencoba apply. Wawancara pertama gagal, tapi saya santai saja, karena telah mengetahui DIKTI kesulitan mencari penerima beasiswa yang memang sedikit yg mendaftar (Sok jual mahal .. hehe). Tiba-tiba ada undangan wawancara ulang. Ternyata dugaan saya benar, masih minim yang daftar, sampai saya dan beberapa rekan yang sudah melupakan studi lanjut ketemu lagi di acara wawancara terakhir.

Dengan Pewawancara, Pa John, saat Reuni Penerima Beasiswa

Sebelum pandemik COVID-19 ternyata rekan-rekan saya yang mencoba mengajukan beasiswa tidak ada yang lolos dan begitu juga kampus-kampus level menengah. Saat pandemik lebih parah lagi. Bahkan rekan sesama alumni ada yang meninggal karena COVID.

Peran Supervisor

Peran supervisor atau advisor sangat menentukan. Pemberi beasiswa sangat tidak menyarankan ganti supervisor. Bahkan jika advisor pindah kampus, pemberi beasiswa membolehkan ikut pindah juga. Kalau saya unik, supervisor sama tapi pindah jurusan dikit.

Supervisor itu Seperti Anggota Keluarga

Video youtube di bawah ini memperlihatkan problem mahasiswa doktoral dengan supervisor. Juga dengan rekan-rekan lain, apalagi jika kampusnya rasis.

Tingkat Kelulusan 50%

Ini info dari Amrik, yang ternyata tidak jauh berbeda dengan di Indonesia dan mungkin negara-negara lain. Bahkan di kampus saya yang lulus dan yang tidak lulus 50:50. Mirip koin yang dilempar peluangnya. Uniknya LPDP yang berisi mahasiswa-mahasiswa super pun angkanya tidak jauh berbeda. Jadi mahasiswa yang akan mengambil jenjang ini harus memahami dua kemungkinan, lulus atau tidak lulus. Jangan khawatir, 50% itu kan rata-rata, tentu saja ada yang 30% dan ada yang 80% dong. Belum lagi musibah seperti yang dialami rekan saya yang meninggal karena stroke.

Semangat 100%

Boleh saja tingkat kelulusan rendah, tapi semangat harus dijaga 100%. Maklum PhD study itu seperti lari jarak jauh, berbeda dengan Master yang hanya 2 tahun. PhD study banyak tangga yang harus dilalui dan kita tidak tahu ditangga ke berapa bisa terpleset.

Jangan Terlalu Mandiri

Pembaca mungkin tidak setuju poin ini dan memang tidak ditemui di pelatihan-pelatihan seperti doctoral bootcamp. Namun beberapa kejadian di kampus saya menunjukan hal ini. Sebenarnya PhD study tidak 100% akademik, mungkin hanya 20% saja sisanya problem-problem lain seperti keuangan, kesehatan, lingkungan, supervisor, dan lain-lain.

Ngopi & Diskusi di Sore Hari – Ternyata alumni UGM semua dab ..

Masalah bahasa Inggris merupakan problem abadi mahasiswa Indonesia, termasuk saya. Komentar pertama penolakan ketika submit jurnal saya unik juga, reviewer jujur tidak membaca habis naskah saya, hanya 2 paragraf, dan dia yakin seluruh paragraf akan seperti itu, berantakan bahasa Inggrisnya. Supervisor tahu konten artikel menarik tapi tidak bisa menuangkan dengan baik gagasannya. So, langkah tercepat adalah minta jasa proofread. Di sinilah saya sadar tidak semua hal bisa saya kerjakan. Namun dengan berbekal bagaimana proofreader memperbaiki naskah saya jadi tahu bagaimana menulis artikel yang sesuai dengan EYD-nya English. Selain bahasa seperti pembuatan model, pertolongan kepala lab, responden survey penelitian, dan lain-lain membuktikan tidak 100% S3 lewat usaha kita. Semoga tulisan ini tidak melemahkan semangat Anda yang mau S3.

Naïve Bayes – Kalkulasi secara Manual dan dengan Komputer

Saat ini tidak dapat dipungkiri bahwa Deep Learning paling banyak diteliti dan digunakan dalam aplikasi-aplikasi artificial intelligence. Beberapa pengguna tidak menyukai metode tersebut karena karakteristiknya yang tidak dapat dilihat logika di dalam modelnya atau sering diistilahkan dengan black box walaupun akurasinya saat ini dengan model terbarunya hingga mendekati 100%. Selain itu, deep learning membutuhkan kinerja prosesor yang tinggi, terutama ketika proses pelatihan (learning).

Jika ingin membuat model yang dapat dilihat alur logikanya, naïve bayes merupakan salah satu pilihan yang baik. Walaupun kinerjanya menurut beberapa penelitian kalah dengan metode terkini seperti misalnya support vector machine (SVM), metode ini memiliki karakteristik statistik yang kental, yaitu probabilistik. Ada istilah confidence dalam metode ini.

Untuk perhitungan, naïve bayes lebih mudah menurut saya dibanding decision tree yang mengharuskan membuat model tree dengan konsep entropy dan gain informationnya. Pada naïve bayes, kita hanya menghitung probabilitas ketika menghitung confidence tiap-tiap kelas prediksi.

Plus Minus

Metode naïve bayes, dalam Scikit Learn diisitilahkan dengan Gaussian Naïve Bayes, karena dalam mengkonversi tabel kategorikal lewat pendekatan fungsi Gauss. Walaupun akurasinya kurang dibanding metode lain, sifat probabilistiknya sangat membantu penjelasan ke pengguna dalam aplikasinya. Misalnya dalam memprediksi sebuah sentimen dalam sentiment analysis, metode ini tidak hanya menjelaskan positif, negatif, atau netral saja, melainkan berapa kadar positif dan negatifnya dalam bentuk probabilitas. Terkadang jika dalam sistem dashboard menunjukan negatif dengan probabilitas yang tinggi bisa saja digambarkan dengan warna merah yang artinya warning, sehingga eksekutif segera mengambil tindakan yang perlu dalam manajemen.

Statistik merupakan bidang yang paling banyak dimanfaatkan dalam machine learning. Belakangan beberapa ahli machine learning enggan disebut ahli statistik karena belakangan metode-metode terbaru tidak terlalu mengadopsi konsep statistik, misalnya tensorflow yang cenderung ke arah tensor dan matriks dalam aljabar. Silahkan lihat penjelasan slide di atas dalam video youtube berikut ini, semoga bermanfaat.

Pseudocode

Bahasa pemrograman sangat beragam dari yang sulit seperti bahasa rakitan hingga yang paling mudah dengan bantuan Integrated Development Environment (IDE) yang interaktif. Hanya dengan drag and drop mouse, sebuah aplikasi terbentuk. Karena tiap programmer memiliki bahasa pemrograman sendiri, terkadang untuk berkomunikasi membutuhkan bahasa universal tentang sebuah algoritma. Di sinilah peran pseudocode, dimana sebuah alur algoritma dibuat dalam bahasa umum yang dimengerti manusia.

Dalam perjalanannya, pseudocode memiliki kompromi antara bahasa yang mudah dimengerti manusia dengan yang mudah diimplementasikan programmer. Cornel University menawarkan saran dalam pembuatan pseudocode sebagai berikut.

  • Dibuat menyerupai bahasa manusia dan kode program.
  • Hindari detil yang tidak perlu.
  • Jangan menulis yang sudah jelas.
  • Gunakan beberapa sintax program yang lebih ringkas dari bahasa, misal struktur if-then-else.
  • Perhatikan konteks-nya. Terkadang “use quicksort” pada pseudocode cukup jika audiens mengerti. Namun “quicksort” perlu dijabarkan pada kasus tertentu.
  • Jangan melupakan algoritma yang mendasari algoritma yg sedang dibuat pseudocodenya.
  • Seimbangkan antara pemahaman user dan programmer.

Buku-buku referensi internasional, terutama yang membahas metode-metode komputasi memiliki style terntentu dalam pembuatannya. Jurnal-jurnal ilmiah pun memiliki patokan-patokan dasar dalam pembuatan pseudocode. Ada yang merepresentasikan pseudocode dalam Figure/Gambar, ada pula yang menyamakan dengan naskah teks. Masing-masing ada kekurangan dan kelebihannya.

Thomas Cormen dalam buku Algoritma-nya kebanyakan merepresentasikan sebuah pseudocode dalam format fungsi dimana variabel input dimasukan dalam tanda kurung “()”. Selain itu, sebuah penomoran diberikan di tiap baris perintahnya.

Terkadang pembaca awam pun harus memahami seluk-beluk pemrograman, misalnya konsep rekursif yang unik dimana satu fungsi memanggil dirinya sendiri di dalam alur algoritmanya. Contoh sederhana adalah fungsi faktorial berikut.

Untuk lebih jelasnya silahkan simak video youtube berikut, yang masuk dalam materi kuliah logika dan algoritma.

Pohon Keputusan (Decision Tree)

Pohon keputusan merupakan satu metode klasik dalam prediksi/klasifikasi. Tekniknya adalah dengan menggunakan pertanyaan di suatu atribut (disebut test attribute) kemudian mengarahkan ke cabang mana sesuai dengan jawabannya. Tugas utama dalam metode ini adalah model membuat pohon/tree berdasarkan informasi dari data yang menjadi rujukan.

Perhitungan Manual

Pada slide di bawah, perhitungan manual dijelaskan yang diambil dari buku Data Mining karya Han and Kamber.

Beberapa kesalahan hitung terjadi ketika menghitung expected information dan entropi di tiap-tiap fitur/atribut. Untuk yang sedang mengambil kuliah ini ada baiknya berlatih soal-soal agar ketika ujian tidak terjadi salah hitung.

Perhitungan dengan Program

Berikutnya disertakan pula bagaimana mengimplementasikannya dengan Python, dalam hal ini menggunakan Google Colab. Saran untuk mahasiswa S1 dan D3 ada baiknya mengetik langsung kode (tanpa copas) agar bisa melatih skill/keterampilan. Sekaligus juga debug ketika ada error terjadi. Silahkan lihat video lengkapnya di youtube berikut ini. Semoga bermanfaat.

Inheritance/Pewarisan dengan Python

Salah satu konsep terkenal pada pemrograman berorientasi objek adalah inheritance/pewarisan. Istilah ini identik dengan generalisasi dan spesialisasi dimana seorang induk akan mewariskan sifat-sifat ke seorang anak yang general dan seorang anak memiliki sifat khusus yang spesifik. Gambar di bawah ini contoh diagram UML dalam menggambarkan relasi generalisasi yang menggambarkan konsep pewarisan.

Kotak menggambarkan kelas dengan tiga kompartemen/ruang yaitu nama, atribut dan metode/operasi. Kelas Unisma di atas merupakan kelas induk yang akan mewariskan tiga buah atribut (nama, status, dan jurusan) dan dua buah operasi/metode (salam dan Info). Di sini simbol minus berarti private (tidak bisa diakses dari luar kelas) dan plus berarti publik (bisa diakses di luar kelas). Silahkan lihat slide berikut.

Kelas Dosen dan Mahasiswa berturut-turut memiliki atribut unik NIP dan NPM, juga metode SalamDosen() dan SalamSiswa(). Perhatikan jangan lupa menulis “()” setelah nama metode/operasi, yang merupakan standar/konvensi internasional. Silahkan buat satu sel yang berisi kelas Unisma yang merupakan kelas Induk.

https://colab.research.google.com/drive/1T19eiVktOrMQzXqZLD3jV4I0fbbQZ6oA?usp=sharing

Kode di atas juga mengilustrasikan pembuatan dua kelas anak yaitu kelas Dosen dan kelas Mahasiswa. Di sini kita menggunakan IDE Google Colab yang dapat diakses tanpa perlu instalasi karena hanya menggunakan browser dengan network ke internet.

Perlu diperhatikan bahwa pemrograman berorientasi objek memiliki konsep Konstruktor dalam tiap pembuatan kelas. Karena tiap kelas harus mampu menciptakan satu objek. Tanpa konstruktor maka kelas tersebut tidak bisa membentuk objek. Istilahnya adalah kelas abstrak, terkadang diperlukan juga kelas jenis ini pada penerapannya. Silahkan lihat video berikut, semoga bermanfaat.

Jenuh dan Bosan

Pandemik COVID-19 sudah berlangsung dua tahun. Jika dibandingkan dengan awal-awal kemunculannya saat ini sudah mengalami naik turun jumlah kasus hariannya. Ketika tulisan ini dibuat, di India terjadi lonjakan eksponensial, yang tidak sanggup diprediksi oleh mesin regresi manapun. Indonesia kini sudah mulai melakukan vaksinasi corona dan sepertinya tidak ada lagi penolakan yang berarti dari masyarakat. Yang dikhawatirkan adalah mudik lebaran yang berpotensi menambah kasus infeksi harian COVID-19.

Beberapa tempat peribadatan telah dibuka, termasuk mall di tempat saya, Bekasi. Memang, jenuh dan bosan sulit diatasi. Yang terpenting adalah jangan lengah dan tetap menjaga protokol kesehatan. Tempat saya bekerja terjadi kasus karena acara pelatihan. Walaupun tidak ada orang luar, tetapi rekan kita tidak bisa dijamin tidak pernah ke mana-mana. Ditambah lagi karena sudah kenal dekat, kita yakin rekan kita tidak membawa virus, akibatnya masker dan jaga jarak kurang diperhatikan.

TIdak dapat dipungkiri, kita sudah jenuh dengan belajar/bekerja dari rumah. Terkadang kejenuhan bisa membuat seseorang nekat dan berani walau dalam keadaan pandemik. Tak apa, yang penting tetap waspada. Postingan ini mudah-mudahan bisa mengusir jenuh pembaca sekalian.

Vaksinasi COVID-19

Untuk Mahasiswa

Mahasiswa saya ada yang terkena, tetapi karena masih muda hanya beberapa minggu sudah sembuh kembali. Masalahnya adalah mahasiswa yang berasal dari dosen yang tugas/ijin belajar. Seorang rekan saya terpaksa dilarikan kembali ke ICU karena kondisinya yang lemah, padahal sudah balik ke rumah dan dinyatakan negatif. Rekan saya yang satu angkatan studi ke luar negeri beasiswa BPPLN dikti meninggal karena paru-parunya gagal menangkap oksigen untuk tubuhnya.

Saran saya untuk mahasiswa doktoral yang biasanya sudah berusia lanjut adalah efektif dan efisien dalam menyelesaikan disertasinya. Seperti saran saya ketika pembekalan dulu di tahun 2013, mahasiswa doktoral tidak dituntut untuk memenangkan hadiah nobel. Waktu sangat berharga, sehingga makin cepat makin baik, apalagi beasiswa ada batasnya.

Dalam menghadapi jenuh dan bosan ternyata anak-anak lebih hebat. Saya perhatikan dua anak saya yang masih SD dan SMP sangat menikmati kesehariannya. Untungnya aplikasi-aplikasi di gadget sangat membantu mengusir jenuh asal dibatasi saja dan aktivitasnya positif. Oiya, kemampuan mengusir rasa jenuh dan bosan juga salah satu bagian dari kecerdasan. Jadi segala daya dan upaya harus kita lakukan dalam mengusir kebosajan baik dengan beribadah, berdoa, hingga aktivitas-aktivitas yang di luar rutinitas harian. Berkebun, memelihara binatang, saat ini menjadi banyak peminatnya.

Prioritas

Boleh saja kita menyalurkan hobi dan lain-lain untuk mengusir rasa jenuh, namun tanpa prioritas dikhawatirkan tugas-tugas utama tidak dapat selesai sesuai harapan. Kemampuan menentukan hal-hal yang penting dan mana yang kurang penting sangat perlu. Jika prioritas dapat kita tentukan di awal, diharapkan kesalahan-kesalahan untuk hal-hal yang penting dapat dihindari dan hanya terjadi pada hal-hal yang kurang penting. Manusia tidak luput dari lupa, namun jangan sampai lupa terhadap hal-hal yang penting. Apa saja kah hal penting itu? Kitalah yang tahu. Jika facebook, twitter, dan medsos lainnya lebih sering Anda akses dibanding tugas utama seperti membuat jurnal, menyusun disertasi, dan lain-lain, dapat dipastikan penentuan prioritas belum maksimal. Semoga tulisan di hari libur ini bermanfaat.

Machine Learning dengan K-Nearest Neighbours (KNN)

Beberapa istilah terkadang membuat rancu seperti data mining, machine learning, dan deep learning. Wajar saja karena ketiganya masih dalam induk yang sama, yaitu data mining yang bermain dengan data yang akan dilatih/ditraining. Deep learning merupakan machine learning yang mengkhususkan diri dengan satu metode yaitu jaringan syaraf tiruan (neural network). Machine learning merupakan salah satu metode dalam data mining yang mengkhususkan diri dengan beragam metode untuk melatih data sehingga mampu digunakan sebagai mesin inferensi/prediksi maupun klasterisasi. Salah satu metode klasik yang mudah dimengerti adalah KNN. Metode ini berprinsip, suatu data akan menjadi anggota data lain jika di sekelilingnya kebanyakan anggota data tersebut.

Scikit Learn

Para pengembang dan peneliti dengan menggunakan bahasa Python bersama-sama membuat library untuk pengguna machine learning. Library tersebut dibuat dengan format kelas yang berisi metode/fungsi seperti fitting, predicting, dan juga alat untuk mengukur akurasi. Kode sumber dapat diakses dengan mudah sehingga memudahkan Anda yang mendapat tugas memodifikasi metode.

Untuk praktek menerapkan KNN dengan library dari Scikit Learn, Google Colab merupakan pilihan yang praktis karena hanya bermodalkan browser dengan koneksi internet saja. Berikut kode yang terdiri dari impor library, ambil data, training data dan validasi. Terakhir menggunakan fungsi prediksi pada library untuk memprediksi kelas suatu data. Untuk pemula ada baiknya Anda ketik sendiri untuk melatih keterampilan serta alur logika memrogram.


#Impor pustaka
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
#Mengambil data dari file csv
datasiswa=pd.read_csv('beasiswa.csv')
df=pd.DataFrame(datasiswa,columns=['Mahasiswa','IPK','Tingkat Kemiskinan (TM)','Beasiswa/Tidak'])
X=np.asarray(datasiswa)
x_train=X[:,1:3]
y_train=X[:,3:4]
#Memanggil KNN
knn=KNeighborsClassifier(n_neighbors=6,
weights='uniform',
algorithm='auto',
metric='euclidean')
#Fit model dengan data latih dan target/label
knn.fit(x_train,y_train)
#Mengambil data dari file csv
datavalidasi=pd.read_csv('validasibeasiswa.csv')
df2=pd.DataFrame(datasiswa,columns=['Mahasiswa','IPK','Tingkat Kemiskinan (TM)','Beasiswa/Tidak'])
X2=np.asarray(datavalidasi)
x_val=X2[:,1:3]
y_val=X2[:,3:4]
#Prediksi
y_pred=knn.predict(x_val)
print((y_val).T)
print(y_pred)
print(classification_report(y_val,y_pred))
#Menyiapkan sebuah data uji/testing
uji=np.asarray([[2.5,4.0]])
y_pred=knn.predict(uji)
print(y_pred)

Data yang dibutuhkan dua buah yaitu data beasiswa dan data validasi beasiswa dalam format CSV. Bagaimana cara unggah data tersebut ke Google Colab serta penerapannya silahkan lihat video Youtube saya berikut ini. Semoga bermanfaat.

Tips and Tricks for Undergraduate and Graduate Research on Machine Learning

Machine learning merupakan topik yang menjadi perhatian peneliti-peneliti ilmu komputer saat ini, terutama karena perkembangan pesat Deep Learning beserta perangkat keras pendukungnya seperti CPU, GPU, dan memory. Dari diploma hingga doktoral riset machine learning sangat menarik perhatian industri maupun pengguna. Hal ini terjadi karena salah satu karakteristik dari industri 4.0 adalah artificial intelligence, dimana machine learning termasuk di dalamnya.

Tip dan Trik Untuk Diploma dan S1

Sesuai dengan tujuan dari program diploma dan S1 yang menerapkan teori yang diperoleh dari bangku kuliah, maka riset untuk mahasiswa S1 menuntut skill dalam membuat aplikasi sederhana. Selain menerapkan ilmu yang diperoleh, mahasiswa S1 diharuskan mengikuti tren terkini teknologi yang ada agar bisa bersaing di dunia kerja. Untungnya materi sudah tersedia di internet, tinggal mahasiswa menentukan ke mana arah minatnya. Mahasiswa S1 saat ini diwajibkan memiliki sertifikat kompetensi sebagai pendamping ijazah.

flyer

Tip dan Trik Untuk Master dan Doktor

Master dan doktor merupakan kelanjutan dari jenjang sebelumnya, sering disebut dengan istilah pascasarjana (graduate atau post-graduate). Nah, sedikit berbeda dengan mahasiswa S1, mahasiswa pascasarjana tidak fokus ke pembuatan aplikasi melainkan memperbaiki metode yang ada atau menemukan metode baru yang lebih baik. Biasanya kampus mensyaratkan luaran berupa jurnal atau seminar, jika master seminar internasional, doktor jurnal internasional yang terindeks.

Problem saat ini yang muncul adalah beberapa aplikasi menyediakan library atau tools yang dikhawatirkan tidak mendidik pengguna mengetahui algoritma di dalamnya. Namun fungsi-fungsi yang tersedia dapat dilihat, misalnya Matlab dengan m-file nya, sementara Python dengan fungsi-fungsi yang ada di kelas fungsi tersebut. Oleh karena itu diperlukan pemahaman mengenai bahasa pemrograman berorientasi objek. Tantu saja ada juga yang share kode Python untuk kode tertentu. Mengapa harus mengetahui struktur kode program? Karena untuk jenjang S3 terkadang perlu memodifikasi kode baik untuk meningkatkan performa maupun hybrid dengan metode lain.

Untuk deep learning, beberapa metode yang terkenal merupakan pemenang kontes machine learning, dengan akurasi yang amat tinggi hingga mendekati 100%. Sepertinya untuk menandinginya cukup sulit bagi mahasiswa-mahasiswa kita, walaupun tidak mustahil. Namun ada baiknya fokus ke sisi lain seperti kecepatan, ringan, dan mudah dilihat strukturnya (deep learning bercirikan “black box” yang tidak dimengerti struktur di dalamnya). Machine learning sendiri memiliki banyak metode di luar deep learning dan syaraf tiruan lainnya, beberapa teknik terkini berbasis computer vision seperti haar cascade terkadang lebih cepat dan efisien. Berikut rekaman seminar kemarin.

Sarana Ilmiah: Bahasa, Matematika, dan Statistika

Beberapa hari ini, pelajar SMA sedang sibuk mendaftar ke perguruan tinggi yang diinginkan, terutama perguruan tinggi negeri (PTN). Berbeda dengan sekolah menengah, universitas merupakan institusi yang fokus dengan keilmiahan sebuah ilmu pengetahuan, baik eksakta maupun humaniora. Terkadang siswa yang menonjol gagal di perguruan tinggi karena tidak mampu mengikuti budaya ilmiah kampus, sementara terkadang siswa yang biasa-biasa saja ketika sekolah menengah, karena mampu mengikuti budaya ilmiah kampus dia sanggup menjadi bintang. Postingan ini membahas apa saja sarana-sarana ilmiah yang diperlukan seorang mahasiswa dalam mengikuti perkembangan iptek yang sangat cepat akhir-akhir ini. Jika Anda pernah mengambil mata kuliah filsafat ilmu, pasti pernah mendengar istilah metode ilmiah. Nah, sarana ilmiah berbeda dengan metode ilmiah (problem, hipotesa, eksperimen, kesimpulan); sarana ilmiah berisi ilmu-ilmu apa saja yang diperlukan dalam mendukung sebuah riset.

Bahasa

Bahasa merupakan ciri khas manusia yang membedakannya dengan hewan. Dengan bahasa ilmu yang dimiliki seorang manusia dapat disebarakan dan diwariskan ke generasi berikutnya. Jika Anda pernah menonton film “Planet of the Apes”, si kera bernama Caesar dengan modifikasi menjadi cerdas dengan disertai kemampuan bahasa.

Terkadang siswa yang ingin dikatakan cerdas melupakan pelajaran bahasa dan fokus ke matematika dan sains saja (fisika, biologi, dan kimia). Padahal bahasa merupakan dasar ilmu yang menjadi sarana ilmiah utama. Diskusi, memahami pertanyaan, presentasi, menulis makalah, dan lain-lain sudah pasti membutuhkan kemampuan bahasa (lisan dan tulisan). Dosen saya dulu mengatakan jika tidak bisa mengutarakan dalam bahasa berarti Anda belum paham.

Ketika ujian masuk pascasarjana saya melihat ada soal bahasa Inggris makalah satu halaman tapi harus dibaca dengan cepat dan harus paham karena pertanyaan yang diberikan bukan sekedar skimming melainkan harus mampu menyimpulkan apa saja yang ada di paragraph. Waktu itu saya sempat heran bagaimana mungkin soal tersebut dapat dijawab oleh manusia normal. Namun berjalannya waktu saya sadar ternyata saya yang kurang normal waktu itu, hehe.

*****

Matematika

Sarana lainnya adalah mata pelajaran yang paling tidak disukai oleh kebanyakan pelajar. Jika dalam bahasa terselip aspek subjektif tertentu, misalnya ekspresi penulis, makna tersembunyi, dan lain-lain yang dapat dianggap mengganggu objektifitas, dalam matematika hal itu dapat diatasi. Hal ini yang membuat bidang yang sekarakter dengan matematika disebut eksakta, sebagai lawan dari bidang non-eksakta (humaniora dan bahasa).

Seorang pelajar bisa saja menghindari fisika atau kimia, tetapi akan sulit menghindari matematika karena dibutuhkan oleh semua bidang yang berhubungan dengan aspek ilmiah sebuah ilmu. Bahasa dan matematika saat ini menjadi syarat masuk beberapa kampus ternama di dunia.

P. Silaban, sekelas dengan mahasiswa2 yahudi, Sumber: https://www.tobatabo.com/2129+mendapat-gelar-einstein-dari-tanah-batak-pantur-silaban-sebagai-fisikawan.htm

*****

Statistika

Sifat kaku matematika dan bahasa yang terlalu fleksibel membutuhkan sarana lain, yaitu statistika. Bidang ini muncul untuk mengatasi aspek-aspek sosial yang berkaitan dengan populasi dan sampel. Ketika pilkada atau pilpres, biasanya institusi-institusi yang berkecimpung dengan riset berbasis statistik muncul, terutama dalam hitung cepat atau survey dukung-mendukung caleg/capres.

Pearson, terkenal dgn Person Chi Squared Test: https://en.wikipedia.org/wiki/Karl_Pearson

Dalam statistik, error masih ditolerir, berbeda dengan matematik. Tentu saja selama batas confident masih ditolerir. Baik bidang eksakta maupun humaniora membutuhkan sarana ini. Jika bidang humaniora membutuhkan sarana ilmiah ini dalam rangka pengolahan data survey, bidang eksakta membutuhkan ketika menguji/eksperimen dalam kedokteran atau dalam bidang ilmu komputer untuk machine learning, walaupun pakar machine learning menolak disebut ahli statistik karena hal-hal tertentu terkait komputasi yang berkarakter “soft computing”. Misalnya, L. Zadeh, penemu fuzzy, mempertanyakan 1% error jika terjadi akan menghilangkan makna akurasi 99% suatu model.

Suka atau tidak suka yang namanya sarana sangat dibutuhkan, jadi tidak ada salahnya membuka kembali subjek tersebut. Jangan khawatir dikatakan ketinggalan, justru beberapa negara yang kuat di sarana ilmiah tersebut merupakan negara-negara maju. Di Asia Tenggara, beberapa negara yang kuat ilmu dasarnya mulai menunjukan taringnya, misalnya Vietnam, selain tentu saja Singapura. Yuk perkuat sarana ilmiah dan ilmu dasar, jika ada yang mengkritik bidang tersebut tidak langsung memiliki kontribusi dibanding bidang terapan, tidak apa-apa, barengi saja dengan terapan sebisa mungkin.

Evaluasi Diri

Baru saja saya menonton pertandingan catur online antara Grandmaster Wanita (GMW) Irene Sukandar dengan MI Levi (Gotham Chess). Postingan ini sekedar mengambil hikmah di balik permainan asah otak ini.

Analisa

Ketika selesai bermain, selalu pemain profesional akan melakukan analisa partai yang baru saja dia selesaikan. Terkadang ketika kalah, ada rasa enggan untuk melihat kembali partai tersebut. Padahal banyak hal yang dapat ditarik sebagai pelajaran. Nah, di sinilah peran analisa.

Kalau dulu kita membutuhkan mentor untuk melakukan analisa, saat ini aplikasi-aplikasi komputer, seperti Lichess atau Chess.com menyediakan fasilitas analisa. Ketika di-run, ternyata banyak sekali kesalahan-kesalahan di kedua kubu, baik yang menang maupun yang kalah. Selanjutnya ditunjukan pula akurasi langkah yang diambil selama pertandingan berlangsung. Tidak jarang, pemain dengan akurasi lebih tinggi kalah, mungkin karena blunder atau kalah waktu.

Dalam kehidupan sehari-hari, bisa saja kita analogikan seperti pertandingan catur, yaitu dari sisi akurasi. Bedanya tidak ada mesin yang membantu kita menganalisa kesalahan-kesalahan apa saja yang telah kita lakukan dalam satu hari misalnya. Andaikan ada, sudah dapat dipastikan kita akan kaget terhaadap ketidakakuratan kita dalam bertindak, seperti kagetnya saya ketika menerima hasil analisa dari aplikasi catur. Terkadang ada salah langkah, terkadang pula ada langkah yang saya lewatkan padahal dapat memperoleh keuntungan tertentu. Terkadang banyak kesalahan yang diambil, tetapi dapat teratasi.

Juara dunia favorit saya, Karpov, pernah mengatakan seorang grandmaster ketika melakukan kesalahan akan berusaha pertama kali mengurangi dampak dari kesalahan yang dibuatnya. Tetap optimis dan kreatif, tidak menyalahkan atas apa yang terjadi.

Karpov – https://www.chessforstudents.com/cutest-3-year-old-chess-prodigy-plays-world-champion/

Evaluasi Diri

Kehidupan lebih rumit dari catur yang hanya beruang lingkup 8×8 petak saja dengan kemungkinan yang dalam istilah artificial intelligence yakni fully observable and deterministic. Dalam kehidupan banyak faktor yang saling mempengaruhi. Nah, tidak ada cara lain selain evaluasi diri, istilah yang sering dijumpai ketika akreditasi di kemdikbud.

Apa saja titik-titik lemah dan kekuatan serta apa saja yang perlu ditingkatkan serta tantangan yang dihadapi secara sadar perlu diketahui. Coba saja Anda ingat-ingat di malam hari, kira-kira langkah mana yang tepat dan mana yang kurang tepat dalam satu hari ini, sebagai bahan evaluasi. Terkadang hanya hal-hal penting saja yang teringat, padahal bisa saja hal-hal kecil sangat menentukan hasil.

*****

Dalam belajar, metakognisi sangat dibutuhkan, terutama mengetahui apa saja yang belum diketahui dan apa saja yang sudah diketahui. Sehingga belajar menjadi efektif karena sesuai dengan apa yang dibutuhkan. Selain itu, dengan evaluasi diri yang baik biasanya akan mampu membuat prioritas apa saja yang harus dikerjakan. Dengan prioritas yang tepat maka kinerja akan efektif dan efisien. Saya melihat di facebook, instagram, twitter dan medsos lainnya rekan-rekan saya yg top banget tapi terkadang kehabisan ide membahas hal-hal tidak penting yang malah menyinggung orang lain. Yuk, evaluasi diri.

Bahasa Untuk Pemrograman Berorientasi Objek

Tiap kampus ternyata berbeda-beda awal perkuliahannya, termasuk kampus tempat saya mengajar yang baru mulai pertemuan pertama semester genap. COVID-19 memang membuat beberapa agenda perkuliahan berubah. Faktor perkuliahan online dan kesiapan kampuslah yang membuah pergeseran dan perubahan sistem, dari yang tatap muka menjadi online. Terutama kesiapan dalam menangani praktikum.

Untuk bidang komputer, khususnya materi pemrograman dapat dilakukan praktik secara online. Problem utama hanyalah di sisi mahasiswa yang terpaksa memindahkan komputer lab ke dalam laptop sendiri, sekaligus sarana network berupa pulsa/paket internet. Nah, untuk mahasiswa yang pas-pasan, tentu saja agak kesulitan ketika memiliki laptop dengan spesifikasi minim. Oleh karena itu perlu difikirkan bagaimana menyiapkan sarana yang murah-meriah.

Java

Java dan C++ sudah sejak lama menjadi sarana belajar pemrograman berorientasi objek. Silahkan lihat postingan saya tentang DB4O untuk basis data objek. Sebelumnya, bahasa ini menjadi andalah saya untuk praktik pemrograman berorientasi objek, tetap kondisi online sangat menyulitkan mahasiswa, sehingga perlu sarana murah-meriah lainnya.

Python

Bahasa yang paling banyak diminati saat ini adalah Python. Banyak paket yang tersedia dari Python berbasis konsol hingga paket Anaconda yang gratis diunduh. Hanya saja paket ini membutuhkan sumber daya yang besar untuk mengaktifkan fasilitas-fasilitas seperti Jupyter Notebook atau Spyder.

Untungnya Google menyediakan sarana programming hanya dengan browser dan mempersilahkan orang menggunakan servernya, termasuk Graphic Processing Unit (GPU) yang cukup ampuh dalam menangani Deep Learning. Bagaimana untuk pemrograman berorientasi objek?

Saat ini Python memiliki pesaing kuat, suatu bahasa pemrograman secepat C++, sedinamis Ruby, dan semudah Python, yaitu Julia. Namun bahasa ini tidak ditujukan untuk pemrograman berorientasi objek, berbede dengan Python yang dari awal memang untuk objek.

Mencoba Pemrograman Objek Sederhana

Baik untuk praktik awal, silahkan buka Google Colab Anda (lihat tata cara di post yang lalu). Copy paste saja kode berikut ini sebagai ilustrasi bagaimana sebuah kelas dengan method yang tersedia.


import math
class Point:
    'Represents a point in two-dimensional geometric coordinates'
    def __init__(self, x=0, y=0):
        '''Initialize the position of a new point. The x and y
        coordinates can be specified. If they are not, the point
        defaults to the origin.'''
        self.move(x, y)
    def move(self, x, y):
        "Move the point to a new location in two-dimensional space."
        self.x = x
        self.y = y
    def reset(self):
        'Reset the point back to the geometric origin: 0, 0'
        self.move(0, 0)
    def calculate_distance(self, other_point):
        """Calculate the distance from this point to a second point
        passed as a parameter.
        This function uses the Pythagorean Theorem to calculate
        the distance between the two points. The distance is returned
        as a float."""
        return math.sqrt((self.x - other_point.x)**2 + (self.y - other_point.y)**2)

Kelas di atas tidak menghasilkan output karena belum dihidupkan objeknya. Berikut cara mencoba method yang direpresentasikan dalam keyword “def” di atas.

point=Point(3,5)
print("point awal = ",point.x, point.y)
point2=Point(5,5)
jarak=point.calculate_distance(point2)
print("jarak dari point awal =",jarak)

Pastikan hasilnya tampak seperti di bawah ini, selamat mencoba.

Perkuliahan Darurat

Baru saja saya ikut acara yasinan online dalam rangka meninggalnya adik seorang profesor yang juga mentor saya dalam riset. Acara selain pengajian, testimoni dari rekan-rekan almarhumah dilakukan. Dari yang saya amati ternyata dia seorang pekerja keras yang selalu total dalam menjalankan tugas-tugasnya di salah satu kementerian. Pandemi ini sudah banyak memakan korban, dan kebanyakan orang yang saya kenal sebagai orang baik.

*****

Panic-Gogic/Panic-Learning

Ketika di awal kemunculannya, ada artikel yang membahas masalah pendidikan yang harus dijalankan secara online (e-learning). Penulis yang merupakan pakar pendidikan menyarankan agar menerapkan panic-learning dari pada e-learning murni. Hal ini terjadi karena pendidikan di masa pandemik bukan kebutuhan penting. Yang terpenting adalah kesehatan dan ekonomi.

Bayangkan siswa yang orang tuanya terkena dampak COVID-19, seperti meninggal atau terkena PHK, pasti akan terganggu perkuliahannya. Jika dipaksa e-learning full, dipastikan siswa tersebut tidak kuat. Ada baiknya fokus ke kebutuhan utama, minimal keselamatan mahasiswa. Di sini tidak hanya siswa yang terancam jika tidak memperhatikan protokol kesehatan, keluarga di rumah, terutama orang tua akan rentan terkena dampaknya, sementara siswa tersebut jika terkena mungkin bisa cepat pulih karena lebih kuat fisiknya.

Masalah pulsa merupakan masalah utama bagi mahasiswa berdasarkan survey di akhir kuliah. Walaupun pemerintah memberikan gratis pulsa tetapi tidak mencukupi jika seluruh dosen mewajibkan meeting online dengan streaming, baik via zoom maupun google meet. Sebagai kaprodi, saya memiliki akses melihat nilai-nilai mahasiwa dan ternyata ada beberapa yang nilainya buruk ternyata terkena COVID-19. Uniknya si dosen tidak tahu, dan langsung menghukum dengan nilai D, karena kurangnya kehadiran dan nilai yg seadanya saat UTS dan UAS. Ketika saya beritahu dosen yang bersangkutan, ternyata tidak tahu dan menyesal memberi nilai tersebut. Repotnya dosen-dosen lainnya juga memberi nilai yang sama, walaupun D lulus tetapi batas maksimal 2 nilai D membuat siswa tersebut tidak bisa lulus. Ketika mau mengulang tahun depan tidak mungkin karena terbentur masa studi, sementara jika ikut semester pendek khusus, biayanya hampir mendekati SPP karena seorang diri. Padahal kondisi keluarganya baru dalam pemulihan akibat terkena COVID-19 semua.

*****

Belajar dari Catur: Krisis Waktu

Ketika aktif di unit catur saat kuliah, saya terkena sindrom kalah waktu. Senior-senior ternyata memahami hal tersebut, sehingga didikan khusus diberikan. Ketika berlatih blitz (5 menit) jika kalah waktu saya dihukum push-up. Namun, ternyata tidak berhasil juga. Untungnya ada informasi dari mantan juara dunia Uni Sovyet, Michael Botwinnik, yang menganjurkan seorang pemain untuk menurunkan kualitas kalkulasi ketika krisis waktu. Cara tersebut efektif juga. Ketika saya mampu menghitung kemungkinan, misal 3 langkah ke depan, karena krisis waktu saya harus menghitung di bawahnya, bahkan hanya satu langkah ke depan.

Krisis waktu dalam catur dapat diibaratkan dengan kondisi darurat karena kalah jam berarti kalah dalam permainan, walaupun unggul material yang banyak. Darurat saat ini adalah pandemi yang mengharuskan kita kuat dalam imunitas tubuh. Imunitas berfungsi dengan baik jika istirahat cukup, makanan sehat bergizi dan tidak stress. Stress banyak sebabnya, dan repotnya terkadang tidak dirasakan oleh kita. Tugas yang menumpuk, deadline, dan lain-lain yang menuntut totalitas kerja terkadang melupakan istirahat dan sumber nutrisi yang cukup, alhasil, imunitas turun dan potensi terkena COVID-19 tinggi. Walaupun sudah imunisasi ternyata tidak menjamin 100% mampu kebal dari virus yang kabarnya telah bermutasi menjadi lebih mudah menyebar.

*****

Pengajar pun sebenarnya memahami kondisi mahasiswanya karena dia juga dahulu seorang pelajar. Hanya saja mungkin sudah lama sekali, bertahun-tahun yang lalu. Saya sendiri selesai pendidikan terakhir hampir 3 tahun yang lalu dan memahami apa yang dirasa berat oleh mahasiswa. Selain ujian, ternyata tugas kuliah merupakan momok terberat. Maka, saya tidak akan memberikan deadline yang ketat kepada mahasiswa karena berpotensi membuat stress dan akhirnya menurunkan imunitas tubuh.

E-learning saat ini sudah sangat maju namun untuk menerapkannya mungkin bisa dalam kondisi normal. Namun ternyata untuk kondisi darurat ternyata harus menggunakan metode yang efisien yang saat ini sedang dicari formula yang tepat oleh pemerintah. Adaptasi kebiasaan baru sepertinya mutlak diperlukan untuk mata kuliah yang membutuhkan praktek. Untungnya, bidang saya tidak terlalu membutuhkan praktik langsung, dapat diatasi dengan simulator. Semoga pandemik ini segera berakhir.