Implementasi Pendeteksi Code Clone pada Online Judge Sebagai Sarana Mengurangi Kecurangan Akademik Mahasiswa Program Studi Ilmu Komputer
Implementasi Pendeteksi Code Clone pada Online Judge
Sebagai Sarana Mengurangi Kecurangan Akademik
Mahasiswa Program Studi Ilmu Komputer
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 program studi Ilmu Komputer Universitas Pendidikan
(kecuali modifikasi pada spasi dan komentar), b. menyalin secara sintaks dengan memodifikasi variabel, tipe, atau fungsi, c. menyalin dengan modifikasi seperti mengubah letak tempat, menambah atau menghapus bagian-bagian tertentu,
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. menyalin dengan sama persis tanpa modifikasi
2.1 Code Clone Code clone atau menyalin sebagian kode program untuk
2. TINJAUAN PUSTAKA
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.
judge . Online judge saat ini sudah digunakan di program studi
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
Indonesia. 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).
Kata Kunci code clone , online judge, LCS, kode program.
Rosa Ariani Sukamto
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 .
judge pada penelitian ini adalah aplikasi open source yang sudah dimodifikas i.
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
mnursalman@upi.edu ABSTRAK Code clone adalah menyalin sebagian kode program untuk
Universitas Pendidikan Indonesia
eddypn@upi.edu
Muhamad NursalmanUniversitas Pendidikan Indonesia
rosa.ariani@upi.edu
Eddy Prasetyo Nugroho
Universitas Pendidikan Indonesia
1. PENDAHULUAN
d.
2. menyalin sebagian kode program yang melibatkan Semantik kode program (struktur) penghapusan, modifikasi, dan penambahan dari kode
a. tree-based program aslinya (Selamat, 2010).
M etode ini mendeteksi sematik dilihat dari urutan struktur yang muncul pada kode M odifikasi yang biasanya dilakukan oleh mahasiswa dalam program yang dideteksi. Penggunaan pohon membuat program diklasifikasikan sebagai berikut: disini digunakan untuk mendeteksi jenis struktur kata kunci, bukan menyimpan kata a. leksikal, mengubah kode program seperti sebagai kunci kode program, karena jika yang berikut: disimpan adalah kata kunci kode program, i. mengubah komentar (menambahkan, bukan jenisnya maka hanya akan menggunakan kembali, atau mengubah) mendeteksi secara sintaks, bukan semantik.
b.
ii. mengubah format semantic-based M etode ini mendeteksi secara semantik iii. mengubah nama variabel dengan berbagai metode yang terfokus pada b. Struktural, mengubah struktur program misalnya mendeteksi struktur secara satu per satu. sebagai berikut:
Adapun salah satu metode untuk membuat sebuah pendeteksi i. mengubah urutan algoritma, code clone berbasis token based adalah dengan memeriksa ii. mengubah prosedur menjadi fungsi atau setiap kata kunci pada kode program dengan metode statistik sebaliknya, dan LCS (Longest Common Subsequence). LCS adalah iii. mengubah prosedur menjadi tanpa prosedur menghitung banyaknya kata kunci pada kode program dengan dengan bagian program dari isi prosedur sekuen atau urutan yang sama dan yang terpanjang, misalkan sebelumnya (Tresnawatia, 2011). jika pada kata:
A = m a t t e r
2.2 B = b r o t h e r s Metode Pendeteksi Code Clone
Telah banyak penelitian yang dilakukan dalam bidang LLCS(A, B) = 3. pendeteksi code clone. Diantaranya ada beberapa metode untuk
LCS(A, B) = t e r 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. Menghitung jumlah kata kunci yang sama dari dua buah kode program yang dibandingkan untuk kemudian dihitung similaritasnya dengan rumus:
C count k count k
1
2
k Dict 1 \ Dict 2 k Dict 2 \ Dict
1 Gambar 1 Variasi Pendeteksi Code Clone dalam Berbagai Penelitian
max count k ; count k
1
2 k Dict 1 Dict
2 Variasi metode dari berbagai penelitian diantaranya (Jiang,
2007):
R count k count k max ;
1
2 1. k Dict 1 Dict
2 Sintaks penulisan kode program a. string-based
M etode ini biasanya berbasis string
S = R / C matching atau pencocokan string dari kode
program. M etode ini digunakan untuk dimana count adalah fungsi untuk menghitung mendeteksi code clone yang sama persis. banyaknya kata kunci yang ada pada kode b. program. Sehingga rumus di atas membandingkan
token-based
banyaknya macam kata kunci dan jumlahnya di M etode ini mengambil setiap token per dalam kode program yang dibandingkan. token (kata kunci) pada kode program.
2. M etode ini digunakan untuk mendeteksi Menghitung jumlah pasangan kata kunci yang
code clone yang telah dimodifikasi pada berdampingan dari dua buah kode program yang
dibandingkan untuk kemudian dihitung variabel, tipe, atau fungsi. similaritasnya dengan rumus: c.
tree-based
M etode ini mendeteksi sintaks secara tata letak dengan menggunakan struktur pohon. lp
1 lp
2 S
Penggunaan pohon disini lebih untuk
min lp 1 , lp
2
menyimpan dan mendeteksi tata letak bagian kode program secara sintaks. dimana lp1 adalah pasangan kata kunci yang ada pada kode program pertama dan lp2 adalah pasangan kata kunci yang ada pada kode program kedua.
3. Menghitung jumlah LCS kata kunci pada dua buah kode program yang dibandingkan kemudian dihitung similaritasnya dengan rumus:
1 Word Word
2 , 1 min 2 ,
Word Word LCS S
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.
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
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:
2.3 Online Judge
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:
Berikut adalah gambar penggunaan DOM judge:
Gambar 2 Penggunaan DOMjudge sebagai Online Judge
online judge . DOM judge adalah sebuah sistem penjurian otomatis untuk mengadakan kompetisi pemrograman.
digunakan untuk melakukan penilaian terhadap kode program yang diunggah. DOM Judge adalah salah satu perangkat lunak
(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 3 Halaman permainan peserta Gambar 4 Halaman profil peserta beserta medali yang didapat pemain unggah kode program
DOM judge kompilator dikompilasi dan dieksekusi hasil eksekusi juri/administrator membuat kompetisi, membuat soal, membuat kunci hasil eksekusi program dibandingkan dengan kunci hasil eksekusi program, untuk mendapatkan skor chat gambar menarik
Online Judge adalah sebuah perangkat lunak berbasis web yang
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
Gambar 5 Papan skor dan perolehan medali
4.1 Hasil Deteksi Code Clone pada Hasil Evaluasi
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.
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:
3.2 Indikator Capaian Ukuran
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
3. METODE PENELITIAN
3.1 Pendekatan Penelitian
Gambar 6 Cara Kerja Modul Pendeteksi Code Clone pada Online Judge
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
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
Deteksi Code Clone pada semua kode program yang terakhir diunggah oleh setiap peserta didik kompetisi selesai hasil deteksi code clone
Online Judge Kompetisi Online Judge
peserta didik unggah kode program juri/administrator
berikut (diambil nilai similaritas antara 0.9 sampai 1 karena dianggap memiliki similaritas tinggi):
code clone pada beberapa evaluasi di atas adalah sebagai
6. UAS (Ujian Akhir Semester) (2 kelas) 26 dan 28 Mei 2014
Tabel 1 Jadwal Evaluasi No. Nama Evaluasi Pe laksanaan
27 Mei 2014
5. T ugas Masa Depan (2 kelas)
4. Kuis 3 (2 kelas) 19 dan 21 Mei 2014
3. Kuis 2 (2 kelas) 21 dan 23 April 2014
code clone ini akan dipasangkan pada online judge. Berikut adalah cara kerja modul code clone pada online judge.
1. Kuis 1 (2 kelas) 17 dan 19 Februari 2014
2. UT S (Ujian T engah Semester) (2 kelas) 24 dan 26 Maret 2014
Gambar 7 Grafik Hasil Deteksi Code Clone pada Kelas C1 Gambar 8 Grafik Hasil Deteksi Code Clone pada Kelas C2
6. REFERENSI
Gang Wu (Ed.), ISBN: 978-953-7619-54-1. In Tech, Available from: http://www.intechopen.com/books/semantic-web/code- clone-detection-using-string-based-tree-matching-technique, 2010.
Using String Based Tree Matching Technique . Semantic Web,
Rangkuti, Anna Armeini. Kecurangan Akademik pada M ahasiswa Kependidikan. 2012. http://edukasi.kompasiana.com/2012/05/30/kecurangan- akademik-pada-mahasiswa-kependidikan-467121.html (diakses 28 Februari 2014). Selamat, Ali dan Norfaradilla Wahid. Code Clone Detection
International Conference Computer Graphics, Imaging and Visualization , 2011.
Educational Game for Learning Calculus," in Eighth
IEEE International Conference on Software Engineering (ICSE 2007), IEEE, 96-105. Nuntawisuttiwong, Taweechai dan Natasha Dejdumrong, "An
th
2007. 29
University of Lodz Poland. Jiang, L, G. M isherghi, Z. Su, S. Glondu. DECKARD: Scalable and Accurate Tree-based Detection of Code Clone .
Techniques for Plagiarism Detection in Student Programming Projects . 2006. Computer Engineering Department Tech.
Grabowski, Szymon dan Wojciech Bieniecki. Simple
2010. http://inet.detik.com/read/2010/01/16/180830/1279897/398/lul usan-ti-banyak-yang-mengecewakan (diakses 20 Februari 2014).
DOM Judge. [Online]. http://domjudge.sourceforge.net (diakses, Juni 2012) Fauzi, Andrian. Lulusan TI Banyak yang M engecewakan.
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.
Hasil analisis yang dilakukan peneliti dari observasi dan dialog dengan peserta didik adalah sebagai berikut:
5.2 Saran
code clone .
2. Modul 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
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.
Kesimpulan dari penelitian ini adalah sebagai berikut: 1.
5.1 Kesimpulan
5. KESIMPULAN DAN SARAN
4.2 Hasil Analisis Hasil Deteksi Code Clone
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.
code clone lebih banyak pasangan kode program yang
4. Pada evaluasi awal sebelum diberitahukan bahwa kode program peserta didik akan dideteksi dengan pendeteksi
3. Beberapa kode program yang diujikan untuk dideteksi memang menunjukkan kemiripan yang tinggi ketika memiliki nilai similaritas yang tinggi.
2. 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.
1. 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.
Sukamto, Rosa Ariani, Eddy Prasetyo Nugroho, Rasim, dan Tresnawatia, Dewi, Arief Syaichu R., dan Kuspriyanto.
Heri Sutarno. M eningkatkan M otivasi Pembelajaran dan Plagiarism Detection System Design for Programming Prestasi Belajar mahasiswa pada M atakuliah Algoritma dan Assignment in Virtual Classroom Based on M oodle. 2011. The Pemrograman I dengan M etode Blended Learning 3rd International Conference on e-Learning ICEL 2011, 23-24 M enggunakan Online Judge. 2013. Penelitian Pembinaan November 2011, Bandung, Indonesia. Dosen M uda Universitas Pendidikan Indonesia 2013.