masing pengguna. Karena datasets ini sangat besar large text documents dan memerlukan waktu yang cukup lama untuk proses grabbing, penulis membuatkan
codes mini yang menarik data ini secara terpisah-pisah sehingga bisa dijalankan ratusan codes
secara paralel dalam satu waktu. Seluruh data ini tersimpan dalam satu larik dengan format JSON dengan spesifikasi identitas pid pengguna.
Berikut pseudocode untuk grabbing data pengguna dengan rentang identitas pengguna 60000 sampai 69999:
mkdir user_60000 for i in {60000..69999}; do
wget -c http:uhunt.felix-halim.netapisubs-useri mv i user_60000
done
Berikut pseudocode untuk grabbing arsip soal dalam bentuk dokumen PDF:
volume_range=seq 1 127; mkdir -p pdfs
for volume in volume_range; do
for serial in seq 0 99; do
problem_id=100 volume + serial if [[ -f .pdfsvolumeproblem_id.pdf ]]; then
wget http:uva.onlinejudge.orgexternalvolumeproblem_id.pdf
fi done
mkdir -p .pdfsvolume mv -n volume.pdf .pdfsvolume 2devnull
done
3.2. Analisis Sistem
Sebelum dilakukannya analisis terhadap statistik setiap soal yang akan direkomendasikan, sistem ini melakukan mengumpulan data. Data-data yang
dikumpulkan berupa arsip soal yang akan dipakai nantinya secara offline baik dalam bentuk berkas PDF maupun versi halaman web. Data berikutnya adalah statistik setiap
pengguna terdaftar. Sistem akan menarik keseluruhan data pengguna, statistik soal, kategori soal untuk kemudian diarsipkan secara lokal di komputer pengguna. Gambaran
umum mengenai keseluruhan aplikasi ini terdefinisi pada Gambar 3.1.
Universitas Sumatera Utara
Gambar 3.1 Arsitektur Umum Sistem
Sesuai Gambar 3.1, maka dapat dijelaskan sebagai berikut: 1.
Tahapan grabbing data Keseluruhan data yang digunakan ditarik retrieved menggunakan API
uHunt dari platform UVA online judge. Keseluruhan data ini bersifat real- time. Artinya, begitu ada proses submission baru dari pengguna, data akan
langsung tersedia ke sistem. Data yang ditarik ini adalah data lengkap keseluruhan problemsets mulai dari rincian semua submissions terhadap
satu soal, status verdict submission solusi, waktu eksekusi, dan informasi lainnya. Data yang ditarik berikutnya adalah data untuk pengguna. Data
pengguna ini meliputi keseluruhan submissions yang pernah dilakukan pengguna tertentu secara detail seperti waktu submission, tipe bahasa
pemrograman yang digunakan maupun rincian profil pengguna. Data berikutnya adalah rincian submission seluruh pengguna terdaftar.
Bagian ini mengembalikan rincian data submission pengguna terhadap soal yang pernah dicoba. Semua data yang ditarik ini disimpan secara lokal ke
harddisk pengguna yang kemudian secara berkesinambungan akan dimutakhirkan jika ada perubahan terhadap setiap data. Pada bagian
problem details, jika pengguna baru pertama kali menggunakan aplikasi ini,
Universitas Sumatera Utara
seluruh problemsets akan di-download dan diarsipkan terlebih dahulu dan pada penggunaan aplikasi berikutnya seluruh problemsets akan tersedia.
2. Tahapan extracting data
Tahap ini akan menghasilkan dua bagian tabulasi data yaitu statistik untuk problemsets dan statistik untuk pengguna.
a. Problemset Statistics
Setelah pengumpulan data dilakukan, data ini diolah untuk kemudian menghasilkan informasi secara detail terhadap problemsets untuk
ditampilkan ke pengguna. Adapun informasi yang ditampilkan berupa daftar keseluruhan soal yang tersedia beserta rincian terhadap setiap soal
seperti informasi mengenai kategori soal, nilai dacu, level soal, status waktu terbaik terhadap satu soal. Pada bagian ini terdapat pula fitur untuk
mengurutkan soal berdasarkan setiap preferensi yang ditampilkan ke layar danatau hanya memilih berdasarkan item-item yang ditentukan
pengguna itu sendiri.
b. User Statistics
Pada bagian ini, data setiap submissions pengguna diolah untuk kemudian didapatkan informasi yang bisa ditampilkan ke layar.
Misalnya, data profil pengguna, jumlah soal yang sudah dicoba danatau diselesaikan maupun statistik bahasa pemrograman.
3. Tahapan processing problemsets
Tahap ini merupakan tahapan lebih detail dari tahap ekstraksi data pada bagian problemsets. Ketersediaan keseluruhan data problemsets ini
memungkinkan aplikasi menampilkan berbagai statistik dan analisis problemsets yang menarik yang pada platform konvensional hal ini sangat
sulit untuk didapatkan atau bahkan tidak ditampilkan. Salah satu item yang menarik dengan adanya aplikasi ini adalah pengguna dapat mencari waktu
eksekusi solusi tercepat yang pernah ada pada setiap soal. Waktu eksekusi solusi tercepat berkorelasi dengan peringkat pengguna di soal tersebut. Jadi,
Universitas Sumatera Utara
fitur ini memotivasi pengguna bukan hanya untuk mendapatkan status accepted verdict saja, tetapi menantang pengguna untuk merancang
program yang lebih akurat dan efisien dan menempatkan namanya di posisi atas scoreboard.
4. Tahapan next-solved problems
Pada tahap ini, ketersediaan lonjakan submissions yang sangat aktif sangat mempengaruhi bobot soal-soal yang direkomendasikan. Bobot next-solved
problems ini dihitung berdasarkan banyaknya pengguna unik yang menyelesaikan soal dan mendapatkan status accepted verdict. Penghitungan
ini menjadikan aplikasi ini lebih informatif lagi dengan menambahkan beberapa fitur di antaranya,
a. 100 problemsets based on dacu, menampilkan informasi ke pengguna
seratus soal dengan nilai dacu terbesar. Artinya semakin besar nilai dacu satu soal, semakin mudah pula level soal tersebut.
b. 100 problemsets based on level, menampilkan informasi ke pengguna
seratus soal dengan nilai level terendah. Fitur ini ditambahkan karena bias yang terjadi terhadap penghitungan dacu karena bisa saja satu
pengguna mencoba soal tersebut bukan untuk menyelesaikannya tetapi untuk mencoba program orang lain yang didapat bebas di internet.
c. 100 problemsets filtered by category, menampilkan dan menyaring soal
berdasarkan kategori tekni penyelesaian soal. Sehingga pengguna bisa fokus mendalami satu teknik atau algoritma tertentu dan memilih soal
yang berhubungan dengan teknik tersebut.
3.2.1. Classifying Problems Based on Book Chapter
Merekomendasikan soal-soal kompetisi pemrograman ini bisa jadi membutuhkan usaha dan waktu yang lebih banyak apabila dikerjakan secara manual Lin, et al. 2013.
Memberikan bobot terhadap satu soal bisa jadi pekerjaan yang subyektif karena
Universitas Sumatera Utara
preferensi setiap orang berbeda-beda terhadap satu soal yang tersedia di UVa online judge.
Dalam penelitian ini, penulis menggunakan pengelompokan soal yang sudah tersedia sebelumnya berdasarkan,
1. Problem volume, soal-soal dikelompokkan dalam setiap volume yang berisi
100 soal Valladolid, 2004 2.
Book chapter dalam buku Competitive Programming edisi pertama sampai ketiga Halim, et al. 2014.
3. Book chapter dalam buku Art of Programming Contest edisi pertama dan
kedua Arefin, 2006.
Adapun pengelompokkan soal-soal berdasarkan buku Competitive Programming terdefinisi seperti Tabel 3.1, Tabel 3.2, dan Tabel 3.3 berikut:
Tabel 3.1 Kategori soal-soal UVa online judge berdasarkan book chapter
Competitive Programming 1
st
Edition Halim, et al. 2010
Kategori Soal Banyak Soal
Computational Geometry 83
Data Structures and Libraries 37
Graph Theory 141
Introduction 39
Mathematics 152
Problem Solving Paradigms 81
String Processing 43
Total 550
Universitas Sumatera Utara
Tabel 3.2 Kategori soal-soal UVa online judge berdasarkan book chapter
Competitive Programming 2
nd
Edition Halim, et al. 2011
Kategori Soal Banyak Soal
Computational Geometry 102
Data Structures and Libraries 121
Graph Theory 226
Introduction 156
Mathematics 294
More Advanced Topics 82
Problem Solving Paradigms 190
String Processing 127
Total 1298
Tabel 3.3 Kategori soal-soal UVa online judge berdasarkan book chapter
Competitive Programming 3
nd
Edition Halim, et al. 2013
Kategori Soal Banyak Soal
Computational Geometry 96
Data Structures and Libraries 131
Graph Theory 243
Introduction 169
Mathematics 366
More Advanced Topics 175
Problem Solving Paradigms 241
Rare Topics 76
String Processing 161
Total 1655
Pada tabel 3.1, tabel 3.2, dan tabel 3.3 dirincikan kategori soal yang dipakai pada sistem ini sesuai dengan book chapter competitive programming. Pada masing-masing
edisi buku, terlihat rekomendasi soal lebih akurat pada edisi ketiga dengan penyempurnaan pada edisi pertama dan kedua sebelumnya. Juga jumlah soal yang
direkomendasikan menjadi lebih banyak. Kategori soal pada tabel 2.5 terlihat lebih
Universitas Sumatera Utara
mendalam dan terstruktur dengan kesesuaian soal dan kategori yang cocok untuk soal tersebut.
Sedangkan pada tabel 3.4, soal dikelompokkan berdasarkan volume soal. Pengelompokan soal ke dalam satu volume ini berdasarkan tahun soal-soal yang ada.
Jadi dengan kata lain, soal yang baru akan masuk pada nomor volume soal paling akhir dari nomor volume yang ada.
Tabel 3.4 Kategori soal-soal UVa online judge berdasarkan Volume soal
UVA, 2014
Volume Soal Banyak Soal
Volume 001 100
Volume 002 100
Volume 003 100
.. ..
Volume 129 100
Total 4526
Catatan: Tidak semua volume mempunyai tepat 100 soal dan tidak semua volume dalam
urutan 1 sampai 129 tersedia
Pada tabel 3.5, tabel 3.6, dan tabel 3.7 berikut, kategori soal didasarkan pada book chapter Art of Programming Contest 1
st
, 2
nd
, 3
rd
edition. Kategori soal yang ada pada buku ini cukup lengkap, tetapi tidak sedalam pengkategorian soal di buku competitive
programming.
Tabel 3.5 Kategori soal-soal UVa online judge berdasarkan book chapter
Art of Programming Contest 1
st
Edition Arefin, 2006
Kategori Soal Banyak Soal
Algorithm Design 34
Bruteforce 52
Universitas Sumatera Utara
Kategori Soal Banyak Soal
Data Structures 32
Dynamic Programming 60
Elementary Problem Solving 57
Getting Started 12
Graph Algorithms and Implementation Techniques
26
Mathematical Concepts and Methods 62
Total 334
Tabel 3.6 Kategori soal-soal UVa online judge berdasarkan book chapter
Art of Programming Contest 2
nd
Edition Halim, et al. 2011
Kategori Soal Banyak Soal
Advanced Topics 71
Algorithm Design 47
Arrays and Strings 18
Bruteforce 29
C++ and STL 28
Data Structures 36
Dynamic Programming 54
Functions and Recursion 16
Graph Theory 38
Maths 80
Total 415
Tabel 3.7 Kategori soal-soal UVa online judge berdasarkan Training
Guide Art of Programming Contest Arefin, 2006
Kategori Soal Banyak Soal
Algorithm Design 313
Data Structures 96
Universitas Sumatera Utara
Kategori Soal Banyak Soal
Geometry 133
Graph Theory 151
Mathematics 265
Selected Topics 177
Total 1135
3.2.2. Problemsets Processing
Pada bagian problemsets processing ini, detail setiap soal yang tersedia di platform UVa online judge diekstrak menjadi bagian-bagian informasi yang berguna untuk
mengetahui statistik soal tersebut dan hubungannya dengan submissions pengguna.
Gambar 3.2 Flowchart Tahapan Problemsets Processing
Tahapan problemsets processing meliputi proses-proses sebagai berikut:
1 Download keseluruhan problemsets berupa data JSON yang tersedia melalui API.
2 Data JSON problemsets tersimpan dalam arsip data.
Universitas Sumatera Utara
3 Data JSON problemsets dideserialisasi sehingga dapat diproses.
4 Data problemsets yang sudah dalam bentuk normal dimasukkan dalam setiap
kategori atau tekni penyelesaian dan berdasarkan volume soal. 5
Mengambil detail setiap soal berupa informasi runtime, level, status submissions, nilai DACU
6 Hasil dari proses ini merupakan detail setiap soal secara lengkap, baik soal untuk
menu next-solved problems maupun untuk menu statistik pengguna. 7
Tahapan problemsets processing selesai. Bentuk flowchart dapat dilihat pada gambar 3.1.
3.2.3. User’s Submissions Statistics
Bagian statistik submissions pengguna mengembalikan detail informasi keseluruhan submissions pengguna terhadap soal-soal yang pernah dikerjakan baik statusnya solved
maupun unsolved.
Gambar 3.3 Flowchart Tahapan Submissions History Pengguna
Adapun tahapan-tahapan untuk mendapatkan statistik submissions terdefinisi sebagai berikut:
Universitas Sumatera Utara
1 Mengunduh data submissions history pengguna berupa data JSON yang tersedia
melalui API. 2
Data JSON submissions history pengguna tersimpan dalam arsip data. 3
Data JSON submissions history pengguna diserialisasi untuk pemrosesan selanjutnya.
4 Data submissions history pengguna tersimpan di arsip dan terindeks di menu “List
of Users ”.
5 Mengambil setiap informasi submissions history pengguna secara detail.
6 Tahapan submissions history pengguna selesai. Bentuk flowchart dapat dilihat pada
gambar 3.2.
3.2.4. Pembobotan Level Soal Grading the Problemsets
Setiap soal yang ada di platform UVa online judge ini diberikan status levelnya untuk memudahkan pengguna mem-filter berdasarkan tingkat kesulitan soal-soal ketika
berlatih. Kalkulasi level soal ini didasarkan pada penghitungan banyaknya pengguna yang melakukan submissions terhadap satu soal. Submissions yang memengaruhi level
setiap soal adalah submissions dengan status accepted verdict dan lebih rinci ke nilai dacu distinct accepted users atau menghitung tepat satu submission yang benar dari
setiap pengguna. Artinya, jika satu pengguna melakukan submissions berkali-kali terhadap satu soal dan mendapatkan status accepted solusi benar, sistem hanya
menghitung tepat satu submission yang pertama kali mendapatkan status accepted.
Adapun rumus untuk menghitung level soal ini adalah sebagai berikut, Level prob[i] = 15 − � 15, log dacu
Dimana, dacu
= distinct accepted users, nilai submission accepted verdict tunggal pengguna terhadap soal tertentu,
Catatan: Nilai 15 adalah bobot level tertinggi yang dilabelkan pada keseluruhan soal. Sehingga
setiap soal akan bervariasi rentang level 0 – 15.
Universitas Sumatera Utara
3.2.5. Next-Solved Problems Recommendation
Setelah statistik setiap soal dan submissions history pengguna didapat, tahapan selanjutnya adalah memberikan rekomendasi soal-soal yang sudah dikategorikan
berdasarkan teknik penyelesaiannya ataupun topik soal, rekomendasi berdasarkan level, atau mem-filter-nya secara volume soal atau fitur lainnya. Berikut data 25 soal
berdasarkan penghitungan nilai DACU.
Gambar 3.4 Flowchart Next-solved Problems
Tabel 3.8 Tabel Rekomendasi 25 Soal Berdasarkan Kalkulasi Nilai
DACU
No Problem
Number Problem Title
nos anos
anos dacu
best
1 100
The 3n + 1 problem 646563
174076 26
69133 0.007
2 10055
Hashmat the Brave Warrior 209260
57544 27
38424 3
10071 Back to High School Physics
100683 49501
49 35143
Universitas Sumatera Utara
No Problem
Number Problem Title
nos anos
anos dacu
best
4 272
TEX Quotes 67587
31760 46
23621 5
458 The Decoder
65335 30952
47 22594
6 102
Ecological Bin Packing 87976
33640 38
21607 7
11172 Relational Operator
50588 28928
57 21519
8 494
Kindergarten Counting Game 65627
25282 38
19497 9
10038 Jolly Jumpers
123392 32139
26 19427
10 10300
Ecological Premium 34338
22999 66
19251 11
10783 Odd Sum
50300 23367
46 17534
12 10035
Primary Arithmetic 82179
23254 28
16728 13
299 Train Swapping
38265 21336
55 16511
14 10018
Reverse and Add 74330
30727 41
16276 15
10189 Minesweeper
101009 23453
23 16132
16 136
Ugly Numbers 71197
21778 30
15996 17
10082 WERTYU
51416 20142
39 15778
18 591
Box of Bricks 60618
19682 32
15311 19
113 Power of Cryptography
52247 20519
39 15271
20 10370
Above Average 32233
17072 52
13594 21
108 Maximum Sum
50283 20657
41 13014
22 10696
f91 36326
18941 52
12693 23
11727 Cost Cutting
32704 15310
46 12358
24 488
Triangle Wave 80440
18138 22
12210 25
579 Clock Hands
37049 15711
42 11970
Universitas Sumatera Utara
Universitas Sumatera Utara
BAB 4
ANALISIS DAN PERANCANGAN
4.1. Perancangan Sistem