• Tidak ada hasil yang ditemukan

Rekomendasi Next-Solved Problems di Platform Kompetisi Pemrograman Menggunakan Recommendation Engine

N/A
N/A
Protected

Academic year: 2017

Membagikan "Rekomendasi Next-Solved Problems di Platform Kompetisi Pemrograman Menggunakan Recommendation Engine"

Copied!
82
0
0

Teks penuh

(1)

DAFTAR PUSTAKA

ACM ICPC. 2014. World Final Results. (Online) http://icpc.baylor.edu/worldfinals /results (Accessed 12 September 2014).

Arefin, A.S. 2006. Art of Programming Contest. 2nd Edition. New Delhi: ACM Solver. Baylor. 2014. ACM ICPC History. (Online) http://icpc.baylor.edu/community/history

(Accessed 5 December 2014).

Facebook. 2015. Facebook Hacker Cup. (Online) https://www.facebook.com/notes /1029173677098533/ (Accessed 15 May 2015).

Forisek, M. 2013. Pushing the Boundary of Programming Contests. Olympiads in Informatics, 7, pp.23-35.

Fowler, M. 2003. UML Distilled: A brief guide to the standard object modelling language. 3rd Edition. Addison-Wesley.

Google Code Jam. 2014. Google Code Jam. (Online) https://code.google.com/codejam (Accessed 12 September 2014).

Greeve, M. 2005. UVA Toolkit. (Online) http://uvatoolkit.com/problemssolve.php (Accessed 12 September 2014).

Halim, F. 2010. UVA Hunting. (Online) http://uhunt.felix-halim.net/ (Accessed 12 September 2014).

Halim, F. & Halim, S. 2010. Competitive Programming: The new lower bound of programming contests. 1st Edition. Singapore: Lulu.com.

Halim, S. & Halim, F. 2011. Competitive Programming 2: The lower bound of programming contests. 2nd Edition. Singapore: Lulu.com.

Halim, F. & Halim, S. 2013. Competitive Programming 3: The new lower bound of programming contests. 3rd Edition. Singapore: Lulu.com.

Lin, S., Zhang, Q. & Li, W. 2013. A programmer self-training system with programming skill evaluation and personalized task recommendation. In International Conference on E-learning, E-business, Enterprise Information Systems, and E-Government (EEE)., 2013.

(2)

Manzoor, S. 2008. Competitive Learning in Informatics: The UVA online judge experience. Olympiad in Informatics, pp.131-48.

Nugroho, A. 2010. Rekayasa Perangkat Lunak Menggunakan UML dan JAVA. Penerbit Andi.

Revilla, M., Manzoor, S. & Lu, R. 2008. UVA Dataset. (Online) https://uva.onlinejudge.org/index.php ?option=com_onlinejudge&Itemid=8 (Accessed 12 May 2014).

Ricci, F., Rokach, L., Shapira, B. & Kantor, P.B. 2011. Recommendation Systems Handbook. New York: Springer.

Topcoder. 2014. Topcoder. (Online) htpps://topcoder.com (Accessed 12 September 2014).

uDebug. 2014. uDebug Input Output. (Online) http://udebug.com/ (Accessed 12 September 2014).

UVA. 2014. Language Statistics. (Online) https://uva.onlinejudge.org/index.php ?option=com_onlinejudge&Itemid=23 (Accessed 15 May 2014).

(3)

BAB 3

METODOLOGI PENELITIAN

3.1. Analisis Data

3.1.1. Dataset overviews

Ketersediaan Dataset

Dataset UVa Online Judge ini tersedia dari API uHunt yang mengembalikan data dalam format JSON (Halim, 2010). API ini memungkinkan pengembang aplikasi lainnya menciptakan berbagai complementary tools yang lebih kompleks dan sesuai dengan kebutuhan dan kreativitas yang diinginkan oleh masing-masing pengembang. Dalam penelitian ini, peneliti menggunakan ketersediaan data yang bisa diakses publik untuk pengembangan fitur untuk merekomendasikan berbagai soal di UVa Online Judge. Berikut detail API uHunt untuk keperluan penelitian.

Konversi Nama Pengguna menjadi UserID (UID)

URL http://uhunt.felix-halim.net/api/uname2uid/{maestrofx}

Deskripsi {maestrofx} merupakan nama pengguna yang akan dikonversi menjadi ID pengguna.

Problem List

URL http://uhunt.felix-halim.net/api/p Deskripsi

Json Format

Mengembalikan daftar problemset yang ada di platform UVa dalam format array Javascript. Setiap soal terdefinisi sebagai larik dengan 21 nilai:

[[ 36,100,"The 3n + 1 problem", 68010, 23, 1000000000, 0, 6642, 0, 0, 101746, 0, 57029, 131, 52588, 5209, 239064, 4447, 172221, 3000, 1],

(4)

[38, 102,"Ecological Bin Packing", 21345, 33, 1000000000, 0, 1947, 0, 0, 11769, 0, 4349, 6, 2739, 72, 32232, 635, 33197, 3000, 1]..]

Soal-Soal Spesifik URL http://uhunt.felix-halim.net/api/p/id/{problem-id} Deskripsi Json Format URL Deskripsi Json Format

menampilkan soal tertentu dengan {problem-id}

http://uhunt.felix-halim.net/api/p/num/{problem-number} menampilkan soal tertentu dengan {problem-number}

{"pid":36, "num":100, "title":"The 3n + 1 problem" ,"dacu":68010, "mrun":23, "mmem":1000000000, "nover":0, "sube":6642, "noj":0, "inq":0, "ce":101746, "rf":0, "re":57029, "ole":131, "tle":52588, "mle":5209, "wa":239064, "pe":4447, "ac":172221, "rtl":3000, "status":1}

Status Pengumpulan Solusi pada Soal Tertentu

URL http://uhunt.felix-halim.net/api/p/subs/{pids-csv}/{start-sbt}/{end-sbt}

Deskripsi Menampilkan submission ke soal tertentu dengan rentang tanggal yang diberikan. {pid-csv} merupakan daftar identitas soal yang dikodekan dengan tanda koma dengan nilai terpisah. {start-sbt} dan {end-sbt} merupakan rentang tanggal dalam format unix. Perlu dicatat bahwa submission yang dikembalikan dalam urutan acak. API uHunt ini sangat cocok untuk membuat virtual contests yang berjalan pada rentang waktu tertentu pada sejumlah soal yang telah ditentukan.

Peringkat Soal

URL http://uhunt.felix-halim.net/api/p/rank/{pid}/{rank}/{count}

Deskripsi Mengembalikan submission terhadap satu soal {pid} yang diranking dari {rank} sampai {rank} + {count} – 1.

Peringkat Soal Pengguna

URL http://uhunt.felix-halim.net/api/p/ranklist/{pid}/{uid}/{nabove}/{nbelow}

Deskripsi Mengembalikan submission terdekat (secara eksekusi waktu) untuk submissions pengguna tertentu pada satu soal. {pid} adalah identitas soal. {uid} adalah identitas pengguna, {nabove} adalah jumlah submissions tercepat yang diranking di atas pengguna yang ditampilkan, {nbelow} adalah jumlah submissions terlama yang dirangking di bawah pengguna yang ditampilkan.

Live Events

(5)

Deskripsi Fitur ini menggunakan teknik long-polling. Fitur ini dapat menahan permintaan untuk paling tidak 1 menit untuk aktivitas baru. Fitur ini juga akan mengembalikan nilai dengan sesegera mungkin jika ada paling tidak satu aktivitas baru. Server hanya akan menampilkan preferensi 100 aktivitas terakhir.

{poll-id} merupakan id minimal yang dipanggil. Untuk pemanggilan pertama kalinya, pengguna dapat menggunakan nilai 0 untuk mendapatkan 100 aktivitas terakhir. Setelah menerima aktivitas, perlu dicatatkan id terakhir dari aktivitas yang dikembalikan dan menggunakannya untku memanggil fiturnya lagi dengan {poll-id} = the_last_id untuk mendapatkan nilai aktivitas berikutnya, demikian seterusnya.

Submissions Pengguna

URL 1. http://uhunt.felix-halim.net/api/subs-user/{user-id}

2. http://uhunt.felix-halim.net/api/subs-user/{user-id}/{min-sid}

Deskripsi

URL Deskripsi

{user-id} merupakan identitas pengguna. {min-sid} bersifat opsional. Misalnya, jika sebelumnya telah ditentukan, nilai ini akan mengembalikan submissions dengan identitas aktivitas lebih besar dari nilai {min-sid}. Fitur ini mengembalikan objek dengan format JSON dengan 3 atribut: name (name asli pengguna), uname (username pengguna), dan subs (aktivitas pengguna sebagai satu array).

http://uhunt.felix-halim.net/api/subs-user-last/{user-id}/{count}

Fitur ini mengembalikan submission {count} terakhir dari pengguna {user-id} dalam format yang sama sebagai subs-user di atas. Panjang larik Subs sama dengan jumlah submissions pengguna. Setiap elemen merupakan satu submission dengan nilai:

Submissions Pengguna Tertentu Terhadap Soal Tertentu

URL http://uhunt.felix-halim.net/api/subs-pids/{user-ids-csv}/{pids-csv}/{min-subs-id}

Deskripsi

URL

Deskripsi

{user-ids-csv} merupakan identitas pengguna yang diwakilkan sebagai nilai yang dipisahkan dengan tanda koma. Sama halnya, {pids-csv} merupakan identitas soal yang diwakilkan dengan dengan nilai yang dipisahkan dengan tanda koma. Jumlah dikedua csv dibatasi hingga 100 aktivitas. {min-subs-id} merupakan identitas submission minimal yang akan dikembalikan.

Hasilnya adalah dalam bentuk hash map dengan kuncinya adalah identitas pengguna dan nilainya adalah submission pengguna tersebut yang berkorelasi dengan satu identitas soal tertentu. Format submission identik dengan deskripsi tersebut.

http://uhunt.felix-halim.net/api/subs-nums/{user-ids-csv}/{nums-csv}/{min-subs-id} fitur ini sama seperti fitur sebelumnya, kecuali soal yang diberikan di nomor soal, bukan identitas soal.

Nilai Identitas bit-encoded-problem Yang Diselesaikan Oleh Beberapa Pembuat Soal URL http://uhunt.felix-halim.net/api/solved-bits/{user-ids-csv}

(6)

dengan pid = (j*32)+i

Ranking Pengguna

URL http://uhunt.felix-halim.net/api/ranklist/{user-id}/{nabove}/{nbelow}

Deskripsi Mengembalikan peringkat pengguna dan pengguna lain terdekat dengan peringkat pengguna yang dicari.

{nabove} merupakan sejumlah pengguna di atas {user-id} yang ingin ditampilkan. Sama halnya dengan {nbelow}. Keduanya, {nabove} dan {nbelow} dibatasi dengan banyak 100. hasil yang dikembalikan berupa larik berformat JSON dimana setiap elemen merupakan peringkat pengguna tunggal dengan atribut sebagai berikut:

1. rank → peringkat pengguna

2. old → nilai bukan 0 bila pengguna merupakan pengguna platform

UVa yang belum migrasi

3. name → nama asli pengguna

4. username → username pengguna

5. ac → jumlah soal yang berstatus accepted

6. nos → jumlah submissions pengguna

7. activity → jumlah soal berstatus accepted dari pengguna dalam 2 hari,

7 hari, 31 hari, 3 bulan, dan 1 tahun

mengembalikan peringkat pengguna dari posisi tertentu URL http://uhunt.felix-halim.net/api/rank/{pos}/{count}

Deskripsi Mengembalikan nilai pengguna dengan peringkat {pos} ke {pos} + {count} – 1.

3.1.2. Datasets grabbing untuk keperluan data testing

Datasets UVa Online Judge yang tersedia publik melalui API uHunt ini sangat kompleks dan dibagi berdasarkan spesifikasi pengguna tertentu, soal tertentu, dan

history submissions serta seluruhnya bisa dikostumsasi berdasarkan kebutuhan penelitian. Datasets yang tersedia di platform UVa Online Judges terdiri dari dua juta lebih pengguna terdaftar dengan hampir 50000 pengguna unik aktif setiap bulannya. Berdasarkan statistik tahun 2014 pada Bab 2, terdapat 1784838 submissions, dengan rata-rata ~148000 submissions setiap bulannya (UVA, 2014).

1) Speficic-User-Information-Retrieval Script

(7)

masing-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.net/api/subs-user/$i 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 ./pdfs/$volume/$problem_id.pdf ]]; then

wget

http://uva.onlinejudge.org/external/$volume/$problem_id.pdf

fi

done

mkdir -p ./pdfs/$volume

mv -n $volume*.pdf ./pdfs/$volume 2>/dev/null done

3.2. Analisis Sistem

(8)

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.

(9)

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 dan/atau 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 dan/atau diselesaikan maupun statistik bahasa pemrograman.

3. Tahapan processing problemsets

(10)

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

(11)

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 1st 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

(12)

Tabel 3.2 Kategori soal-soal UVa online judge berdasarkan book chapter Competitive Programming 2nd 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 3nd 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

(13)

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 1st, 2nd, 3rd 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 1st Edition (Arefin, 2006)

Kategori Soal Banyak Soal

Algorithm Design 34

(14)

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 2nd 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

(15)

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:

(16)

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

(17)

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:

(18)

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 0

(19)

No Problem

Number Problem Title nos anos %anos dacu best

4 272 TEX Quotes 67587 31760 46% 23621 0

5 458 The Decoder 65335 30952 47% 22594 0

6 102 Ecological Bin Packing 87976 33640 38% 21607 0

7 11172 Relational Operator 50588 28928 57% 21519 0

8 494 Kindergarten Counting Game 65627 25282 38% 19497 0

9 10038 Jolly Jumpers 123392 32139 26% 19427 0

10 10300 Ecological Premium 34338 22999 66% 19251 0

11 10783 Odd Sum 50300 23367 46% 17534 0

12 10035 Primary Arithmetic 82179 23254 28% 16728 0

13 299 Train Swapping 38265 21336 55% 16511 0

14 10018 Reverse and Add 74330 30727 41% 16276 0

15 10189 Minesweeper 101009 23453 23% 16132 0

16 136 Ugly Numbers 71197 21778 30% 15996 0

17 10082 WERTYU 51416 20142 39% 15778 0

18 591 Box of Bricks 60618 19682 32% 15311 0

19 113 Power of Cryptography 52247 20519 39% 15271 0

20 10370 Above Average 32233 17072 52% 13594 0

21 108 Maximum Sum 50283 20657 41% 13014 0

22 10696 f91 36326 18941 52% 12693 0

23 11727 Cost Cutting 32704 15310 46% 12358 0

24 488 Triangle Wave 80440 18138 22% 12210 0

(20)
(21)

BAB 4

ANALISIS DAN PERANCANGAN

4.1. Perancangan Sistem

4.1.1. Diagram use case

Aplikasi perekomendasian next-solved problems di platform UVa online judge ini memiliki satu pengguna aktif yaitu UVa username.

(22)

Pada Gambar 4.1 mengenai use case, berguna untuk memodelkan perilaku (behaviour) sistem untuk memudahkan pengguna memahami keseluruhan sistem yang dibangun. Berdasarkan analisis pengguna, aktor yang berperan pada aplikasi ini hanya satu aktor yaitu pengguna yang akan menggunakan aplikasi untuk menemukan soal-soal yang cocok dipakai berlatih.

4.1.2. Definisi use case

Tabel 4.1 berikut merupakan deskripsi definisi use case berdasarkan diagram pada Gambar 4.1.

Tabel 4.1 Tabel Deskripsi Use Case

No Use Case Deskripsi

1 Set default username Proses untuk menentukan nama pengguna awal untuk memersonalisasi rekomendasi soal-soal 2 Next-solved problems Trigger untuk memuat opsi data dari proses

rekomendasi soal 3 Select problem

category

Proses untuk memilih opsi berbagai kategori soal

4 Personalized problem recommendation by dacu

Proses lebih rinci untuk memilih berbagai soal dari personalisasi nilai bobot dacu (distinct accepted user)

5 Personalized problem recommendation sort by level

Proses lebih rinci untuk memilih berbagai soal dari nilai level yang diberikan ke setiap soal

6 Status:live submission Trigger untuk memuat opsi data submissions terakhir yang dilakukan semua pengguna

7 Personalized profiles infos

Trigger untuk memuat opsi seluruh informasi data pengguna

(23)

4.2. Perancangan Tampilan Antarmuka

Perancangan antarmuka pemakai ini berguna untuk menggambarkan ide tampilan antarmuka.

4.2.1. Rancangan tampilan halaman default username

Halaman default username ini berguna untuk navigasi preferensi yang digunakan di sistem. Misalnya, ketika ingin mendapatkan rekomendasi next-solved problems, sistem akan merekomendasikan soal berdasarkan default username yang telah diset sebelumnya. Ataupun untuk melihat detail profil pengguna, sistem juga akan menampilkan data berdasarkan preferensi username pengguna yang sudah ditentukan tadi.

Gambar 4.2 Rancangan halaman default username

4.2.2. Rancangan halaman problem category

(24)

pilihan ini secara otomatis menjadi trigger di sistem untuk menampilkan soal berdasarkan opsi tersebut dan menampilkan keseluruhan soal di bagian kanan menu pada gambar 3.5.

Gambar 4.3 Rancangan halaman problem category dan detail soal

4.2.3. Rancangan halaman problem categories secara detail

(25)

Halaman problems categories ini berisi menjadi navigasi bagi pengguna untuk memilih kategori soal berdasarkan opsi yang disediakan di sistem.

4.2.4. Rancangan halaman profil pengguna

Gambar 4.5 Rancangan halaman detail profil pengguna dan pengguna lain yang ditambahkan ke sistem

Halaman profil pengguna ini menampilkan data statistik pengguna yang dimasukkan ke sistem. Secara otomatis sistem akan mengunduh data dari server UVa online judge melalui API UHunt yang sudah diterangkan pada Bab 2.

4.2.5. Rancangan halaman status menu untuk live submissions

(26)
(27)

BAB 5

IMPLEMENTASI DAN PENGUJIAN

Setelah melalui tahap analisis dan perancangan, tahap selanjutnya untuk pengembangan perangkat lunak adalah tahap implementasi dan pengujian sistem. Untuk mengetahui apakah implementasi perangkat lunak tersebut berhasil atau tidak, perlu dilakukan pengujian. Berikut hasil implementasi dan pengujian aplikasi yang telah dibangun.

5.1. Implementasi Sistem

Sesuai dengan hasil analisis dan perancangan sistem yang telah dilakukan, maka dibuatlah implementasi perancangan menjadi sistem perekomendasian soal-soal platform UVa Online Judge dengan teknik recommendation engine ke dalam bentuk program.

5.1.1. Spesifikasi perangkat keras dan perangkat lunak yang digunakan

Penulis menggunakan kombinasi perangkat keras pengujian dataset dengan spesifikasi: 1. Processor Server Intel Xeon @ 3.1 GHz

2. Memory RAM 8 GB

3. Kapasitas Harddisk 1 TB

Spesifikasi perangkat lunak yang digunakan untuk pengkodean: 1. Windows 8

(28)

Spesifikasi perangkat lunak yang digunakan untuk host datasets: 1. Ubuntu Linux Server 14.04 LTS

2. Apache Web Server, MySQL, PHP

5.1.2. Tampilan Utama Menu Problem Category

Halaman menu problems category ini menampilkan soal-soal yang ada pada arsip UVa online judge yang sudah dikategorikan. Tampilannya dapat dilihat pada gambar 4.1.

Gambar 5.1 Tampilan halaman menu problem category

5.1.3. Implementasi rekomendasi next-solved problems soal-soal kompetisi

(29)

5.1.4. Tampilan Menu Profil Pengguna

Gambar 5.2 Tampilan menu profiles pengguna dan pengguna lain

Dari halaman menu utama, pengguna dapat memilih menu Profiles untuk melihat profil pengguna secara detail. Di menu ini pengguna dapat melihat detail dirinya sendiri maupun pengguna lain yang sudah ditambahkan sebelumnya. Fitur yang ada di menu ini antara lain, detail submissions yang pernah dibuat, progress tracker bertujuan untuk melihat preferensi total soal yang pernah dicoba, soal yang sudah pernah diselesaikan. Tampilannya dapat dilihat pada Gambar 5.2.

5.1.5. Tampilan menu live submissions dari semua pengguna

(30)

Pada menu ini, pengguna dapat melihat submissions dari seluruh pengguna secara live events. Artinya, setiap solusi yang dikumpulkan (submit) di platform UVa akan secara langsung tampil di menu ini. Jadi, ketika kita sudah mengumpulkan solusi dari satu soal yang sedang kita coba, status submissions akan tampil sesegera mungkin dengan status kode, waktu eksekusi, waktu pengumpulan, dan informasi lainnya. Tampilannya dapat dilihat pada Gambar 5.3.

[image:30.595.162.449.305.564.2]

5.1.6. Tampilan pengelompokan next-solved problems berdasarkan volume soal dan book chapter

Gambar 5.4 Tampilan next-solved problems berdasarkan pengelompokan soal berdasarkan volume soal dan book chapter

Pada Gambar 5.4, pengguna dapat memilih soal-soal yang dikelompokkan berdasarkan beberapa kategori:

1. Kategori berdasarkan volume soal, setiap volume rata-rata berisi 100 soal, dengan jumlah soal yang terindeks sebanyak 4526 soal.

(31)

3. Kategori buku competitive programming 2nd Edition tahun 2011, dengan jumlah soal terindeks sebanyak 1298 soal.

4. Kategori buku competitive programming 3rd Edition tahun 2013, dengan jumlah soal terindeks sebanyak 1655 soal.

[image:31.595.108.524.256.419.2]

5.1.7. Tampilan pengelompokan next-solved problems berdasarkan volume soal dan book chapter serta terurut berdasarkan distinct accepted user (dacu)

Gambar 5.5 Tampilan pengelompokan next-solved berdasarkan volume, chapter book, dan distinct accepted users

Pada Gambar 5.5, pengguna dapat memilih soal berdasarkan kategori soal yang sudah disediakan dan mengurutkannya berdasarkan nilai dacu. Semakin tinggi nilai dacu suatu soal berarti semakin direkomendasikan soal tersebut untuk diselesaikan terlebih dahulu. Atau bisa juga dengan memersonalisasikan kategori soal dengan fokus pada kategori teknik tertentu, misal, pengguna ingin memokuskan diri pada teknik dynamic programming atau pada soal-soal string processing.

5.1.8. Tampilan next-solved problems berdasarkan Competitive Programming 3rd Edition dan terutut berdasarkan dacu

(32)
[image:32.595.109.525.166.398.2]

competitive programming 3rd edition ditampilkan ke layar. Tampilan soal terurut ini menjadi rekomendasi ke pengguna untuk memilih soal yang selanjutnya diselesaikan saat berlatih (next-solved problems).

Gambar 5.6 Tampilan next-solved problems berdasarkan Competitive Programming 3rd Edition dan terutut berdasarkan nilai dacu

5.2. Pengujian Sistem

Pada sub bab ini akan dijelaskan mengenai analisis hasil pengujian sistem untuk mengetahui bagaimana aplikasi dapat melakukan proses rekomendasi beserta kinerja hasilnya. Penulis melakukan pengujian dengan tahapan pengujian data yang digunakan, pengujian fungsionalitas antarmuka, serta pengujian pemilihan dan rekomendasi soal di sistem.

5.2.1. Pengujian fungsionalitas antarmuka pengguna

(33)
[image:33.595.104.529.96.363.2]

Tabel 5.1 Rencana Pengujian Komponen Antarmuka No Komponen sistem yang diuji Rincian Pengujian

1 Halaman Next-Solved Problems Keseluruhan menu, Menu ‘kategori soal’ Menu ‘All Problems’ Menu ‘sorting soal’ Menu ‘filter soal’ 2 Halaman Profil Pengguna Keseluruhan Menu,

Menu ‘list of Users’ dan tombol ‘AddUser’ Menu ‘Submissions’

Menu ‘Progress’

3 Halaman Live Submissions Menu ‘Live Submissions’ 4 Halaman Default Username Tombol ‘Set Username’

Hasil pengujian lebih rinci dari rencana pengujian komponen antarmuka pada Tabel 5.1 terdefinisi sebagai berikut:

1. Hasil pengujian halaman next-solved problems

Tabel 5.2 hasil pengujian halaman utama No Target pengujian Hasil yang

diharapkan

Hasil pengujian

status

1 Uji tampilan menu next-solved

problems

Menampilkan daftar seluruh soal dan

kategori soal

Menampilkan daftar seluruh soal dan

kategori soal

Berhasil

2 Uji pemilihan menu utama Menu next-solved problems sebagai halaman utama Menu next-solved problems sebagai halaman utama Berhasil

[image:33.595.105.535.470.739.2]
(34)
[image:34.595.102.533.125.508.2]

2. Hasil pengujian halaman profil pengguna

Tabel 5.3 hasil pengujian profil pengguna No Target pengujian Hasil yang

diharapkan

Hasil pengujian

status

1 Uji pemilihan menu ‘User Stats’

Menuju halaman user stats

Menuju halaman user stats

Berhasil

2 Uji tampilan ‘List of Users’ Menampilkan daftar keseluruhan pengguna yang telah dimasukkan Menampilkan daftar keseluruhan pengguna yang telah dimasukkan Berhasil

3 Uji tombol ‘Add Users’

Memasukkan username ke dalam

daftar

Memasukkan username ke dalam

daftar

Berhasil

4 Uji navigasi ‘Submissions’ Menampilkan statistik submissions pengguna terpilih Menampilkan statistik submissions pengguna terpilih Berhasil

5 Uji navigasi ‘Progress Tracker’ Menampilkan statistik informasi pengguna terpilih Menampilkan statistik informasi pengguna terpilih Berhasil

[image:34.595.102.538.603.757.2]

3. Hasil pengujian halaman live submissions

Tabel 5.4 Hasil pengujian halaman live submissions No Target pengujian Hasil yang

diharapkan

Hasil pengujian

status

1 Uji pemilihan menu ‘Live Submissions’

Menuju halaman Live Submissions

Menuju halaman Live Submissions

Berhasil

2 Uji menu rentang update menu ‘Live

Submissions’

memperbaharui submissions sesuai waktu yang ditentukan

memperbaharui submissions sesuai waktu yang ditentukan

(35)
[image:35.595.106.535.165.404.2]

4. Hasil pengujian halaman default username

Tabel 5.5 Hasil pengujian halaman default username No Target pengujian Hasil yang

diharapkan

Hasil pengujian

status

1 Uji menu ‘Default Username’ Menuju halaman Default Username Menuju halaman Default Username Berhasil

2 Uji tombol input username

Set username untuk preferensi keseluruhan

navigasi sistem

Set username untuk preferensi keseluruhan

navigasi sistem

Berhasil

3 Uji kotak checkbox Default Username

sebagai startup aplikasi

Menampilkan menu Default Username di awal aplikasi dimulai

Menampilkan menu Default Username di awal aplikasi dimulai

Berhasil

5.2.2. Tahapan training data problemsets dan history of user’s submissions

[image:35.595.149.482.465.720.2]
(36)

Pada tahap ini, soal-soal (problemsets) yang ada secara modular sudah dikelompokkan berdasarkan beberapa kategori. Kategori pertama berdasarkan volume soal. Setiap

[image:36.595.144.490.207.616.2]

volume terdiri dari ~100 soal. Dengan 50 volume soal yang ada. Pengkategorian ini berdasarkan sistem UVa online judge itu sendiri. Kategori soal dalam volume dapat dilihat pada gambar 4.7.

Gambar 5.8 Tampilan kategori soal berdasarkan buku competitive programming 3rd

Pseudocode berikut digunakan untuk mendapatkan struktur volume soal.

public static string GetVolumePath(long pnum) {

(37)

return path; }

Platform UVa sendiri sebenarnya sudah membuat struktur penyimpanan arsip soal di platform mereka secara teratur berdasarkan volume. Volume soal menandakan arsip penyimpanan berdasarkan urutan tahun soal. Jadi, soal-soal terbaru yang dimasukkan ke platform otomatis masuk dalam volume terakhir dengan nomor soal berurut secara inkremen. Pada pseudocode tersebut, pertama-tama mendefinisikan volume soal sama persis seperti di platfrom UVa. Volume soal ini didasarkan pada problem ID (pid) dibagi dengan nilai 100. Kemudian, menciptakan struktur setiap folder penyimpanan soal berdasarkan volume soal tadi. Hal ini dilakukan secara inkremen dari volume 001 sampai dengan volume 129 batas volume soal yang tersedia hingga tahun 2014.

(38)

BAB 6

KESIMPULAN DAN SARAN

6.1. Kesimpulan

Berdasarkan hasil analisis dan pengujian yang dilakukan pada bab sebelumnya, maka dapat disimpulkan bahwa:

1. Dengan complementary tools ini, soal-soal dapat direkomendasikan kepada pengguna berdasarkan preferensi soal termudah hingga tersulit yang dikategorikan dalam berbagai tingkat kesulitan, banyaknya pengguna unik yang telah menyelesaikan soal, nilai bobot soal berdasarkan penghitungan preferensi masing-masing pengguna.

2. Pengelompokan soal-soal semakin akurat dengan lonjakan data statistik pengguna yang menyelesaikan soal yang bertambah setiap tahunnya. Hal ini memungkinkan analisis preferensi setiap pengguna menjadi lebih baik untuk perekomendasian arsip soal.

(39)

6.2. Saran

Untuk pengembangan penelitian lebih lanjut, penulis menyarankan beberapa topik sebagai berikut:

1. Pada penelitian selanjutnya, peneliti dapat mengkategorikan soal berdasarkan subkategori masing-masing topik dengan memberikan bobot kesulitan pada setiap soal. Dan soal-soal yang direkomendasikan didasarkan pada penghitungan bobot preferensi.

2. Proses perekomendasian soal juga secara tidak langsung mempelajari statistik soal dan setiap pengguna. Oleh karena itu, peneliti dapat membuat virtual contest untuk keperluan sesi latihan berdasarkan soal-soal yang tersedia. Virtual contest ini layaknya kontes sebenarnya dengan arsip-arsip soal terdahulu dengan waktu kompetisi yang sudah dijadwalkan. Fitur ini juga berguna untuk latihan terjadwal, sehingga untuk keperluan lebih kompleks, pelatih dapat mengostumisasi kontes kapan saja dalam rentang waktu pelatihan tertentu.

(40)

BAB 2

LANDASAN TEORI

Bab ini berisikan teori dan informasi yang digunakan sebagai landasan pengerjaan aplikasi untuk perekomendasian soal-soal yang tepat yang akan dipakai untuk berlatih. Pembahasan ini bertujuan untuk menguraikan secara rinci tentang competitive programming, online judge, statistik data spesifik terhadap platform UVA online judge dan teori pendukung yang berhubungan dengan teknik perekomendasian.

2.1. Competitive Programming

Competitive programming merupakan terminologi permasalahan (problemset) yang sudah dikenal dengan baik dalam bidang ilmu komputer dan waktu untuk menyelesaikannya harus seefisien mungkin (Halim, et al. 2010). Permasalahan yang dimaksud pada competitive programming ini berkaitan dengan pemecahan masalah-masalah yang sudah didefinisikan dan didesain sebelumnya oleh pembuatnya (problemsetter).

(41)

Pengujian kebenaran program (accepted verdict) yang diberikan ini adalah dengan membandingkan kesamaan hasil keluaran yang dihasilkan oleh program pengguna (problemsolver) dengan hasil keluaran program perancang soal (problemsetter) menggunakan input data rahasia terhadap setiap berkas program yang dikumpulkan.

2.1.1. ACM ICPC

ACM ICPC (International Collegiate Programming Contest) merupakan kejuaraan lomba pemrograman tingkat dunia yang diadakan setiap tahunnya di bawah naungan ACM (Association for Computing Machinery). Kompetisi ini merupakan kompetisi paling bergengsi di tingkat perguruan tinggi di berbagai belahan dunia.

Kompetisi pertama kali diselenggarakan oleh ACM di University of Texas tahun 1970. Bentuk kompetisinya baru ada tahun 1977 ketika penyelenggaraan diadakan pertama kali sebagai bagian dari konferensi informatika tahunan ACM. Setelah itu, ICPC diadakan setiap tahunnya. Dan di awal tahun 1989 penyelenggara utamanya adalah Baylor University (Texas, USA). Selama tahun-tahun tersebut banyak perusahaan besar seperti Apple, AT&T, Microsoft menjadi sponsor. Di tahun 1997, IBM menjadi sponsor utama setiap tahunnya hingga sekarang.

Dari rentang tahun 1977 sampai tahun 1989 peserta ACM ICPC kebanyakan didominasi perguruan tinggi dari USA dan Canada. Dan pada tahun 1990, seiring personal computer berkembang luas dan tersedia untuk publik, berdampak juga pada ketertarikan peserta dari berbagai negara-negara di Asia dan Eropa. Saat ini ACM ICPC memiliki jumlah peserta yang terus bertambah 10 - 20% setiap tahunnya. Berikut statistik hasil world final rentang tahun 2000 – 2014.

Tabel 2.1 Hasil world final rentang tahun 2010 – 2014 (ICPC, 2014) Tahun Negara Institusi

2014 Russia St. Petersburg State University

(42)

Tahun Negara Institusi

2012 Russia St. Petersburg State University of Information Technologies, Mechanics and Optics

2011 China Zhejiang University

2010 China Shanghai Jiao Tong University

2009 Russia St. Petersburg State University of Information Technologies, Mechanics and Optics

2008 Russia St. Petersburg State University of Information Technologies, Mechanics and Optics

2007 Poland University of Warsaw 2006 Russia Saratov State University 2005 China Shanghai Jiao Tong University

2004 Russia St. Petersburg State University of Information Technologies, Mechanics and Optics

2003 Poland University of Warsaw

2002 China Shanghai Jiao Tong University 2001 Russia St. Petersburg State University 2000 Russia St. Petersburg State University

2.1.2. TopCoder

TopCoder (Topcoder, 2014) merupakan perusahaan yang fokus menyelenggarakan berbagai kontes. TopCoder menjadi tempat berkumpulnya talenta-talenta terbaik di seluruh dunia. Salah satu kategori yang sangat aktif dan paling kompetitif adalah bidang competitive programming yang terdiri dari Algorithms - Single Round Matches (SRM) dan TopCoder Tournaments (TopCoder Open).

1) Single Round Matches (SRM)

(43)

a) Coding phase (75 menit), peserta menulis program untuk memecahkan tiga problemset menggunakan bahasa pemrograman yang ditentukan (saat ini yang tersedia C/C++, Java, C#, VB, dan Python). Problemset tersebut dibagi menjadi tiga kategori: easy, medium, dan hard. Tingkat kesulitannya dinyatakan dengan nilai pada masing-masing kategori soal. Secara berurutan easy (250 poin), medium (500 poin), hard (1000 poin). Semakin efisien waktu yang diperlukan peserta untuk menyelesaikan soal yang diberikan, semakin banyak poin yang akan dikumpulkan.

b) Intermission (5 menit), setelah coding phase berakhir, ada jedah waktu sebelum challenge phase dimulai. Waktu ini biasanya digunakan untuk meramu dan menemukan bug pada setiap kode peserta.

c) Challenge phase (15 menit), peserta dapat menantang program peserta lain di room-nya dengan merancang testcase untuk menemukan error output yang dihasilkan program lawan. Si penantang akan menerima 50 poin untuk setiap tantangan yang berhasil dan peserta yang ditantang juga akan kehilangan keseluruhan nilainya untuk problemset tersebut. Dan jika tidak berhasil, si penantang akan kehilangan 25 poin.

d) System-testing phase, setiap problemset yang bertahan melewati challenge phase dijalankan pada banyak testcase sistem. Jika solusi peserta gagal melewati sistem tes, peserta tidak menerima poin apapun untuk problemset tersebut.

2) TopCoder Tournaments

(44)

2.1.3. Google Code Jam

Google Code Jam (GCJ) juga merupakan salah satu kompetisi bergengsi untuk bidang competitive programming. Sama halnya seperti kebanyakan kompetisi pemrograman lainnya, kualifikasinya bersifat online dan sekitar 26 finalis terbaik dari hasil kualifikasi akan berkompetisi secara onsite di Seattle, USA (GCJ, 2014).

1) Lingkungan Kompetisi

Bahasa pemrograman yang digunakan selama kompetisi ini tidak terbatas seperti pada kebanyakan kompetisi lainnya yang hanya menggunakan bahasa pemrograman C/C++ ataupun Java.

2) Problemsets

Setiap soal yang diberikan merupakan soal yang solusinya harus bisa diselesaikan secara algoritmik yang terdiri dari satu atau lebih small inputs, large inputs atau model input yang dideskripsikan pada masing-masing pernyataan pertanyaan. Batas waktu (time limit) setiap masukan yang diberikan, dibatasi untuk small inputs (4 menit) dan large inputs (8 menit).

3) Juri dan Penilaian

Setiap problemset yang solusinya benar memiliki poin yang berbeda untuk tipe input-nya. Sebagai contoh, untuk solusi dengan small input bernilai 10 poin, sementara untuk solusi dengan large input bernilai 15 poin.

2.1.4. Facebook Hacker Cup

(45)

2.2. Online Judges

Sekarang ini, sudah banyak online judges untuk kompetisi pemrograman yang dibuat. Baik untuk keperluan privat untuk melatih tim di satu universitas maupun secara publik yang bisa dipakai siapa saja untuk berlatih secara mandiri. Online judges merupakan sebutan untuk platform yang didesain untuk membantu pengguna dalam belajar pemrograman. Dan online judges ini merupakan salah satu platform belajar pemrograman paling baik dan efisien untuk dikembangkan.

2.2.1. UVa Online Judge

[image:45.595.94.588.649.757.2]

University of Valladolid Online Judge (UVaoJ) merupakan online judge tertua dan paling populer di antara online judges lainnya. Mulai dikembangkan tahun 1997 dan sejak saat itu menjadi bagian dari setiap peserta di dunia untuk berlatih di bidang kompetisi pemrograman (Manzoor, 2008). Hingga Oktober tahun 2005, platform ini telah menerima 4089635 submissions dan bertambah secara eksponensial setiap tahunnya. Data ini mereka gunakan untuk menganalisis berbagai aspek untuk perbaikan kompetisi pemrograman ke depannya. Di asumsikan rata-rata setiap kompetisi terdiri dari 8 soal dan terdapat 100 tim yang berkompetisi dan semua tim menyelesaikan semua soal dengan 4 submissions per soalnya. Jadi submissions yang ada 100*8*4 = 3200. Dengan asumsi lima jam setiap kompetisi yang berlangsung, akan ada 3200 submissions setiap kompetisi. Jumlah ini ekivalen dengan 4089635/3200 = ~1278 kompetisi pemrograman yang aktif (Manzoor, 2005).

Tabel 2.2 Statistik Tahunan Submissions di Platform UVa Online Judge (UVA, 2015)

Tahun Total ANSI C JAVA C++ PASCAL C++11

1997 4031 3390 84.10% 0 0.00% 639 15.85% 2 0.05% 0 0.00%

1998 42375 24697 58.28% 0 0.00% 13859 32.71% 3819 9.01% 0 0.00%

1999 109202 44860 41.08% 0 0.00% 42226 38.67% 22116 20.25% 0 0.00%

(46)

Tahun Total ANSI C JAVA C++ PASCAL C++11

2001 345305 124223 35.97% 3029 0.88% 187852 54.40% 30201 8.75% 0 0.00%

2002 610151 227779 37.33% 13567 2.22% 305969 50.15% 62836 10.30% 0 0.00%

2003 874762 282206 32.26% 37726 4.31% 481173 55.01% 73657 8.42% 0 0.00%

2004 998194 279821 28.03% 41387 4.15% 607279 60.84% 69707 6.98% 0 0.00%

2005 1050528 275220 26.20% 64898 6.18% 662432 63.06% 47978 4.57% 0 0.00%

2006 999155 221526 22.17% 61752 6.18% 684062 68.46% 31815 3.18% 0 0.00%

2007 914504 208229 22.77% 64815 7.09% 619607 67.75% 21853 2.39% 0 0.00%

2008 730266 148037 20.27% 66985 9.17% 507514 69.50% 7730 1.06% 0 0.00%

2009 782065 150784 19.28% 80082 10.24% 543717 69.52% 7482 0.96% 0 0.00%

2010 828697 135284 16.32% 89154 10.76% 592933 71.55% 11326 1.37% 0 0.00%

2011 1104715 201236 18.22% 118430 10.72% 776199 70.26% 8850 0.80% 0 0.00%

2012 1468476 236197 16.08% 165517 11.27% 1054852 71.83% 11910 0.81% 0 0.00%

2013 1798643 274865 15.28% 205596 11.43% 1308937 72.77% 9245 0.51% 0 0.00%

2014 1784838 268945 15.07% 200874 11.25% 1035314 58.01% 5043 0.28% 274662 15.39%

2015 281564 49694 17.65% 26867 9.54% 142200 50.50% 1494 0.53% 61309 21.77%

Total 14926994 3228888 21.63% 1240679 8.31% 9661937 64.73% 459519 3.08% 335971 2.25%

2.3. Statistik UVa Online Judge

(47)
[image:47.595.115.523.121.315.2]

2.3.1. Persebaran bahasa pemrograman yang digunakan

Gambar 2.1 Persebaran Bahasa Pemrograman yang Digunakan (UVA, 2014)

Pada gambar 2.1 mengenai persebaran bahasa pemrograman yang digunakan di platform UVa online judge , bahasa C++ merupakan bahasa pemrograman yang sering dipakai untuk menyelesaikan berbagai soal yang ada di platform UVa online judge ini, selanjutnya berturut-turut bahasa ANSI C, C++11, Java, dan Pascal (UVA, 2014). Hal ini dikarenakan mayoritas submissions yang ada dilakukan oleh pelajar di universitas dimana bahasa C/C++ merupakan “bahasa ibu” untuk menyelesaikan berbagai kasus yang membutuhkan pemrograman. Faktor lain yang mempengaruhi tingginya penggunaan bahasa ini dalam kompetisi pemrograman adalah kecepatan eksekusi (execution time), ketersediaan library yang cukup lengkap (STL), maupun utilitas lainnya seperti penggunaan macro yang sangat disukai banyak pemrogram C/C++. Belakangan ini, bahasa Java semakin diminati juga karena kehandalan dukungan library untuk menangani kasus-kasus bertipe BigMath atau BigInt.

2.3.2. Statistik unique page views

(48)
[image:48.595.125.500.141.556.2]

penyisihan untuk kompetisi pemrograman ACM ICPC di semua regional di seluruh dunia. Sedangkan untuk bulan Februari-Maret merupakan world final dari slot regional masing-masing.

Gambar 2.2 UVa Page Views Rentang Tahun 2014 (UVA, 2014)

Gambar 2.3 UVa Unique Page Views (UVA, 2014)

2.3.3. Statistik pengunjung unik

[image:48.595.133.503.150.311.2]
(49)
[image:49.595.142.492.153.303.2]

ICPC di Juni 2014 dan pihak pengembang UVa online judge yang menambahkan bahasa C++11 di platform mereka (UVA, 2014).

Gambar 2.4 Statistik UVa Unique Visitors rentang tahun 2014 (UVA, 2014)

2.3.4. Statistik data kunjungan rentang tahun 2014

Pada gambar 2.5 berikut, tersaji data kunjungan di rentang tahun 2014. Data ini merepresentasikan frekuensi pengguna mengakses platform UVa online judge.

[image:49.595.147.487.468.611.2]
(50)

2.3.5. Statistik pengunjung berdasarkan negara

Gambar 2.6 berikut merepresentasikan kunjungan pengguna terhadap platform UVa online judge berdasarkan negara. Enam besar negara dengan kunjungan tertinggi berturut-turut sebagai berikut:

a) Bangladesh  324090 kunjungan b) China  171250 kunjungan c) United States  139590 kunjungan d) Taiwan  139590 kunjungan e) Egypt  93010 kunjungan f) India  92990 kunjungan

[image:50.595.140.359.186.303.2] [image:50.595.103.524.390.590.2]

Data ini merepresentasikan bahwa pelajar-pelajar berkebangsaan negara tersebut cukup mendominasi kompetisi pemrograman tingkat dunia dan mendominasi kampus-kampus dengan fakultas ilmu komputer terbaik di seluruh dunia.

Gambar 2.6 UVa Visits by Country rentang tahun 2014 (UVA, 2014)

2.3.6. Statistik pengunjung berdasarkan kota

(51)
[image:51.595.121.511.102.292.2]

Gambar 2.7 UVa Visits by City rentang tahun 2014 (UVA, 2014)

2.4. Recommendation Engine

Mesin rekomendasi merupakan satu teknik yang digunakan untuk membantu pengguna mendapatkan pilihan atau opsi ketika dalam satu keadaan tertentu kurangnya pengalaman seseorang tersebut terhadap pilihan-pilihan yang tersedia (Ricci, et al. 2011). Sistem rekomendasi ini dalam berbagai keadaan sangat membantu pengguna untuk menentukan pilihan yang tepat. Cara kerja sistem rekomendasi ini adalah dengan menyederhanakan proses pencarian informasi dan memfasilitasi perbandingan akan satu produk. Contohnya, berbelanja di amazon.com, melihat rekomendasi buku di goodreads.com, rekomendasi film di imdb.com dan banyak aplikasi lain di kehidupan sehari-hari.

Dalam contoh e-commerce, sistem rekomendasi sangat berperan aktif untuk merekomendasikan atau memberi informasi yang menarik dan berguna akan satu pilihan terhadap penggunanya. Mesin rekomendasi ini biasanya dibutuhkan karena banyaknya informasi yang tersedia (information overload) atau juga sebaliknya karena minimnya pengetahuan pengguna (lack of user knowledge) pada area tertentu.

(52)

pengguna, analisis perilaku, pengembangan dan perbaikan algoritma ataupun teknik rekomendasi itu sendiri. Teknologi rekomendasi ini didasarkan pada asumsi implisit bahwa kebutuhan pengguna dan preferensi mereka dapat dimodelkan dalam pemilihan produk tertentu dengan menerapkan algoritma atau teknik perekomendasian yang tepat dan pengetahuan (knowledge) yang diberikan ke sistem (Ricci, et al. 2011).

Menurut (Burke, 2000), mengelompokkan tiga tipe pendekatan dalam sistem rekomendasi: (a) collaborative filtering atau social-filtering, (b) content-based, (c) knowledge-based.

2.5. Personalized Recommendation Engine

Personalized recommendation engine merupakan teknik merekomendasikan sesuatu, bisa produk, artikel, atau apa saja kepada pengguna dengan memperhatikan perilaku atau aktivitas pengguna terhadap satu sistem yang mereka gunakan. Sistem mencatat interaction history setiap pengguna di sistem dan mempelajari preferensi tersebut terhadap produk, artikel, atau apa saja yang ingin dicari. Dalam hal minimnya preferensi pengguna terhadap sistem yang digunakan, sistem dapat langsung memberikan rekomendasi dengan mencari kesamaan dari preferensi pengguna lain yang mirip dengan satu pengguna tersebut.

2.6. Unified Modelling Language (UML)

(53)

menciptakan diagram yang merepresentasikan bagian tertentu, atau gambaran umum sistem yang akan dikembangkan.

Secara garis besar UML terbagi dalam dua tipe diagram, yaitu:

i) Diagram Struktur

Diagram struktur ini menangani visualisasi, spesifikasi, dan dokumentasi aspek statik dari satu sistem. Diagram struktur terdiri dari:

a. Diagram kelas (class diagram) b. Diagram objek (object diagram)

c. Diagram pengembangan (deployment diagram) d. Diagram komponen (component diagram)

ii) Diagram Perilaku

Diagram perilaku ini menangani visualisasi, spesifikasi, dan dokumentasi aspek dinamis dari satu sistem. Diagram perilaku ini terdiri dari:

a. Diagram use case (use case diagram) b. Diagram sekuens (sequence diagram) c. Diagram kolaborasi (collaboration diagram) d. Diagram state (state diagram)

e. Diagram aktifitas (activity diagram)

f. Diagram relasi entitas (entity relationship diagram)

2.6.1. Diagram use case

Diagram use case mendeskripsikan relasi dan kebutuhan antara kumpulan use case dan actor yang berkaitan di dalam proses. Elemen-elemen yang ada pada use case diagram:

(1) Use Case

Use case juga merupakan deskripsi dari interaksi antara pengguna sistem dan sistem itu sendiri. Use case merepresentasikan antarmuka eksternal sistem dan menentukan bentuk kebutuhan apa yang sistem harus lakukan.

(54)

(3) Setiap use case memiliki inisiator (contohnya, satu aktor)

(4) Setiap use case mengarah pada hasil yang relevan (business value)

Gambar 2.8 Use Case 2. Aktor

Aktor merupakan entitas eksternal (di luar sistem) yang berinteraksi dengan, yaitu siapa atau apa yang menggunakan sistem dengan melibatkan use case. Aktor bisa manusia ataupun sistem terotomatisasi. Aktor disini merepresentasikan peran (roles) dan bukan pemakai individu dari sistem. Aktor harus memiliki nama yang menyatakan peran. Misal pada gambar 2.x berikut.

Gambar 2.9 Contoh Aktor Pada Use Case Diagram

3. Keterhubungan (Relationship)

Relasi antar use case yang satu dengan yang lain berupa generalisasi use case yaitu: a. Include, perilaku use case merupakan bagian dari use case lain

[image:54.595.182.448.577.713.2]

b. Extend, perilaku use case memperluas use case yang lain

(55)

2.6.2. Spesifikasi use case

Spesifikasi use case merepresentasikan gambaran lengkap mengenai use case itu sendiri. Spesifikasi perekomendasian soal-soal di platform UVa online judge dilakukan berdasarkan caseyang ada pada use case diagram. Spesifikas use case terdiri dari:

a. Tujuan use case, memaparkan tujuan case yang terjadi b. Deskripsi, memaparkan apa yang terjadi pada case

c. Skenario, memaparkan cara kerja case mulai dari awal hingga akhir pada proses d. Kondisi awal, keadaan yang terjadi sebelum case berlangsung

e. Kondisi akhir, keadaan atau hasil akhir setelah case berlangsung

2.6.3. Sequence diagram

[image:55.595.109.525.526.766.2]

Diagram Sekuens menggambarkan pertukaran pesan atau interaksi yang terjadi antar objek di dalam dan di sekitar sistem (pengguna, tampilan, dan lainnya). Contohnya, pemanggilan fungsi antar objek pada situasi rentang waktu tententu secara spesifik. Berikut elemen-elemen yang terdapat dalam diagram sekuens.

Tabel 2.3 Elemen-elemen diagram sekuens

No Gambar Nama Penjelasan

1 Aktivasi Menggambarkan aktivitas

objek

2 Aktor Menggambarkan aktor suatu

objek

3 Boundary Berhubungan dengan proses

(56)

4 Controller Berhubungan dengan proses

5 Entity Berhubungan dengan input

output data

6 Message Arrow Menggambarkan alur

proses, perintah atau pengiriman data

7 Object Lifeline Membuat batasan objek

2.6.4. Activity diagram

[image:56.595.109.529.80.411.2]

Diagram aktivitas menggambarkan alur aktivitas dalam satu sistem. Diagram aktivitas merupakan bentuk khusus dari state diagram. Berikut elemen-elemen diagram aktivitas.

Tabel 2.4 Elemen-elemen Pada Diagram Aktivitas

Simbol Keterangan

Starting point

Ending point

Joining

(57)

Grouping

2.7. Penelitian Terdahulu

Penelitian mengenai rekomendasi soal-soal kompetisi pemrograman ini telah dilakukan sebelumnya oleh beberapa peneliti, diantaranya:

2.7.1. UVa toolkit

UVa toolkit (Greeve, 2005), merupakan situs yang menyediakan rekomendasi soal-soal yang ada di platform UVa online judge. Soal-soal yang direkomendasikan dikelompokkan berdasarkan teknik yang digunakan untuk menyelesaikan soal dan tingkat kesulitan soal. Rekomendasi soal-soal dilakukan secara manual dengan terlebih dahulu menyelesaikan soal dan mempelajari satu soal itu termasuk dalam kategori teknik penyelesaian mana dan masuk pada tingkat level mana. Pembobotan terhadap soal-soal ini masih subjektif terhadap pengembang situs dan opini dari forum.

2.7.2. UHunt - UVa hunting

(58)

2.7.3. Bailian – openjudge

Bailian open judge yang berarti “hundreds of practices” yang oleh penelitinya (Lin, et al. 2013) dikembangkan untuk platform latihan untuk persiapan kompetisi pemrograman yang ditujukan untuk pelajar-pelajar di Tiongkok. Tetapi pada pengembangannya, platform ini dirilis secara publik. Bailian online judge ini memiliki 4000+ arsip soal-soal dari berbagai kompetisi di dunia maupun soal-soal yang mereka desain khusus. Bailian online judge ini merekomendasikan soal-soalnya kepada pengguna dengan mempelajari preferensi dan perilaku pengguna terhadap sistem Bailian. Soal-soal yang direkomendasikan dibagi dalam grade 1 sampai 5, dimana grade menyatakan tingkat kesulitan soal-soal. Kemudian soal-soal dikategorikan berdasarkan kategori topik penyelesaian. Menariknya sistem Bailian ini adalah pengguna diranking tidak hanya berdasarkan banyaknya soal-soal yang dapat diselesaikan, tetapi juga dari poin yang didapat berdasarkan akumulasi soal-soal saat latihan, poin saat mengikuti satu virtual contest dan poin kontribusi seperti memberikan hint terhadap penyelesaian soal tertentu, atau sebagai problemsetter yang membuat soal baru untuk virtual contest berikutnya.

2.7.4. uDebug

(59)

BAB 1

PENDAHULUAN

1.1. Latar Belakang

Competitive programming merupakan terminologi untuk berbagai jenis kompetisi di bidang pemrograman. Kompetisi pemrograman ini bertujuan untuk menyelesaikan masalah-masalah dunia nyata yang solusinya dapat dimodelkan secara matematika dan algoritmik dan memrogramnya dalam bahasa pemrograman yang ditentukan berdasarkan aturan masing-masing kompetisi.

Soal-soal kompetisi pemrograman ini biasanya terdiri dari bagian-bagian seperti deskripsi masalah yang harus diselesaikan, format masukan program, dan hasil keluaran yang diharapkan (deskripsi soal, batas input/output sudah ditentukan). Kontestan harus menyelesaikannya dengan membuat program sebagai solusi dan melakukan submission

ke dalam sistem kompetisi. Solusi ini kemudian melalui tahap system grading dengan pengujian berbagai test data dari panitia sebagai syarat apakah solusi program kontestan benar menurut aturan lomba yang telah didefinisikan. Adapun hasil keluaran yang ditampilkan dari proses ini adalah accepted (sebagai tanda program yang dikumpulkan benar, wrong answer (jawaban tidak sesuai dengan aturan input/output yang diharapkan), time limit exceeded (program melebihi waktu eksekusi komputer server

yang sudah ditetapkan sebelumnya), dan berbagai peringatan lain.

(60)

diri untuk bisa lolos sampai ke tahap final. Tentunya karena disiplin ilmu ini sangat ketat dan kompetitif, diperlukan investasi waktu yang tidak sedikit untuk masa persiapannya.

Sering kali pelajar-pelajar mengalami kesulitan untuk memulai dari mana agar bisa menguasai topik-topik yang akan diujikan. Salah satu tempat berlatih untuk mengasah kemampuan menyelesaikan soal adalah dengan menyelesaikan arsip soal-soal kompetisi terdahulu yang ada di sistem online judges seperti UVa Online Judges, Sphere Online Judges, Live Archive, Top Coder, dan lain-lain. Bagi pemula, sering kali ketika mencoba berlatih dan menyelesaikan soal di platform ini merasa sangat frustasi dan membosankan karena tidak tahu soal mana yang terlebih dahulu diselesaikan, mana yang lebih mudah, atau mana yang sesuai dengan kemampuannya saat itu (Lin, et al. 2013). Oleh karena itu, penulis melakukan penelitian untuk membuat satu

complementary tool yang bisa merekomendasikan soal-soal yang akan dipakai berlatih.

Penelitian tentang rekomendasi soal-soal yang akan diselesaikan untuk berlatih dalam kompetisi pemrograman ini sudah pernah dilakukan sebelumnya. Di antaranya adalah uHunt (Halim, 2010). Tools ini menggunakan pendekatan rekomendasi berdasarkan preferensi soal-soal apa saja yang sudah diselesaikan seseorang dan merekomendasikan soal-soal apa yang akan diselesaikan. Kemudian soal-soal dikategorikan dalam berbagai topik, level soal, dan lain-lain.

(61)

1.2. Rumusan Masalah

Competitive programming, dalam proses persiapannya membutuhkan olah mental, pikiran, dan waktu yang panjang. Tingkat kesulitan soal-soal yang diujikan saat kompetisi sangat tinggi dan dalam perkembangannya bervariasi pada lingkup masalah-masalah nyata yang penyelesaiannya menggunakan pemodelan matematika dan solusi-solusi algoritmik. Oleh karena itu, rekomendasi next-solved problems ini dapat membantu dan mempermudah proses persiapan peserta dengan membuat basis

roadmap tracking of competitive programming.

1.3. Tujuan Penelitian

Tujuan penelitian ini adalah memberikan rekomendasi next-solved problems pada

platformonline judge dan mengelompokkan berbagai soal-soal dalam tingkat kesulitan, maupun kategori teknik penyelesaian soal untuk memudahkan pengguna dalam menyelesaikan masalah-masalah yang ada di level kompetisi.

1.4. Manfaat Penelitian

Adapun manfaat dilakukannya penelitian ini:

1. Sebagai tool alternat

Gambar

Tabel 3.2
Tabel 3.6
Gambar 3.2 Flowchart Tahapan Problemsets Processing
Gambar 3.3 Flowchart Tahapan Submissions History Pengguna
+7

Referensi

Dokumen terkait

Proses PTK harus melalui 4 (empat) tahap yang tersusun menjadi sebuah siklus, yaitu tahap perencanaan, pelaksanaan tindakan, pengamatan, dan refleksi (Jalil,

Pernyataan berikut yang BENAR untuk hubungan antara p dan q

halnya batang jagung, bila produksi tanaman aren meningkat maka ijuk yang. dihasilkan juga

Ketepatan struktur seperti struktur kelompok nominal dan porsi kepadatan leksikal yang baik memberikan pengaruh besar dalam menulis teks tertulis seperti naskah

Pada Tabel 4.2 dapat dilihat bahwa tingkat perputaran piutang adalah sebesar 2,5 kali, hal ini terjadi karena jika kita membandingkan antara penjualan dengan rata-rata

43,400 results Salah satu pihak yang mera- sa berkepentingan dalam penyusunan buku teks pelajaran sejarah di Indonesia pada periode Orde Baru adalah militer.. oyez.org oyez.org

30 Tahun 2002 tentang Komisi Pemberantasan Tindak Pidana Korupsi UU KPK bertentangan dengan UUD 1945, namun tetap mempunyai kekuatan hukum mengikat sampai diadakan perubahan

Penilaian aspek psikomotor yang dilakukan oleh guru dan siswa didasarkan pada unjuk kerja/ gerak yang ditunjukkan siswa selama proses pembelajaran.. Penilaian dilaksanakan