## PLATFORM PEMBELAJARAN ONLINE DENGAN ALGORITMA FISHER-YATES SHUFFLE UNTUK PENGACAKAN SOAL UJIAN
Moch. Alvin Faruq Asshegaff, Yisti Vita Via, Retno Mumpuni Program Studi Informatika, Fakultas Ilmu Komputer Universitas Pembangunan Nasional “Veteran” Jawa Timur Jl. Rungkut Madya No.1, Gn. Anyar, Kec. Gn. Anyar, Surabaya, Jawa Timur, Indonesia alvinfaruq06@gmail.com

## ABSTRAK
Perkembangan  teknologi  informasi  telah  memengaruhi  berbagai  bidang,  meningkatkan  kebutuhan  akan informasi berkualitas. Dalam pendidikan, pelayanan pembelajaran menjadi fokus utama untuk mencapai proses pembelajaran  yang  diinginkan.  Metode  pengajaran  yang  sedang  berkembang  adalah  platform  pembelajaran online.  Platform  ini  merupakan  wadah  digital  untuk  pengajaran  dan  pembelajaran  melalui  media  online. Platform  pembelajaran  online  memiliki  fitur  ujian  yang  digunakan  untuk  mengevaluasi  pemahaman  siswa terhadap  materi  pembelajaran.  Proses  ujian  dilakukan  dengan  memberikan  soal-soal  yang  berkaitan  dengan materi yang dipelajari siswa. Namun, masalah sering muncul karena siswa dapat mencontek jawaban jika urutan soalnya  sama.  Untuk  mengatasi  hal  ini,  penelitian  ini  menggunakan  algoritma  Fisher  Yates  Shuffle  untuk mengacak  urutan  soal  dalam  ujian.  Algoritma  ini  menghasilkan  permutasi  acak,  sehingga  tidak  ada  urutan pertanyaan yang muncul kembali dalam sesi yang sama.
Kata kunci: Fisher Yates Shuffle, Pembelajaran Online, Platform, Soal Ujian.

## 1. PENDAHULUAN
Perkembangan ilmu  dan  tekologi  secara langsung  maupun  tidak  langsung  berpengaruh terhadap  segala  aspek  kehidupan,  termasuk  aspek pendidikan  [1].  Metode  pengajaran  yang  sedang berkembang  dimasa  sekarang  salah  satunya  adalah platform  pembelajaran  online.  Platform  ini  dapat diterapkan  mulai  jenjang  sekolah  dasar  hingga perguruan tinggi dan pendidikan professional, karena memiliki  akses  mudah  selama  terhubung  dengan internet.
Pembelajaran  tidak  terlepas  dari  interaksi  yang dilakukan  guru  dengan  siswanya,  hal  ini  juga  terjadi di  MI  Negeri  1  Kota  Surabaya.  Pembelajaran dilakukan  dengan  sistem  model  pembelajaran tradisional  yang  menerapkan  sistem  tatap  muka secara langsung. Pembelajaran tradisional ini memiliki  beberapa  kelemahan  seperti  pembelajaran hanya dapat dilakukan di sekolah, pembelajaran dapat dilakukan  jika  guru  bertemu  dengan  siswa  dan  lain sebagainya. Platform pembelajaran online diharapkan dapat  menjadi  solusi  permasalahan  tersebut  demi kemajuan  aspek  pendidikan.  Platform  pembelajaran online  ini  dapat  menjadi  jembatan  bagi  guru  dan siswa  dalam  melakuakan  pembelajaran  dimana  saja asalkan  terhubung  dengan  internet.  Munculnya platform  ini  memudahkan  penyebaran  materi  atau ilmu  pengetahuan  untuk  peserta  didik  sebagai persiapan  kegiatan  belajar  mengajar,  membantu peserta  didik  untuk  tetap  mengumpulkan  tugas  tepat waktu dan mengikuti perkembangan materi atau ilmu pengetahuan  meskipun  berhalangan  hadir  dalam kegiatan  belajar  mengajar  di  kelas,  serta  sebagai bahan belajar untuk menghadapi ulangan atau ujian.
Platform  ini  jika  diterapkan  saat  ujian  akan sangat  membantu  karena  akan meminimalisir
terjadinya  kecurangan  yang  dilakukan  oleh  siswa, yang  mana  dalam  penelitian  ini  digunakan  algoritma Fisher  Yates  Shuffle  untuk  melakukan  pengacakan soal,  sehingga  antara  siswa  yang  satu  dengan  yang lain  soal  yang  muncul  tidak  akann  sama  pada  sesi yang sama [2].
Latar belakang permasalahan yang ada mendorong  penulis  melakuakn  penelitian  dengan judul  “Pembuatan  Platform  Pembelajaran  Online Menggunakan Algoritma Fisher Yates Shuffle Dalam Pengacakan  Soal  Ujian  (Studi  Kasus:  Mi  Negeri  1 Kota  Surabaya)”,  yang  mana  penulis  memiliki harapan  yang  besar  penelitian  ini  dapat  menjadi solusi permasalahan tersebut.

## 2. TINJAUAN PUSTAKA
2.1. Aplikasi dan Platform Pembelajaran Daring
Aplikasi  merupakan  suatu  program  sudah  siap pakai  yang  berisi  penerapan,  data,  permasalahan, pekerjaan  dalam  suatu  bentuk  media  atau  perangkat seperti  komputer  dan  handphone  yang  dapat digunakan  oleh  pengguna  untuk  mempermudah dalam mengerjakan sesuatu [3][4].
Pembelajaran  Daring  adalah  Sebuah  proses belajar  mengajar  secara  digital  yang  memanfaatkan teknologi  informasi  untuk  menyampaikan  bahan  ajar dan  dapat  diakses  setiap  saat  dan  dimana  saja. Penyampaiannya  memungkinkan  jika  tersedia  media internet,  internet  maupun  media  jaringan  komputer lainnya [5].

## 2.2. Algoritma Fisher Yates Shuffle
Algoritma  Fisher-Yates  juga  dikenal  sebagai algoritma  Knuth  shuffle  merupakan  suatu  metode
untuk  mengacak  urutan  elemen  dalam  sebuah  array. Algoritma  ini  memiliki  dua  metode,  yaitu  metode orisinal  dan  metode  modern.  Dalam  pengembangan aplikasi,  metode  modern  lebih  umum  digunakan karena  dapat  menciptakan  variasi  yang  lebih  banyak dalam pengacakan menggunakan sistem komputerisasi. [6].
Kelebihan algoritma Fisher Yates, yaitu pengacakan  dan  kompleksitas  yang  efektif,  tidak memungkinkan  adanya  keterulangan,  serta  memiliki kompleksitas  waktu  sebanding  dengan  jumlah variable  yang  diacak.  Algoritma  Fisher  Yates  juga memiliki  kekurangan  seperti  perlunya  dorongan algoritma  lain  untuk  memberikan  hasil  maksimalnya [7].

## 2.3. Codeigniter  dan  Model  View  Controller (MVC)
CodeIgniter  adalah  kerangka  kerja  sumber terbuka  yang  diperkenalkan  pertama  kali  pada  28 Februari 2006. CodeIgniter mengadopsi pola pengembangan  Model-View-Controller  (MVC)  yang digunakan  untuk  membangun  situs  web  dengan menggunakan bahasa pemrograman PHP. Keunggulan  CodeIgniter  bagi  para  pengembang termasuk  ukurannya  yang  kecil,  kecepatan  eksekusi, penggunaan sumber daya yang efisien, dan kemudahan penggunaan. Kelemahan dalam CodeIgniter,  yaitu  tidak  dirancang  untuk  proyek berskala  besar  dan  memiliki  pilihan  plugin  yang terbatas [8][9][10].
Model  View  Controller  (MVC)  merupakan sebuah  model  peletakan  atau  penataan  syntax  yang memungkinkan  pemisahan  antar  layer  application logic  dan  presentation,  sehingga  dengan  penerapan MVC ini membuat developer bisa terfokus pada core- system saat pengembangan [11].

## 3. METODE PENELITIAN
Penelitian  yang  dilakukan  dapat  dijelaskan melalui bagan berikut:
Gambar 1. Diagram Proses Penelitian
Tahapan  dalam  penelitian  ini  meliputi  studi literatur, analisisa dan perancangan aplikasi, implementasi  dan  pembuatan  aplikasi,  uji  coba  dan evaluasi aplikasi, dan penyusunan laporan skripsi.

## 3.1. Studi Literatur
Langkah  pertama  yang  dilakukan  oleh  penulis pada  penelitian  ini  adalah  dengan  melakukan  studi literatur.  Studi  literatur  dilakukan  agar  penulis mendapatkan  informasi  mengenai  konsep  dan penerapan dari metode yang sesuai dengan permasalahan  yang diteliti. Dalam proses  ini, penulis
mencari  dan  mengumpulkan  referensi  dari  berbagai penelitian  terdahulu,  jurnal  ilmiah,  dan  buku,  serta mempelajari mengenai algoritma fisher yates shuffle, serta penerapannya dalam aplikasi.

## 3.2. Proses Pengacakan
Proses menghasilkan permutasi pengacakan soal terbatas dengan menggunakan algoritma Fisher Yates Shuffle adalah sebagai berikut:
1. Tentukan nilai n atau banyak soal (sebagai array awal)
2. Tentukan jumlah soal yang ingin ditampilkan N
3. Atur  ulang  nilai  n,  dimana  n  =  n  –  1,  sebagai parameter dari array (0 - n)
4. Pilih angka acak (x) dimana 0 ≥ x ≤ n
5. Tukar posisi nilai (x) dengan index ke- n
6. Pindahkan nilai (x) ke list array hasil permutasi.
7. Lakukan  perulangan  (i)  proses  3  sampai  7 sebanyak  N,  jika  kondisi  sudah  terpenuhi  maka pengacakan telah selesai.
8. Cetak nilai list Array hasil permutasi.
Flowchart proses menghasilkan permutasi pengacakan  soal  terbatas  menggunakan  algoritma Fisher Yates Shuffle seperti terlihat pada Gambar 2.
Gambar 2. Metode Algoritma Fisher Yates Shuffle Dalam Pengacakan Soal
Contoh  pengacakan  menggunakan  algoritma Fisher Yates Shuffle:
Diketahui: Nilai n atau banyak soal = 10 (0 sampai 9) Jumlah soal yang ingin ditampilkan N=5
Tabel 1. Contoh Pengacakan Menggunakan Algoritma Fisher Yates Shuffle Range [Array awal] N = 10 Rol l N = 5 Scratch Result [Array hasil permutasi] [0,1,2,3,4,5,6,7,8,9] 4 [0,1,2,3,9,5,6,7,8, 4 ] [4]
[0,1,2,3,9,5,6,7,8, 4 ] 7 [0,1,2,3,5,6,9,8, 7,4 ] [4,7] [0,1,2,3,5,6,9,8, 7,4 ] 9 [0,1,2,3,5,6,8, 9,7,4 ] [4,7,9] [0,1,2,3,5,6,8, 9,7,4 ] 5 [0,1,2,3,6,8, 5,9,7,4 ] [4,7,9,5] [0,1,2,3,6,8, 5,9,7,4 ] 1 [0,2,3,6,8, 1,5,9,7,4 ] [4,7,9,5,1]
Range adalah jumlah angka yang belum terpilih, roll  adalah  angka  acak  terpilih,  Scratch  adalah daftar angka  yang  belum  terpilih,  dan  Result  adalah  hasil permutasi.
Hasil  dari  pengacakan  pada  tabel  1  didapatkan urutan  array  hasil  permutasi  yaitu  [4,7,9,5,1].  Jika diketahui  soal  dengan  urutan  1,2,3,4,5,6,7,8,9,10 dengan  soal  yang  akan  ditampilkan  adalah  sebanyak 5 soal maka setelah dilakukan pengacakan berdasarkan contoh tabel diatas hasil dari urutan soal yang akan ditampilkan adalah sebagai berikut:
Maka,  soal  yang  akan  ditampilkan  adalah dengan urutan 5,8,10,6,2

## 4. HASIL DAN PEMBAHASAN
Hasil  penelitian  yang  telah  dilakukan  pengujian menunjukkan  hasil  yang  sesuai  dengan  harapan peneliti.

## 4.1. Implementasi Sistem
Implementasi  sistem  ini  akan  menunjukkan bahwa  sistem  yang  dirancang  sebelumnya  dilakukan percobaan, sebagai berikut:
Gambar 3. Halaman Ujian pada Guru
Pada  halaman  data  ujian  seperti  gambar  9, sistem  akan  menampilkan  daftar  ujian  yang menggunakan  aplikasi  yang  telah  dikembangkan.  Di halaman  ini,  guru  dapat  menambah  ujian  baru, melihat detail ujian  yang  sudah ada,  mengubah ujian yang  sudah  ada,  dan  menghapus  ujian  yang  sudah ada.
Pada  halaman  data  soal  menunjukkan  Gambar 10,  sistem  akan  menampilkan  daftar  soal  yang menggunakan  aplikasi  yang  telah  dikembangkan.  Di halaman ini, guru dapat menambah soal baru, melihat detail  soal  yang  sudah  ada,  mengubah  soal  yang sudah ada, dan menghapus soal yang sudah ada.
Gambar 4. Halaman Soal pada Guru
Gambar 5. Halaman Ujian pada Siswa
Pada  halaman  data  ujian  seperti  Gambar  4, sistem  akan  menampilkan  daftar  ujian  yang menggunakan  aplikasi  yang  telah  dikembangkan.  Di halaman  ini,  siswa  dapat  melihat  kelas,  mata pelajaran,  tanggal  ujian,  waktu  mulai,  waktu  selesai, jenis  ujian,  dan  juga  detail  halaman  serta  soal  ujian yang terdapat pada opsi yang dipilih.
Gambar 6. Halaman Soal pada Siswa
Pada  halaman  soal  seperti  Gambar  5,  sistem akan  menampilkan  daftar  soal  yang  dapat  diakses menggunakan  aplikasi  yang  telah  dikembangkan.  Di halaman ini, siswa dapat.

## 4.2. Implementasi Algoritma
Pada  Tabel  2  dapat  dilihat  tampilan  program implementasi  algoritma  fisher  yates  shuffle  pada pengacakan soal ujian.
Tabel 2. Implementasi Algoritma No Kode Program 1 public function generateUrutan(array $soal,
$idsiswa, $idujian) {
2 $count = count($soal);
3 $retVal = array();
4 $ind = array();
5 $index = 0;
6
7 for ($i = 0; $i < $count; ++$i)
8 $ind[$i] = 0;
9
10 for ($i = 0; $i < $count; ++$i)
11 {
12 do
13 {
14 $index = rand() % $count;
15 } while ($ind[$index] != 0);
16 17 $ind[$index] = 1;
18 $retVal[$i] = $soal[$index]; 19 }
20
21 $data = [
22 "idsiswa" => $idsiswa,
23 "idujian" => $idujian,
24 "urutan" => json_encode($retVal)
25 ];
26 $this->db->insert('urutan_soal', $data);
27
28 foreach($soal as $value){
29 $this->urutan_jawaban($idsiswa, $value['id']);
30 }
31
32 return $retVal;
33 }
Pengimplementasian  algoritma  fisher  yates shuffle  pada  platform  pembelajaran  online  ini diterapkan  pada  bagian  pengacakan  urutan  soal pilihan  ganda  (multiple  choice).  Fungsi  di  atas,
dengan  nama  generateUrutan,  mengambil  tiga parameter:  $soal  (sebuah  array  berisi  pertanyaan- pertanyaan  ujian),  $idsiswa  (ID  siswa),  dan  $idujian (ID  ujian).  Pertama,  fungsi  ini  menghitung  jumlah elemen  dalam  array  $soal  dan  membuat  tiga  array kosong:  $retVal  untuk  menyimpan  urutan  soal,  $ind untuk  melacak  status  pemilihan  soal,  dan  $index sebagai  variabel  penunjuk.  Selanjutnya,  dua  loop  for digunakan.  Yang  pertama  menginisialisasi  semua elemen dalam array $ind dengan nilai 0. Yang kedua bertujuan untuk memilih acak urutan soal.
Di  dalam  loop  kedua,  pertama-tama  dilakukan pemilihan  acak  indeks  soal  dengan  menggunakan fungsi  rand()  dan  modulo  operasi  untuk  memastikan indeks  tetap  dalam  rentang  yang  benar.  Selanjutnya, dilakukan  pengulangan  do-while  untuk  memastikan bahwa  indeks  yang  terpilih  belum  pernah  dipilih sebelumnya.  Jika  indeks  sudah  pernah  dipilih,  maka akan terus melakukan pemilihan hingga mendapatkan indeks  yang  belum  dipilih.  Setelah  indeks  terpilih, status  pemilihan  pada  $ind  diubah  menjadi  1  untuk menandakan  bahwa  soal  dengan  indeks  tersebut sudah dipilih, dan pertanyaan tersebut dimasukkan ke dalam $retVal.
Selanjutnya,  sebuah  array  $data  dibuat  dengan informasi  ID  siswa,  ID  ujian,  dan  urutan  soal  dalam bentuk  JSON.  Data  ini  kemudian  disimpan  di  tabel 'urutan_soal'  dalam  database  menggunakan  perintah insert.  Terakhir,  fungsi  mengembalikan  urutan  soal yang telah diacak dalam bentuk array $retVal.

## 4.3. Uji Coba dan Evaluasi
Pengujian  aplikasi  ini  dilakukan  satu  kali  oleh calon  pengguna  siswa  dengan  menggunakan  metode System  Usability  Scale  (SUS),  di  mana  hasil diperoleh  dari  sepuluh  responden  adalah  sebagai berikut seperti pada Tabel 3.
Tabel 3. Skor PengujianSystem Usability Scale (SUS)
No Responden Skor Total Nilai SUS Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 1 Responden 1 3 2 3 3 4 3 4 4 3 2 31 77,5 2 Responden 2 3 3 3 2 4 3 3 4 2 2 29 72,5 3 Responden 3 4 1 3 3 3 4 3 3 4 0 28 70 4 Responden 4 3 2 2 3 4 4 4 4 3 2 31 77,5 5 Responden 5 3 4 3 3 4 3 4 4 4 1 33 82,5 6 Responden 6 3 3 4 2 3 3 3 4 3 0 28 70 7 Responden 7 4 3 4 1 3 3 4 3 3 1 29 72,5 8 Responden 8 3 4 4 4 4 4 4 4 4 4 39 97,5 9 Responden 9 3 3 3 3 3 2 4 1 3 3 28
70 10 Responden 10 4 4 4 1 4 4 4 4 4 3 36 90 78
Dengan  hasil  akhir  perhitungan  rata-rata  78, skor  tersebut  dimasukkan  ke  dalam  indikator penilaian System Usability Scale (SUS).
Skor  SUS  yang  diperoleh  adalah  78,  di  mana dalam indikator Rentang Penerimaan termasuk dalam
kategori  Dapat  Diterima,  pada  Skala  Grade  memiliki nilai C, dan pada Penilaian Kata Sifat termasuk dalam kategori Sangat Baik.

## 5. KESIMPULAN DAN SARAN
Berdasarkan  hasil  implementasi  dan  pengujian yang dilakukan secara keseluruhan platform pembelajaran  online  telah  berjalan  sesuai  dengan yang  diharapkan,  sehingga  dapat  ditarik  kesimpulan sebagai berikut:
Penerapan  algoritma  Fisher  Yates  Shuffle  dapat digunakan  untuk  mengacak  urutan  soal  ujian  pada platform pembelajaran online dengan tipe soal pilihan ganda.  Hal  ini  memastikan  bahwa  setiap  siswa menerima  urutan  soal  yang  berbeda-beda,  tanpa  ada pengulangan  urutan  soal  yang  sama.  Pada  platform ini, jawaban soal akan otomatis dikoreksi oleh sistem sesuai  dengan  jawaban  yang  diinput  oleh  guru. Sehingga,  nilai  hasil  ujian  siswa  dapat  diketahui secara real-time setelah  mereka  menyelesaikan ujian. Hasil  penelitian  menunjukkan  bahwa  pengacakan soal  dengan  menggunakan  algoritma  Fisher  Yates Shuffle menghasilkan pengacakan soal yang optimal. Guru dapat membuat sebanyak mungkin soal asli dan memilih  soal  mana  yang  akan  ditampilkan  kepada setiap  siswa.  Oleh  karena  itu,  dapat  disimpulkan bahwa  semakin  banyak  soal  yang  dibuat  oleh  guru, semakin bervariasinya pengacakan soal.

## DAFTAR PUSTAKA
[1] Rahmanto,  Y  dan  Gunawan  R.  D.  2021. Digitalisasi  Artefak  pada  Museum  Lampung Menggunakan Teknik Fotogrametri Jarak Dekat untuk  Pemodelan  Artefak  3D.  Jurnal  CoreIT: Jurnal  Hasil  Penelitian  Ilmu  Komputer  Dan Teknologi Informasi, 7(1): 13–19.
[2] Sholihuddin, M. T., Anggreny, F. T dan Alit, R. 2020.  Implementasi  algoritma  fisher  yates shuffle  sebagai  pengacak  urutan  soal.  Seminar nasional  informatika  bela  negara  (SANTIKA), 1: 195-198.
[3] Ramadhan, A. F., Putra, A. D dan Surahman, A. 2021.  Aplikasi  Pengenalan  Perangkat  Keras
Komputer  Berbasis  Android  Menggunakan Augmented Reality (AR). Jurnal Teknologi dan Sistem Informasi (JTSI), 2(2): 24-31
[4] Dewi,  N.  M.,  Irawan,  B.  H  dan  Putra,  A.  S. 2021.  Konsep  Aplikasi  E-Dakwah  Untuk Generasi  Milenial  Jakarta.  Jurnal  IKRA-ITH INFORMATIKA, 5(2): 26-33
[5] Supriady,  Nirwan,  S  dan  Kusuma,  R.  A.  2020. Rancang Bangun  Aplikasi Pembelajaran Daring Di Smp Negeri 1 Cigugur Berbasis Web. Jurnal Teknik Informatika, 12(3): 53-59
[6] Irfansyah,.  Muliono,  R  dan  Susilawati.  2023. Rancang  Bangun  Aplikasi  E-Learning  Dengan Implemetasi  Algoritma  Fisher  Yates  Shuffle Dalam  Pengacakan  Soal  Ujian.  JATI  (Jurnal Mahasiswa Teknik Informatika), 7(1): 302-307.
[7] Maulana,  A.,  Fauziah  dan  Komalasari,  R.  T. 2020.  Penerapan  Algoritma  Fisher  Yates  Untuk Mengacak  Soal  Penerimaan  Forum  Studi Mahasiswa  Informatika  Universitas  Nasional. JIPI (Jurnal Ilmiah Penelitian dan Pembelajaran Informatika), 5(2): 104-111
[8] Rahman,  F.,  Ratna  S.  2018.  Perancangan  E- Learning Berbasis Web Menggunakan
Framework  Codeigniter.  Technologia,  9(2):  95- 100
[9] Syafitri,  Y.,  Pramudya,  Y.  D  dan  Rasid,  M. 2021.  Pemanfaatan  Framework  Codeigniter Untuk Membangun Aplikasi Display Produk Di Alfamart  Rajabasa.  Jurnal  Informasi  Dan Komputer, 9 (1): 45-52
[10] Zakaria,  M.  (2020).  Pengertian  CodeIgniter Beserta Kegunaan, Kelebihan, serta Kekurangannya, .
[11] Pratama,  Y.  2023.  Sistem  Praktek  Kerja Lapangan  (PKL)  pada  Sekolah  Tinggi  XYZ Menggunakan  Cideigniter.  Teknologipintar.org, 3(1):
1-20.