Implementasi Pendeteksi Code Clone pada Online Judge Sebagai Sarana Mengurangi Kecurangan Akademik Mahasiswa Program Studi Ilmu Komputer Rosa Ariani Sukamto
Eddy Prasetyo Nugroho
Muhamad Nursalman
Universitas Pendidikan Indonesia
Universitas Pendidikan Indonesia
Universitas Pendidikan Indonesia
[email protected]
[email protected]
[email protected]
ABSTRAK Code clone adalah menyalin sebagian kode program untuk digunakan kembali dengan atau tanpa modifikasi. Untuk mengurangi kecurangan code clone pada evaluasi mata kuliah pemrograman maka dirasa perlu menambahkan modul pendeteksi adanya code clone pada online judge yang digunakan sebagai sarana evaluasi pada beberapa mata kuliah pemrograman di program studi Ilmu Komputer Universit as Pendidikan Indonesia. Online Judge adalah sebuah perangkat lunak berbasis web yang digunakan untuk melakukan penilaian terhadap kode program yang diunggah. Online judge pada penelitian ini adalah aplikasi open source yang sudah dimodifikas i. Pendeteksi code clone yang dibuat mengacu pada metode pada penelitian Szymon Grabowski dan Wojciech Bieniecki berdasarkan statistik dan LCS (Longest Common Subsequence) dari kata kunci dari bahasa pemrograman C (keyword). Penelitian ini membandingkan kode program mahasiswa dalam evaluasi untuk dideteksi menggunakan pendeteksi code clone. Dari perbandingan yang dilakukan menghasilkan kesimpulan bahwa modul pendeteksi code clone pada online judge mampu mengurangi perilaku code clone yang dilakukan oleh mahasiswa. Nilai similaritas kode program yang dibandingkan semakin menurun pada evaluasi-evaluasi akhir setelah diberitahukan kepada peserta didik bahwa kode program mereka pada evaluasi akan dideteksi dengan pendeteksi code clone.
Kata Kunci code clone, online judge, LCS, kode program.
program studi Indonesia.
Ilmu
Komputer
Universitas
Pendidikan
Kemampuan membuat program komputer (coding) merupakan kemampuan utama yang harus dimiliki oleh mahasiswa program studi Ilmu Komputer. Saat ini sudah banyak artikel yang membahas bahwa sarjana lulusan Ilmu Komputer atau Informatika di Indonesia masih jauh dari yang diharapkan. Salah satunya adalah artikel Fauzi Andrian di detik.com menyatakan banyak lulusan yang memiliki nilai bagus banyak pula yang tidak memiliki pengetahuan dasar yang mumpuni di bidang teknologi informasi (TI). Banyak faktor yang mendasari hal tersebut diantaranya adalah mahasiswa tidak belajar mengasah kemampuannya dengan maksimal karena masih dapat banyak melakukan tindakan kecurangan saat evaluasi hanya untuk mendapatkan nilai bagus (Fauzi, 2010). Penelitian sebelumnya yang dilakukan oleh peneliti adalah mencoba meningkatkan motivasi dan prestasi belajar mahasiswa pada salah satu mata kuliah pemrograman di program studi Ilmu komputer. Penelitian tersebut menghasilkan bahwa secara keseluruhan motivasi mahasiswa meningkat dengan menggunakan online judge sebagai sarana evaluasi dan latihan pemrograman. Penelitian tersebut juga menyatakan bahwa secara prestasi mahasiswa juga tergolong baik (Sukamto, 2013). Sesuai dengan permasalahan di atas, penelitian ini bertujuan untuk membangun modul pendeteksi code clone pada online judge. Online judge saat ini sudah digunakan di program studi Ilmu Komputer UPI sebagai perangkat evaluasi. Penambahan modul ini dimaksudkan agar aplikasi online judge menjadi lebih mumpuni sebagai sarana evaluasi mahasiswa di bidang pemrograman komputer dalam mengurangi code clone.
1. PENDAHULUAN Dari pengalaman mengajar peneliti, setiap tahunnya masih didapatkan mahasiswa-mahasiswa yang melakukan kecurangan akademik selama evaluasi. M asih ditemukan adanya code clone yang dilakukan mahasiswa. Code clone adalah menyalin sebagian kode program untuk digunakan kembali dengan atau tanpa modifikasi (Selamat, 2010). Tentu saja code clone tidak diijinkan di dalam evaluasi mata kuliah pemrograman karena termasuk kecurangan akademik. Evaluasi adalah bagian dari tolak ukur hasil pembelajaran. M enurut artikel Rangkuti di kompasiana.com bahwa mahasiswa yang cenderung melakukan ketidakjujuran dalam bidang akademik maka akan cenderung melakukan beragam ketidakjujuran di dunia kerja (Rangkuti, 2012). Ketidakjujuran tersebut tentu saja akan mempengaruhi keterampilan (skill) yang dikuasai mahasiswa di masa depan karena mereka tidak benar-benar belajar. Oleh karena itu untuk terus meningkatkan kemampuan mahasiswa di bidang teknologi informasi maka dirasa perlu menambahkan modul p endeteksi adanya code clone pada online judge yang digunakan sebagai sarana evaluasi pada beberapa mata kuliah pemrograman di
2. TINJAUAN PUSTAKA 2.1 Code Clone Code clone atau menyalin sebagian kode program untuk digunakan kembali dengan atau tanpa modifikasi dikenal dengan sebutan code smell. Penggunaan kembali kode program yang sudah ada sering disebut dengan code cloning dan menggunakan sebagian kode (dengan atau tanpa modifikasi) disebut dengan clone dari aslinya. Code clone adalah bagian dari plagiarisme kode program (source code). Berikut adalah tipe-tipe dari code clone: a. b. c.
menyalin dengan sama persis tanpa modifikasi (kecuali modifikasi pada spasi dan komentar), menyalin secara sintaks dengan memodifikasi variabel, tipe, atau fungsi, menyalin dengan modifikasi seperti mengubah letak tempat, menambah atau menghapus bagian-bagian tertentu,
Jurnal Cybermatika | Vol. 2 No. 2 | Desember 2014 | Artikel 1
1
d.
menyalin sebagian kode program yang melibatkan penghapusan, modifikasi, dan penambahan dari kode program aslinya (Selamat, 2010).
2.
M odifikasi yang biasanya dilakukan oleh mahasiswa dalam membuat program diklasifikasikan sebagai berikut: a.
leksikal, mengubah kode program seperti sebagai berikut: i.
b.
mengubah komentar (menambahkan, menggunakan kembali, atau mengubah)
ii.
mengubah format
iii.
mengubah nama variabel
Struktural, mengubah struktur program misalnya sebagai berikut: i.
mengubah urutan algoritma,
ii.
mengubah prosedur menjadi fungsi atau sebaliknya,
iii.
mengubah prosedur menjadi tanpa prosedur dengan bagian program dari isi prosedur sebelumnya (Tresnawatia, 2011).
Semantik kode program (struktur) a. tree-based M etode ini mendeteksi sematik dilihat dari urutan struktur yang muncul pada kode program yang dideteksi. Penggunaan pohon disini digunakan untuk mendeteksi jenis struktur kata kunci, bukan menyimpan kata kunci kode program, karena jika yang disimpan adalah kata kunci kode program, bukan jenisnya maka hanya akan mendeteksi secara sintaks, bukan semantik. b. semantic-based M etode ini mendeteksi secara semantik dengan berbagai metode yang terfokus pada mendeteksi struktur secara satu per satu.
Adapun salah satu metode untuk membuat sebuah pendeteksi code clone berbasis token based adalah dengan memeriksa setiap kata kunci pada kode program dengan metode statistik dan LCS (Longest Common Subsequence). LCS adalah menghitung banyaknya kata kunci pada kode program dengan sekuen atau urutan yang sama dan yang terpanjang, misalkan jika pada kata: A= matter B =b ro t hers LLCS(A, B) = 3. LCS(A, B) = t e r
2.2 Metode Pendeteksi Code Clone Telah banyak penelitian yang dilakukan dalam bidang pendeteksi code clone. Diantaranya ada beberapa metode untuk mendeteksi code clone seperti pada gambar berikut:
dimana susunan urutan kata boleh melewati beberapa karakter yang berbeda, namun secara urutan letak tetap merupakan sekuen urutan seperti pada penelitian Szymon Grabowski dan Wojciech Bieniecki (Grabowski, 2006). Berikut adalah proses yang dilakukan untuk mendeteksi code clone dengan menggunakan statistik dan LCS pada keyword pada kode program: 1.
M enghitung jumlah kata kunci yang sama dari dua buah kode program yang dibandingkan untuk kemudian dihitung similaritasnya dengan rumus:
C
count k count k
kDict1\ Dict 2
Gambar 1 Variasi Pendeteksi Code Clone dalam Berbagai Penelitian
1
1.
2
Sintaks penulisan kode program a. string-based M etode ini biasanya berbasis string matching atau pencocokan string dari kode program. M etode ini digunakan untuk mendeteksi code clone yang sama persis. b. token-based M etode ini mengambil setiap token per token (kata kunci) pada kode program. M etode ini digunakan untuk mendeteksi code clone yang telah dimodifikasi pada variabel, tipe, atau fungsi. c. tree-based M etode ini mendeteksi sintaks secara tata letak dengan menggunakan struktur pohon. Penggunaan pohon disini lebih untuk menyimpan dan mendeteksi tata letak bagian kode program secara sintaks.
R
2
maxcount k ; count k 1
kDict1 Dict 2
Variasi metode dari berbagai penelitian diantaranya (Jiang, 2007):
kDict 2 \ Dict1 2
maxcount k ; count k
kDict1 Dict 2
1
2
S=R/C
2.
dimana count adalah fungsi untuk menghitung banyaknya kata kunci yang ada pada kode program. Sehingga rumus di atas membandingkan banyaknya macam kata kunci dan jumlahnya di dalam kode program yang dibandingkan. M enghitung jumlah pasangan kata kunci yang berdampingan dari dua buah kode program yang dibandingkan untuk kemudian dihitung similaritasnya dengan rumus:
S
lp1 lp 2
min lp1 , lp 2
Rosa Ariani Sukamto, Eddy Prasetyo Nugroho, Muhamad Nursalman
dimana lp1 adalah pasangan kata kunci yang ada pada kode program pertama dan lp2 adalah pasangan kata kunci yang ada pada kode program kedua. M enghitung jumlah LCS kata kunci pada dua buah kode program yang dibandingkan kemudian dihitung similaritasnya dengan rumus:
3.
S
LCS Word1,Word 2
min Word1 , Word 2
dimana Word1 adalah kode program pertama dan Word2 adalah kode program kedua yang dibandingkan. Nilai similaritas akhir adalah nilai similaritas pertama ditambah nilai similaritas kedua ditambah dengan dua kali nilai similaritas ketiga dibagi empat. Hal ini disebabkan nilai similaritas ketiga memiliki bobot lebih besar dalam menentukan similaritas pada kode program yang dibandingkan.
2.3 Online Judge Online Judge adalah sebuah perangkat lunak berbasis web yang digunakan untuk melakukan penilaian terhadap kode program yang diunggah. DOM Judge adalah salah satu perangkat lunak online judge. DOM judge adalah sebuah sistem penjurian otomatis untuk mengadakan kompetisi pemrograman. DOM judge bersifat open source (DOM Judge, 2012). DOM judge berjalan di sistem UNIX dengan menggunakan DBM S M ySQL. DOM judge memiliki fitur-fitur standar sebagai berikut: 1.
sebagai juri/administrator a. manajemen klarifikasi pertanyaan peserta b. manajemen kompetisi c. manajemen bahasa pemrograman yang boleh digunakan (ada beberapa pilihan bahasa pemrograman yang digunakan) d. manajemen soal e. papan skor f. manajemen kiriman jawaban g. manajemen peserta 2. sebagai peserta a. mengajukan klarifikasi pertanyaan kepada juri b. mengunggah jawaban c. papan skor Berikut adalah gambar penggunaan DOM judge:
Karena ditujukan untuk keperluan kompetisi maka DOM judge standar belum banyak mendapat sentuhan yang lebih menyenangkan. Oleh karena itu peneliti mencoba membuat beberapa sentuhan agar orang yang belajar pemrograman merasa sedang bermain ketika menggunakan DOM judge. Diantaranya adalah menambahkan beberapa fitur, dan mengubah DOM judge dapat dimainkan dengan banyak kompetisi pada waktu yang bersamaan. DOM judge digunakan untuk latihan membuat program bagi orang yang mempelajari pemrograman. DOM judge dapat dijadikan media pembelajaran berbasis active learning (learning by doing) yaitu belajar berlatih pemrograman dengan mengerjakan soal-soal yang ada di DOM judge untuk mendapatkan skor dan ranking kompetisi. Beberapa fitur yang ditambahkan oleh peneliti adalah sebagai berikut: 1.
adanya fasilitas obrolan (chat) bagi semua peserta dan juri, dimana obrolan dibatasi dengan tidak diijinkan membicarakan bagaimana cara menyelesaikan soal (memenuhi interaksi merupakan aksi yang memungkinkan pemain beraksi dengan pemain lainnya (Nuntawisuttiwong, 2012)), 2. adanya perolehan medali untuk tiga peserta yang mengerjakan dengan benar dan dalam waktu yang lebih pendek sehingga skornya tinggi (memenuhi hadiah atau penghargaan atau fungsi kegunaan (Nuntawisuttiwong, 2012)), 3. beberapa gambar yang menarik dan halaman profil pada tampilan DOM judge di sisi peserta (memenuhi Tujuan dari game adalah membuat orang yang memainkannya merasa senang (Nuntawisuttiwong, 2012)). Ketiga tambahan fitur di atas ditambahkan pada antarmuka kompetisi pemain seperti pada gambar berikut:
gambar menarik dikompilasi dan dieksekusi
pemain DOM judge
chat
Gambar 3 Halaman permainan peserta
kompilator
unggah kode program membuat kompetisi, membuat soal, membuat kunci hasil eksekusi program
hasil eksekusi
dibandingkan dengan kunci hasil eksekusi program, untuk mendapatkan skor
juri/administrator
Gambar 2 Penggunaan DOMjudge sebagai Online Judge
Gambar 4 Halaman profil peserta beserta medali yang didapat
Jurnal Cybermatika | Vol. 2 No. 2 | Desember 2014 | Artikel 1
3
3.2 Indikator Capaian Ukuran
Gambar 5 Papan skor dan perolehan medali Penambahan fitur dilakukan agar DOM judge lebih terkesan bermain atau menjadi sebuah game daripada sedang berkompetisi yang biasanya dianggap menegangkan. Jika rasa yang didapat ketika menggunakan DOM judge adalah bermain game, maka peserta dapat menggunakan DOM judge dengan perasaan senang. Kompetisi menggunakan DOM judge dapat dianggap termasuk dalam jenis game strategi. Berkompetisi dengan DOM judge membutuhkan pemikiran untuk mengerjakan soal pemrograman dan pemikiran strategi soal manakah yang akan dikerjakan terlebih dahulu agar dapat mendapatkan skor dan rangking tertinggi. DOM judge dapat digunakan agar peserta kuliah pemrograman lebih bersemangat dalam berlatih mengerjakan soal-soal.
3. METODE PENELITIAN 3.1 Pendekatan Penelitian Penelitian ini dilaksanakan p ada semester genap pada tahun ajaran 2013/2014. Penelitian dilakukan di Program studi Ilmu Komputer FPM IPA UPI. Subjek penelitian adalah mahasiswa Program Studi Ilmu Komputer FPM IPA yang mengikuti mata kuliah algoritma dan pemrograman I dan objek penelitian adalah perangkat lunak online judge yang dikembangkan peneliti di program studi Ilmu Komputer Universitas Pendidikan Indonesia. M etode yang digunakan untuk membuat modul pendeteksi code clone pada online judge dalam penelitian ini adalah metode pada penelitian Szymon Grabowski dan Wojciech Bieniecki (Grabowski, 2006). Penelitian Szymon Grabowski dan Wojciech Bieniecki tersebut menggunakan statistik dan LCS. M odul pendeteksi code clone ini akan dipasangkan pada online judge. Berikut adalah cara kerja modul code clone pada online judge.
peserta didik
unggah kode program
Online Judge kompetisi selesai
Kompetisi Online Judge
Deteksi Code Clone pada semua kode program yang terakhir diunggah oleh setiap peserta didik
Indikatori capaian ukuran pada penelitian ini yaitu indikator pengaruh adanya modul pendeteksi code clone pada online judge terhadap tingkat kecurangan akademik yang dilakukan mahasiswa. Indikator pengujian pendeteksi code clone pada tingkat kecurangan akademik mahasiswa akan diujikan dengan mengukur semua kode program evaluasi sebelum mahasiswa diberitahu adanya modul pendeteksi code clone dan dibandingkan dengan semua kode program evaluasi setelah mahasiswa diberitahu adanya modul pendeteksi code clone pada online judge.
4. HASIL DAN PEMBAHASAN 4.1 Hasil Deteksi Code Clone pada Hasil Evaluasi Pengujian dilakukan pada beberapa evaluasi yang dilakukan pada mahasiswa. Pada evaluasi hingga ujian tengah semester (UTS) mahasiswa tidak diberitahukan bahwa kode program ujian mereka akan diujikan pada pendeteksi code clone. Setelah UTS dibertahukan kepada mahasiswa bahwa kode program mereka pada evaluasi setelah UTS akan diperiksa similaritasnya dengan pendeteksi code clone. Hal ini dimaksudkan apakah pendeteksi code clone mampu mengurangi kemungkinan kecurangan yang dilakukan mahasiswa. Evaluasi yang digunakan untuk instrumen pada penelitian ini adalah sebagai berikut: Tabel 1 Jadwal Evaluasi No.
Nama Evaluasi
1.
Kuis 1 (2 kelas)
2.
UT S
(Ujian
Pelaksanaan 17 dan 19 Februari 2014
T engah
24 dan 26 Maret 2014
Semester) (2 kelas) 3.
Kuis 2 (2 kelas)
21 dan 23 April 2014
4.
Kuis 3 (2 kelas)
19 dan 21 Mei 2014
5.
T ugas Masa Depan (2 kelas)
27 Mei 2014
6.
UAS (Ujian Akhir Semester)
26 dan 28 Mei 2014
(2 kelas)
Soal evaluasi yang diberikan kepada kelas C1 dan C2 berbeda sehingga perbandingan kode program yang dilakukan untuk mendeteksi code clone hanya dilakukan per kelas pada setiap soal. Kode program yang dideteksi untuk mengetahui similaritasnya hanya kode program untuk soal yang sama. Kode program yang ada dibandingkan setiap dua buah kode program, maka hasil perbandingannya adalah sebanyak deret dari jumlah mahasiswa di setiap kelas untuk setiap soal yang berbeda, misalnya mahasiswanya ada 51 maka jumlah perbandingan adalah 51 + 50 + 49 + 48 + .... + 4 + 3 + 2 + 1. Hasil pendeteksi code clone pada beberapa evaluasi di atas adalah sebagai berikut (diambil nilai similaritas antara 0.9 sampai 1 karena dianggap memiliki similaritas tinggi):
hasil deteksi code clone
juri/administrator
Gambar 6 Cara Kerja Modul Pendeteksi Code Clone pada Online Judge
4
Rosa Ariani Sukamto, Eddy Prasetyo Nugroho, Muhamad Nursalman
5. KESIMPULAN DAN SARAN 5.1 Kesimpulan Kesimpulan dari penelitian ini adalah sebagai berikut: 1.
2. Gambar 7 Grafik Hasil Deteksi Code Clone pada Kelas C1
Pasangan kode program yang memiliki nilai similaritas tinggi belum tentu merupakan hasil code clone karena sebab-sebab berikut: a. soal yang diberikan pada evaluasi memiliki kemiripan dengan soal-soal yang pernah dibahas di kelas maupun di praktikum, b. peserta didik yang membuat kode program pernah melakukan belajar bersama atau berbagi logika dengan soal yang hampir mirip dengan soal evaluasi. M odul pendeteksi code clone mampu mengurangi jumlah similaritas kode program pada evaluasi, dimana nilai similaritas kode program yang dibandingkan semakin menurun pada evaluasi-evaluasi akhir setelah diberitahukan kepada peserta didik bahwa kode program mereka pada evaluasi akan dideteksi dengan pendeteksi code clone.
5.2 Saran Pendeteksi code clone pada penelitian ini masih menggunakan metode yang sederhana dan berdasarkan statistik maupun urutan atau sekuen kata kunci, untuk kedepannya dapat dibuat modul pendeteksi code clone dengan metode yang lebih kompleks dan tangguh.
6. REFERENSI Gambar 8 Grafik Hasil Deteksi Code Clone pada Kelas C2
DOM Judge. [Online]. (diakses, Juni 2012)
4.2 Hasil Analisis Hasil Deteksi Code Clone
Fauzi, Andrian. Lulusan TI Banyak yang M engecewakan. 2010. http://inet.detik.com/read/2010/01/16/180830/1279897/398/lul usan-ti-banyak-yang-mengecewakan (diakses 20 Februari 2014).
Hasil analisis yang dilakukan peneliti dari observasi dan dialog dengan peserta didik adalah sebagai berikut: 1.
2.
3.
4.
Semakin banyak pasangan kode program yang memiliki similaritas tinggi juga dapat disebabkan oleh kemiripan soal evaluasi pada soal-soal yang pernah dibahas sebelumnya pada praktikum maupun di kelas. Kode program yang memiliki nilai similaritas tinggi juga dapat disebabkan karena peserta didik yang membuatnya pernah melakukan belajar bersama atau berbagi logika dengan soal yang hampir mirip dengan soal evaluasi. Beberapa kode program yang diujikan untuk dideteksi memang menunjukkan kemiripan yang tinggi ketika memiliki nilai similaritas yang tinggi. Pada evaluasi awal sebelum diberitahukan bahwa kode program peserta didik akan dideteksi dengan pendeteksi code clone lebih banyak pasangan kode program yang terdeteksi (Kuis 1 dan UTS) sedangkan pada evaluasi setelahnya dimana diberitahukan bahwa kode program mereka akan dideteksi dengan pendeteksi code clone semakin sedikit pasangan kode program yang memiliki similaritas tinggi. Hal ini berarti ada pengaruh yang signifikan dengan digunakannya pendeteksi code clone untuk mengurangi kecurangan mahasiswa pada mata kuliah Algoritma dan Pemrograman I. Dengan semakin menurunnya pasangan kode program dengan nilai similaritas tinggi berarti kreatifitas peserta didik dalam membuat kode program semakin beragam dan terasah logika berpikirnya.
http://domjudge.sourceforge.net
Grabowski, Szymon dan Wojciech Bieniecki. Simple Techniques for Plagiarism Detection in Student Programming Projects. 2006. Computer Engineering Department Tech. University of Lodz Poland. Jiang, L, G. M isherghi, Z. Su, S. Glondu. DECKARD: Scalable and Accurate Tree-based Detection of Code Clone. 2007. 29th IEEE International Conference on Software Engineering (ICSE 2007), IEEE, 96-105. Nuntawisuttiwong, Taweechai dan Natasha Dejdumrong, "An Educational Game for Learning Calculus," in Eighth International Conference Computer Graphics, Imaging and Visualization, 2011. Rangkuti, Anna Armeini. Kecurangan Akademik pada M ahasiswa Kependidikan. 2012. http://edukasi.kompasiana.com/2012/05/30/kecuranganakademik-pada-mahasiswa-kependidikan-467121.html (diakses 28 Februari 2014). Selamat, Ali dan Norfaradilla Wahid. Code Clone Detection Using String Based Tree Matching Technique. Semantic Web, Gang Wu (Ed.), ISBN: 978-953-7619-54-1. In Tech, Available from: http://www.intechopen.com/books/semantic-web/codeclone-detection-using-string-based-tree-matching-technique, 2010.
Jurnal Cybermatika | Vol. 2 No. 2 | Desember 2014 | Artikel 1
5
Sukamto, Rosa Ariani, Eddy Prasetyo Nugroho, Rasim, dan Heri Sutarno. M eningkatkan M otivasi Pembelajaran dan Prestasi Belajar mahasiswa pada M atakuliah Algoritma dan Pemrograman I dengan M etode Blended Learning M enggunakan Online Judge. 2013. Penelitian Pembinaan Dosen M uda Universitas Pendidikan Indonesia 2013.
6
Tresnawatia, Dewi, Arief Syaichu R., dan Kuspriyanto. Plagiarism Detection System Design for Programming Assignment in Virtual Classroom Based on M oodle. 2011. The 3rd International Conference on e-Learning ICEL 2011, 23-24 November 2011, Bandung, Indonesia.
Rosa Ariani Sukamto, Eddy Prasetyo Nugroho, Muhamad Nursalman