ABSTRAK
Praktikum pemograman dasar bahasa C merupakan praktikum yang wajib diikuti oleh seluruh mahasiswa. Dalam pengerjaan praktikum, mahasiswa mencari sebuah penyelesaian masalah yang diberikan oleh dosen. Dalam pencarian sebuah penyelesaian masalah, terdapat banyak solusi yang dapat digunakan untuk menyelesaikan masalah. Pengelompokan perlu dilakukan untuk mencari berapa kemungkinan solusi yang dapat digunakan dalam satu penyelesaian masalah. Menggunakan algoritma running karp-rabin greedy string tiling akan dicari tabel kemiripan dari kumpulan hasil praktikum mahasiswa. Dari tabel kemiripan yang terbentuk, maka akan dapat terlihat kelompok-kelompok mahasiswa dalam menyelesaikan sebuah permasalahan. Banyaknya kelompok yang akan terbentuk bergantung kepada banyaknya sampel file yang digunakan dan kompleksitas soal yang diberikan. Semakin banyak sampel file dan semakin komplek soal yang diberikan, menghasilkan kelompok yang lebih beragam. Jumlah data yang diuji sebanyak delapan kasus, tigapuluh sampel file, dan satu sampel kelas.
ABSTRACT
Practical C programming language is a practical basis which shall be
followed by all students. In fullfillment of the practicum, student searching a
solution to the problem solving which given by lecturer. In the search for a
settlement of the problem, there are many solutions that can be used to solve the
problem. Clustering should be done to look at how the potential solutions that can
be used in a probrem solving. Using running karp-rabin greedy string tiling
algorithm to search the table of similarity from the set of student’s practicum result.
From the similarity’s table that is formed, it will show the groups of students in solving a problem. The number of groups that will be formed depends on the amount
of sample files used and the complexity of the given problem. The more sample files
and increasingly complex given problem, generating a more diverse group. The
amount of data that examined is eight cases, thirty sample file, and a sample class.
Keyword : running karp-rabin greedy string tiling algorithm, threshold clustering, problem
DAFTAR ISI
LEMBAR PENGESAHAN ... i
PRAKATA ... ii
PERNYATAAN ORISINALITAS LAPORAN PENELITIAN ... iv
PERNYATAAN PUBLIKASI LAPORAN PENELITIAN ... v
ABSTRAK ... vi
ABSTRACT ... vii
DAFTAR ISI ... viii
DAFTAR GAMBAR ... xi
DAFTAR TABEL ... xvii
DAFTAR NOTASI/ LAMBANG ... xviii
DAFTAR SINGKATAN ... xx
DAFTAR ISTILAH ... xxi
BAB 1. PENDAHULUAN ... 1
1.1 Latar Belakang ... 1
1.2 Rumusan Masalah ... 2
1.3 Tujuan Pembahasan ... 2
1.4 Batasan Masalah ... 3
1.5 Sistematika Pembahasan ... 4
BAB 2. KAJIAN TEORI ... 6
2.1 Algoritma Running Karp-Rabin Greedy String Tiling ... 6
2.2 Hashing ... 9
2.3 K-gram ... 10
2.4 Similaritas ... 10
2.5 Lexical Analyzer ... 11
2.6 Token ... 11
2.7 Finite State Automata ... 14
2.8 Bahasa C ... 15
2.9 Bahasa Java ... 16
2.10 UML ... 16
2.11 MinGW ... 17
3.1 Analisis ... 18
3.2 Gambaran Keseluruhan ... 19
3.2.1 Persyaratan Antarmuka Eksternal ... 19
3.2.2 Antarmuka dengan Pengguna ... 19
3.2.3 Antarmuka Perangkat Keras... 21
3.2.4 Antarmuka Perangkat Lunak ... 21
3.2.5 Fitur – fitur Produk Perangkat Lunak ... 22
3.3 Disain Perangkat Lunak ... 28
3.3.2 Disain Penyimpanan Data ... 69
3.3.3 Disain Antarmuka ... 70
BAB 4. PENGEMBANGAN PERANGKAT LUNAK ... 75
4.1 Implementasi Class/Modul ... 75
4.1.1 Class Koneksi ... 75
4.1.2 Class TextFieldLimiter ... 75
4.1.3 Class FindFile... 76
4.1.4 Class CompileFile ... 78
4.1.5 Class CheckingInputOutput ... 82
4.1.6 Class ReadingFile ... 86
4.1.7 Class CekToken... 87
4.1.8 Class Filtering ... 92
4.1.9 Class FiniteStateAutomata ... 93
4.1.10 Class Convertion ... 97
4.1.11 Class HashTable ... 101
4.1.12 Class MatchTiles ... 102
4.1.13 Class Pattern ... 103
4.1.14 Class KarpRabin ... 103
4.1.15 Class Similaritas ... 109
4.1.16 Class SubCategorization ... 111
4.1.17 Class Categorization ... 111
4.2 Implementasi Penyimpanan Data ... 113
4.2.1 Tabel Hasil ... 113
4.3.1 Tampilan Halaman Utama ... 114
4.3.2 Tampilan Show Seluruh Analisis... 115
4.3.3 Tampilan Analisis Satu Kelas ... 116
4.3.4 Tampilan Analisis Satu Mahasiswa ... 117
4.3.5 Tampilan Analisis Satu Kasus Satu Kelas ... 118
4.3.6 Tampilan Analisis Satu Topik ... 119
4.3.7 Tampilan Analisis Satu Topik Satu Kelas ... 120
4.3.8 Tampilan Halaman Petunjuk ... 121
BAB 5. TESTING DAN EVALUASI SISTEM ... 122
5.1 Rencana Pengujian ... 122
5.2 Pelaksanaan Pengujian ... 122
5.2.1 White Box ... 122
5.2.2 Pengujian Dengan Kasus ... 129
5.2.3 Kesimpulan Pengujian Kasus ... 159
BAB 6. KESIMPULAN DAN SARAN ... 161
6.1 Kesimpulan ... 161
6.2 Saran ... 163
DAFTAR PUSTAKA ... 164
DAFTAR GAMBAR
Gambar 2.1 Algoritma scanpattern ... 8
Gambar 2.2 Algoritma Running Karp-Rabin Greedy String Tiling ... 9
Gambar 2.3 Perhitungan similaritas... 10
Gambar 2.4 Daftar kata kunci dalam bahasa C ... 12
Gambar 2.5 Daftar penanda escape dalam bahasa C ... 13
Gambar 2.6 Contoh penulisan finite state automata... 15
Gambar 3.1 Use case aplikasi pengkategorisasian bahasa C ... 28
Gambar 3.2 Activity diagram masukan folder direktori ... 29
Gambar 3.3 Activity diagram mencari file ... 31
Gambar 3.4 Activity diagram kompile file ... 33
Gambar 3.5 Activity diagram membaca file ... 34
Gambar 3.6 Activity diagram cek input dan output ... 36
Gambar 3.7 Activity diagram proses ... 37
Gambar 3.8 Activity diagram konversi kode program menjadi token ... 38
Gambar 3.9 Activity diagram pengkonversian kode ... 39
Gambar 3.10 Activity diagram pencocokan ... 41
Gambar 3.11 Activity diagram pengukuran kemiripan ... 42
Gambar 3.12 Activity diagram pengelompokan ... 43
Gambar 3.13 Activity diagram menyimpan analisis ... 44
Gambar 3.14 Activity diagram menampilkan analisis ... 45
Gambar 3.15 Activity diagram menampilkan analisis keseluruhan... 46
Gambar 3.16 Activity diagram menampilkan analisis satu kelas ... 47
Gambar 3.17 Activity diagram menampilkan analisis satu mahasiswa ... 48
Gambar 3.18 Activity diagram menampilkan analisis satu kelas satu kasus ... 49
Gambar 3.19 Activity diagram menampilkan analisis satu topik ... 50
Gambar 3.20 Activity diagram menampilkan analisis satu topik satu kelas ... 51
Gambar 3.21 Activity diagram print ... 52
Gambar 3.22 Class diagram ... 53
Gambar 3.23 Class diagram pada package utility... 54
Gambar 3.24 Class diagram pada package readingfile ... 54
Gambar 3.26 Class diagram pada package fsa ... 56
Gambar 3.27 Class diagram pada package categorization ... 56
Gambar 3.28 FSA untuk konstanta integer pada bahasa C ... 57
Gambar 3.29 FSA untuk konstanta real pada bahasa C ... 57
Gambar 3.30 FSA untuk konstanta karakter pada bahasa C ... 58
Gambar 3.31 FSA untuk string literals pada bahasa C ... 58
Gambar 3.32 FSA untuk keyword dan identifier pada bahasa C ... 59
Gambar 3.33 FSA untuk operator pada bahasa C ... 59
Gambar 3.34 FSA untuk simbol pada bahasa C ... 60
Gambar 3.35 FSA untuk komentar pada bahasa C ... 60
Gambar 3.36 FSA Keseluruhan ... 61
Gambar 3.37 String kode program mahasiswa satu ... 62
Gambar 3.38 String kode program mahasiswa dua ... 62
Gambar 3.39 Hasil setelah proses filtering string kode program mahasiswa satu 63 Gambar 3.40 Hasil setelah proses filtering string kode program mahasiswa dua. 63 Gambar 3.41 Dice Similarity Coeficiens ... 68
Gambar 3.42 ERD... 69
Gambar 3.43 User interface halaman utama ... 70
Gambar 3.44 User interface menu show seluruh analisis ... 71
Gambar 3.45 User interface menu analisis satu kelas ... 72
Gambar 3.46 User interface menu analisis satu mahasiswa ... 73
Gambar 3.47 User interface menu analisis problem solving ... 74
Gambar 4.1 Implementasi class Koneksi ... 75
Gambar 4.2 Implementasi class TextFieldLimiter ... 76
Gambar 4.3 Implementasi class FindFile... 76
Gambar 4.4 Implementasi method getAllFileC ... 77
Gambar 4.5 Implementasi class CompileFile ... 78
Gambar 4.6 Implementasi method compilingFile ... 79
Gambar 4.7 Implementasi method compileCFile ... 79
Gambar 4.8 Implementasi method getAllFileHasCompile ... 80
Gambar 4.9 Implementasi method getFileHasFailedCompile ... 81
Gambar 4.11 Implementasi method getFileHasCorrectAnwers ... 83
Gambar 4.12 Implementasi method getFileHasWrongAnwers ... 84
Gambar 4.13 Implementasi method getInputOutput... 84
Gambar 4.14 Implementasi method getFileInputOutput... 85
Gambar 4.15 Implementasi class ReadingFile ... 86
Gambar 4.16 Implementasi method readTheFile ... 86
Gambar 4.17 Implementasi class CekToken ... 88
Gambar 4.18 Implementasi method isAlphabet ... 88
Gambar 4.19 Impelemntasi method isNumber ... 89
Gambar 4.20 Implementasi method isAlphabetNumber ... 89
Gambar 4.21 Implementasi method isOperator ... 90
Gambar 4.22 Implementasi method isSymbol ... 90
Gambar 4.23 Implementasi method isSeparator ... 91
Gambar 4.24 Implementasi method isKeyword ... 91
Gambar 4.25 Implementasi class Filtering ... 92
Gambar 4.26 Implementasi method splitKodeProgram ... 93
Gambar 4.27 Implementasi class FiniteStateAutomata ... 94
Gambar 4.28 Implementasi method generateFSA (1) ... 95
Gambar 4.29 Implementasi method generateFSA (2) ... 96
Gambar 4.30 Implementasi method getListFSA ... 97
Gambar 4.31 Imlementasi class Convertion ... 98
Gambar 4.32 Implementasi method convertForIntoWhile... 99
Gambar 4.33 Implementasi method convertSwitchIntoIf ... 100
Gambar 4.34 Implementasi class HashTable ... 101
Gambar 4.35 Implementasi method add ... 101
Gambar 4.36 Implementasi method get ... 102
Gambar 4.37 Implementasi class MatchTiles ... 102
Gambar 4.38 Implementasi class Pattern ... 103
Gambar 4.39 Implementasi class KarpRabin ... 104
Gambar 4.40 Implementasi method scanPattern ... 105
Gambar 4.41 Implementasi method distToNextTile... 106
Gambar 4.43 Implementasi method generateHashValue ... 107
Gambar 4.44 Implementasi method markString ... 108
Gambar 4.45 Implementasi method isHavingTheSameMatch ... 108
Gambar 4.46 Implementasi method runningRabinKarpGreedyStringTiling ... 109
Gambar 4.47 Implementasi class Similaritas ... 110
Gambar 4.48 Implementasi method calculateSimilarity ... 110
Gambar 4.49 Implementasi method getLengMatches ... 110
Gambar 4.50 Implementasi class SubCategorization ... 111
Gambar 4.51 Implementasi class Categorization ... 112
Gambar 4.52 Implementasi method generateCategorization ... 112
Gambar 4.53 Implementasi method getSimilarityMatriks ... 113
Gambar 4.54 Tampilan Halaman Utama ... 115
Gambar 4.55 Tampilan Show Seluruh Analisis ... 116
Gambar 4.56 Tampilan Analisis Satu Kelas ... 117
Gambar 4.57 Tampilan Analisis Satu Mahasiswa ... 118
Gambar 4.58 Tampilan Analisis Satu Kasus Satu Kelas ... 119
Gambar 4.59 Tampilan Analisis Satu Topik ... 120
Gambar 4.60 Tampilan Analisis Satu Topik Satu Kelas ... 121
Gambar 4.61 Tampilan Halaman Petunjuk ... 121
Gambar 5.1 Kode program kasus tanpa input user untuk kategori satu ... 130
Gambar 5.2 Kode program kasus tanpa input user untuk kategori dua ... 130
Gambar 5.3 Kode program kasus tanpa input user untuk kategori tiga... 130
Gambar 5.4 Kode program kasus dua input dan dua output untuk kategori satu 131 Gambar 5.5 Kode program kasus dua input dan dua output untuk kategori dua 132 Gambar 5.6 Kode program kasus dua input dan dua output untuk kategori tiga 132 Gambar 5.7 Kode program kasus satu input dan banyak output kategori satu ... 134
Gambar 5.8 Kode program kasus satu input dan banyak output kategori dua .... 134
Gambar 5.9 Kode program kasus satu input dan banyak output kategori tiga .... 135
Gambar 5.13 Kode program kasus satu input dan banyak output kategori tujuh 137 Gambar 5.14 Kode program kasus satu input dan banyak output kategori
delapan ... 137
Gambar 5.15 Kode program kasus satu input dan banyak output kategori sembilan ... 138
Gambar 5.16 Kode program kasus percabangan untuk kategori satu... 139
Gambar 5.17 Kode program kasus percabangan untuk kategori dua ... 140
Gambar 5.18 Kode program kasus percabangan untuk kategori tiga ... 140
Gambar 5.19 Kode program kasus percabangan untuk kategori empat ... 141
Gambar 5.20 Kode program kasus percabangan untuk kategori lima ... 141
Gambar 5.21 Kode program kasus percabangan untuk kategori enam ... 142
Gambar 5.22 Kode program kasus percabangan untuk kategori tujuh ... 142
Gambar 5.23 Kode program kasus pengulangan (while) untuk kategori satu .... 144
Gambar 5.24 Kode program kasus pengulangan (while) untuk kategori dua ... 144
Gambar 5.25 Kode program kasus pengulangan (while) untuk kategori tiga ... 145
Gambar 5.26 Kode program kasus pengulangan (while) untuk kategori empat . 145 Gambar 5.27 Kode program kasus pengulangan (while) untuk kategori lima .... 146
Gambar 5.28 Kode program kasus pengulangan (for) untuk kategori satu ... 147
Gambar 5.29 Kode program kasus pengulangan (for) untuk kategori dua ... 148
Gambar 5.30 Kode program kasus pengulangan (for) untuk kategori tiga ... 148
Gambar 5.31 Kode program kasus pengulangan (for) untuk kategori empat ... 149
Gambar 5.32 Kode program kasus array satu dimensi untuk kategori satu ... 150
Gambar 5.33 Kode program kasus array satu dimensi untuk kategori dua ... 151
Gambar 5.34 Kode program kasus array satu dimensi untuk kategori tiga ... 151
Gambar 5.35 Kode program kasus array satu dimensi untuk kategori empat .... 152
Gambar 5.36 Kode program kasus array satu dimensi untuk kategori lima... 152
Gambar 5.37 Kode program kasus array satu dimensi untuk kategori enam ... 153
Gambar 5.38 Kode program kasus array satu dimensi untuk kategori tujuh ... 153
Gambar 5.39 Kode program kasus array dua dimensi untuk kategori satu ... 155
Gambar 5.40 Kode program kasus array dua dimensi untuk kategori dua ... 155
Gambar 5.41 Kode program kasus array dua dimensi untuk kategori tiga ... 156
DAFTAR TABEL
Tabel 3.1 Tabel kumpulan token dan nilai hashing pada mahasiswa satu... 64
Tabel 3.2 Tabel kumpulan token pada mahasiswa dua ... 65
Tabel 3.3 Tabel kumpulan token yang memiliki kesamaan ... 67
Tabel 4.1 Implementasi tabel hasil ... 113
Tabel 5.1 Tabel pengujian class CekToken ... 122
Tabel 5.2 Tabel pengujan class Convertion ... 123
Tabel 5.3 Tabel pengujian class Filtering ... 124
Tabel 5.4 Tabel pengujian class FiniteStateAutomata ... 126
Tabel 5.5 Tabel pengujian class MatchTiles ... 126
Tabel 5.6 Tabel pengujian class Pattern ... 127
Tabel 5.7 Tabel pengujian class Similaritas ... 127
Tabel 5.8 Tabel pengujian class Categorization ... 128
Tabel 5.9 Tabel pengujian class SubCategorization ... 128
Tabel 5.10 Tabel hasil pengujian kasus tanpa input user ... 129
Tabel 5.11 Tabel hasil pengujian kasus dengan dua input dan dua output ... 131
Tabel 5.12 Tabel hasil pengujian kasus dengan satu input dan banyak output ... 133
Tabel 5.13 Tabel hasil pengujian kasus percabangan ... 138
Tabel 5.14 Tabel hasil pengujian kasus pengulangan dengan while ... 143
Tabel 5.15 Tabel hasil pengujian kasus pengulangan dengan for ... 147
Tabel 5.16 Tabel hasil pengujian kasus array satu dimensi ... 149
DAFTAR NOTASI/ LAMBANG
Notasi/Lambang Nama Arti
Actor Pengguna yang melakukan interaksi
langsung dengan sistem, bisa manusia, aplikasi atau sistem, ataupun objek lain.
Use Case Digambarkan dengan lingkaran elips
dengan nama use case berada ditengah lingkaran elips.
Association Penghubung actor dengan use case.
Include Terjadi jika terdapat prilaku yang
serupa di lebih dari satu use case.
Extend Menambahkan prilaku use case pada
use case dasar.
Initial State Titik awal untuk memulai aktifitas.
Final State
Titik akhir untuk mengakhiri aktifitas.
Activity Status Menandakan status dari aktifity setelah
melakukan aktifitas.
Activity Menandakan aktivitas dalam aplikasi.
Decision Pilihan untuk mengambil keputusan.
Fork/Join Menunjukkan kegiatan
menggabungkan dua panel aktifitas menjadi satu atau sebaliknya memisahkan satu panel menjadi dua panel aktifitas.
Notasi/Lambang Nama Arti
Note
Catatan khusus untuk sebuah aktifitas.
Class Blok-blok pembangun program. Bagian
atas class menunjukkan nama dari class, bagian tengah mendefinisikan atribut dari class, dan bagian bawah mendefinisikan method dari sebuah class.
Association Menunjukkan hubungan antar kelas
yang tidak saling bergantung.
Agregation Ketika sebuah class A mengagregasi
class B, maka objek A tidak dapat ada
tanpa objek B, namun objek B dapat ada tanpa kehadiran objek A.
Composition Ketika sebuah class A mengkompisisi
class B, maka objek A tidak dapat ada
tanpa objek B, dan objek B tidak dapat ada tanpa kehadiran objek A.
Dependency Menunjukkan ketergantungan
antara satu class dengan class yang lain.
Generalization Menunjukkan inheritance dari
satu class ke class lain.
DAFTAR SINGKATAN
ERD = Entity Relational Database FSA = Finite State Automata
GNU = Gnu’s Not Unix
DAFTAR ISTILAH
Activity diagram = Menjelaskan urutan kegiatan yang mendukung
kegiatan kondisional maupun paralel.
Algoritma = Suatu langkah atau aturan yang tepat dalam mendefinisikan urutan operasi sehingga setiap aturan menjadi lebih efektif dan jelas.
Class diagram = Menjelaskan jenis objek yang terdapat dalam
sistem dan berbagai macam hubungan statis yang terbentuk antar objek tersebut.
Clustering = Pengelompokan data ke dalam suatu kelompok
berdasarkan parameter tertentu, dalam satu kelompok anggota kelompok tersebut memiliki tingkat kemiripan yang tinggi.
Compiler = Sebuah program komputer yang berguna untuk
menerjemahkan program komputer yang ditulis menggunakan bahasa pemograman tertentu menjadi program yang ditulis dalam bahasa pemograman lain.
File = Urutan data yang berisi mengenai informasi
tertentu, yang memiliki atribut seperti nama file, ukuran file, ekstensi file dan lain sebagainnya.
Finite State Automata = Merupakan model matematika yang dapat
menerima masukan dan mengeluarkan keluaran. Model ini memiliki state dalam jumlah tertentu dan dapat berpindah dari satu state ke state yang lain sesuai dengan masukan dan fungsi transisi. Model ini biasa digunakan dalam bahasa mesin.
Hashing = Suatu cara untuk mentransformasi sebuah string
Lexical analyzer = Proses mengubah kata – kata menjadi token - token.
Pattern = Merupakan pola dari suatu teks atau kalimat
dengan panjang tertentu.
Threshold = Merupakan nilai yang menjadi titik acuan untuk
parameter.
Token = sebuah unit terkecil atau elemen mendasar bahasa komputer dimana unit tersebut tidak dapat dibagi lagi.
User interface = Gambaran mengenai tampilan aplikasi atau sistem
yang akan dibuat.
White Box = pengujian yang didasarkan pada pengecekan
BAB 1.
PENDAHULUAN
1.1 Latar Belakang
Perkembangan kegiatan belajar mengajar semakin hari akan semakin berkembang. Perkembangan tersebut dimulai dengan adanya fasilitas-fasilitas yang menunjang kegiatan belajar mengajar. Selain dari pada fasilitas yang cukup memadai, perkembangan tersebut terlihat dari kemampuan siswa yang semakin berkembang dalam menyelesaikan permasalahan.
Banyak bidang pendidikan yang dapat ditekuni oleh para mahasiswa, salah satunya adalah bidang teknologi informasi. Bidang teknologi informasi adalah bidang pendidikan yang bergerak dalam pengembangan perangkat lunak dan perangkat keras. Dimana setiap mahasiswa yang menekuni bidang tersebut diharuskan untuk mengembangkan potensi yang mereka miliki untuk membuat sebuah perangkat lunak maupun membangun sebuah perangkat keras.
Pengembangan perangkat lunak dapat dilakukan dengan berbagai cara, salah satunya dengan membuat sebuah program. Program yang dibuat dapat menggunakan berbagai macam bahasa pemograman yang dikuasai oleh mahasiswa, salah satu bahasa pemograman yang mendasar adalah bahasa C.
Dalam pembuatan program terkadang terdapat berbagai macam masalah yang harus dicari solusinya. Dimana setiap solusi yang dibuat oleh masing-masing pembuat program akan berbeda satu dengan yang lain, hal tersebut bergantung dari bagaimana cara pembuat program tersebut untuk menyelesaikan suatu masalah. Sebagai contoh, terdapat sebuah kasus mencari deret bilangan fibbonaci, kita dapat menggunakan cara iteratif atau dengan menggunakan cara rekursif bergantung dari pola pikir mana yang mahasiswa pilih untuk mencapai solusi tersebut.
2
oleh mahasiswa. Dari pengelompokan hasil kerja mahasiswa, dosen pengajar akan dapat melihat proses kerja mahasiswa dalam mencari solusi kasus yang diberikan. Penulis berharap agar aplikasi yang dibuat dapat membantu dosen pengajar untuk melihat proses kerja dari mahasiswa dalam mencari sebuah solusi permasalahan yang diberikan, dan dapat menemukan berapa banyak solusi yang dapat digunakan untuk menyelesaikan sebuah kasus yang diberikan oleh dosen pengajar.
1.2 Rumusan Masalah
Berdasarkan latar belakang yang telah dijabarkan di atas, maka dapat diambil rumusan masalah :
1. Bagaimana membangun aplikasi yang memudahkan dosen pengajar dalam mengelompokan hasil kerja dari mahasiswa?
2. Bagaimana membangun aplikasi yang memudahkan pengajar menganalisis hasil praktikum yang sudah dikerjakan oleh mahasiswa? 3. Bagaimana mengelompokan hasil kerja mahasiswa satu dengan
mahasiswa yang lain, dengan melihat similaritas mahasiswa tersebut dengan mahasiswa yang lain?
1.3 Tujuan Pembahasan
Berdasarkan pokok-pokok masalah yang akan dijawab dan dipecahkan, tujuan yang hendak dicapai adalah :
1. Memudahkan dosen pengajar dalam mengelompokan hasil kerja dari mahasiswa.
2. Penerapan algoritma Running Karp-Rabin Greedy String Tiling dalam aplikasi sebagai basis pengukuran similaritas.
3. Memudahkan dosen pengajar untuk melihat proses kerja mahasiswa dalam mencari solusi kasus yang diberikan.
3
5. Memudahkan dosen pengajar untuk melihat hasil kerja mahasiswa dengan kelas yang berbeda untuk menjadikan pembandingan kelas yang memiliki kreatifitas dalam mencari solusi kasus yang diberikan.
6. Membangun aplikasi yang memudahkan pengajar menganalisis hasil praktikum yang sudah dikerjakan oleh mahasiswa.
7. Pengelompokan hasil kerja mahasiswa satu dengan mahasiswa yang lain, dengan melihat similaritas mahasiswa tersebut dengan mahasiswa yang lain.
1.4 Batasan Masalah
Berdasarkan rumusan masalah yang tersebut, maka terdapat batasan masalah dari penelitian :
1. Setiap pengelompokan kode program dilakukan dengan jumlah sesuai dengan jumlah rata-rata mahasiswa pada setiap kelas, yaitu antara 40 file sampai dengan 50 file kode program.
2. Pengelompokan kode program dilakukan pada satu penyelesaian masalah.
3. Pengukuran similaritas dilakukan terhadap syntax kode program yang umum digunakan oleh mahasiswa.
4. Melakukan konversi beberapa potongan kode program untuk syntax for yang dikonversi menjadi while dan switch case yang dikonversi menjadi if.
5. Berjalan baik pada perangkat keras yang memiliki instalasi compiler bahasa C.
6. Berjalan baik jika file-file hasil praktikum mahasiswa diletakkan pada satu folder direktori.
7. Berjalan dengan baik pada file program C yang memiliki nama sesuai dengan format, yaitu <nama kasus>_nrp.c sebagai contoh satu_1072021.c.
8. Berjalan baik jika path folder direktori tidak terlalu panjang.
4
10.Pengukuran similaritas dilakukan terhadap kode program yang memiliki input dan output yang sesuai dengan input dan output yang telah
disediakan oleh dosen (jika dosen pengajar menyediakan input dan output).
11.Berjalan baik pada program yang menangani single problem solving, seperti contoh : swaping angka, converting angka, fibbonacci, dan lain sebagainya.
12.Pengukuran akurasi yang tepat dilakukan secara manual. 13.Menangani bilangan interger standar selain eksponensial.
1.5 Sistematika Pembahasan
Dalam penulisan laporan, sistematika penulisan laporan yang akan digunakan adalah :
BAB 1 : PENDAHULUAN
Pada bab ini akan dijelaskan mengenai Latar Belakang, Rumusan Masalah, Tujuan, Batasan Masalah, dan Sistematika Penulisan.
BAB 2 : KAJIAN TEORI
Pada bab ini akan dijelaskan mengenai seluruh teori yang dipakai dan yang relevan terhadap penelitian yang dilakukan. Dimana teori tersebut berhubungan dengan analisis, perancangan, pengembangan, implementasi, sampai dengan pengujian hasil penelitian.
BAB 3 : ANALISIS DAN DISAIN
Pada bab ini akan dijelaskan mengenai analisis sistem, gambaran keseluruhan, fitur dan disain perangkat lunak yang akan dibuat dalam penelitian ini.
BAB 4 : PENGEMBANGAN PERANGKAT LUNAK
Pada bab ini akan dijelaskan mengenai implementasi seluruh hasil rancangan yang sudah dijelaskan pada bab 3, yang terdiri dari class/modul yang didunakan dalam penelitian, simpanan data sampai dengan antarmuka.
BAB 5 : TESTING DAN EVALUASI SISTEM
5
BAB 6 : KESIMPULAN DAN SARAN
BAB 6.
KESIMPULAN DAN SARAN
6.1 Kesimpulan
Berikut ini adalah kesimpulan yang didapatkan dari pengerjaan tugas akhir: 1. Perancangan aplikasi kategorisasi bahasa C dapat dilakukan dengan baik melalui penyusunan laporan tugas akhir ini, terbutkri dengan adanya bab 3 sebagai analisis yang di kerjakan oleh penulis sebelum membuat aplikasi sehingga penulis dimudahkan dalam pembuatan aplikasi.
2. Aplikasi kategorisasi bahasa C ini dapat memudahkan dosen pengajar dalam mengelompokan hasil kerja dari mahasiswa karena aplikasi akan menampilkan nrp-nrp mahasiswa mana yang tergolong dalam satu kelompok, sehingga dosen pengajar tidak perlu melakukan secara manual.
3. Aplikasi kategorisasi bahasa C ini dapat memudahkan dosen pengajar dalam menemukan berapa banyak kemungkinan yang dapat digunakan untuk menyelesaikan kasus yang diberikan karena aplikasi akan menampilkan jumlah kelompok yang terbentuk saat proses analisis dilakukan.
4. Aplikasi kategorisasi bahasa C ini dapat memudahkan dosen pengajar untuk melihat hasil kerja mahasiswa dengan kelas yang berbeda untuk menjadikan pembandingan kelas yang memiliki kreatifitas dalam mencari solusi kasus yang diberikan karena aplikasi dapat menampilkan hasil analisis untuk setiap kasus yang diberikan pada kelas yang berbeda.
162
6. Penerapkan algoritma Running Karp-Rabin Greedy String Tiling dapat dilakukan dalam aplikasi sebagai basis pengukuran similaritas.
7. Kelebihan yang dimiliki oleh algoritma Running Karp-Rabin Greedy String Tiling dibandingkan dengan algoritma string matching yang lain
adalah tidak bergantung pada urutan substring yang dicari dalam string teks yang dibandingkan. Algoritma Running Karp-Rabin Greedy String Tiling juga selalu mengutamakan substring identik yang lebih panjang,
sehingga dapat lebih tepat menemukan kesamaan dalam sebuah string teks karena substring yang panjang lebih memungkinkan untuk mendeteksi bahwa kedua string yang dibandingkan memiliki kemiripan yang tinggi. Hal tersebut terbukti pada pembahasan subbab 3.3.1.5. 8. Kelemahan algoritma Running Karp-Rabin Greedy String Tiling yang
ditemukan adalah penentuan panjang minimal-search-length yang merupakan sebuah parameter algoritma Running Karp-Rabin Greedy String Tiling. Semakin kecil nilai minimum-search-length yang
ditentukan, maka kemungkinan sensitivitas deteksi kemiripan akan semangkin tinggi, namun pada kenyataannya hal tersebut belum tentu merupakan sebuah pola yang memiliki arti yang sama. Hal tersebut terbukti pada pembahasan subbab 3.3.1.5.
9. Aplikasi kategorisasi bahasa C dapat memudahkan pengajar menganalisis hasil praktikum yang sudah dikerjakan oleh mahasiswa, karena aplikasi menyimpan data yang disimpan oleh pengguna setelah melakukan analisis. Analisis yang dilakukan pada aplikasi adalah melihat banyaknya kelompok yang terbentuk pada kelas tertentu, melihat banyaknya kelompok yang terbentuk pada mahasiswa tertentu, melihat banyaknya kelompok yang terbentuk pada kelas tertentu dan kasus tertentu, melihat banyaknya kelompok yang terbentuk pada topik tertentu, melihat banyaknya kelompok yang terbentuk pada topik tertentu dan kelas tertentu.
163
11.Banyaknya kelompok yang akan terbentuk bergantung kepada banyaknya sampel file yang digunakan, kompleksitas soal yang diberikan dan kreatifitas mahasiswa. Semakin banyak sampel file, semakin komplek soal yang diberikan dan semakin tinggi tingkat kreatifitas mahasiswa dalam menjawab kasus yang diberikan, maka akan menghasilkan kelompok yang lebih beragam. Hal tersebut dibuktikan dengan pengujian yang dilakukan pada delapan kasus, tigapuluh sampel file, dan satu sampel kelas. Hasil pengujian dapat dilihat pada subbab 5.2.2.
6.2 Saran
Berikut ini saran yang didapat dengan pengerjaan tugas akhir :
1. Perlu adanya penanganan syntax-syntax yang lebih lengkap dari bahasa C seperti eksponensial, pointer dan lain sebagainya.
2. Perlu dilakukannya konversi potongan kode program yang lebih luas agar perbandingan similaritas lebih maksimal, seperti konversi potongan kode program untuk kasus rekursif.
DAFTAR PUSTAKA
[1] M. J. Wise, "Running Karp-Rabin Matching and Greedy String Tiling," Department of Computer Science, University of Sidney, Australia, 1993.
[2] P. D. Maharani, "Penilaian Otomatis Praktikum Pemograman dengan Pendeteksi Plagiarisme," Jurnal Sarjana Institut Teknologi Bandung Bidang Teknik Elektro dan Informatika, vol. I, no. 2, p. 60, 2012.
[3] A. G. Konheim, Hashing in Computer Science Fifty Years of Slicing and Dicing, Canada: John Wiley & Sons, Inc, Hoboken, New Jersey, 2010.
[4] S. Schleimer, D. S. Wilkerson and A. Aiken, "Winnowing: Local Algorithms for Document Fingerprinting," SIGMOD, San Diego, 2003.
[5] E. Nugroho, "Perancangan Sistem Deteksi Plagiarisme Dokumen Teks Dengan Menggunakan Algoritma Rabin-Karp," Universitas Brawijaya, Malang, 2011.
[6] A. M. Surahman, "Perancangan Sistem Penentuan Similarity Kode Program Pada Bahasa C dan Pascal Dengan Menggunakan Algoritma Rabin-Karp," Universitas Tanjungpura, 2013.
[7] A. W. Appel and J. Palsberg, Modern Compiler Implementation in Java, 2nd ed., United Kingdom: Cambridge University Press, 2002.
[8] B. W. Kernighan and D. M. Ritchie, The C Programming Language, Prentice-Hall, 1988.
[9] M. V. Lawson, Finite Automata, Edinburgh: Heriot-Watt University, 2009.