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

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