Rekomendasi -Solved Problems di Platform Kompetisi Pemrograman Menggunakan Recommendation Engine
REKOMENDASI NEXT-SOLVED P ROBLEMS DI P LATF ORM KOMPETISI
PEMROGRAMAN MENGGUNAKAN RECOMMENDATION ENGINE
SKRIPSI
FRANHEIT SANGAPTA MANULLANG
081402041
PROGRAM STUDI S1 TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2015
Universitas Sumatera Utara
REKOMENDASI NEXT-SOLVED P ROBLEMS DI P LATF ORM KOMPETISI
PEMROGRAMAN MENGGUNAKAN RECOMMENDATION ENGINE
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah
Sarjana Teknologi Informasi
FRANHEIT SANGAPTA MANULLANG
081402041
PROGRAM STUDI S1 TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2015
Universitas Sumatera Utara
PERSETUJUAN
Judul
: REKOMENDASI
PLATFORM
NEXT-SOLVED
KOMPETISI
PROBLEMS
DI
PEMROGRAMAN
MENGGUNAKAN RECOMMENDATION ENGINE
Kategori
: SKRIPSI
Nama
: FRANHEIT SANGAPTA MANULLANG
Nomor Induk Mahasiswa : 081402041
Program Studi
: TEKNOLOGI INFORMASI
Fakultas
: ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
Komisi Pembimbing
:
Pembimbing 2
Pembimbing 1
M. Fadly Syahputra, B.Sc., M.Sc.IT
Prof. Dr. Opim Salim Sitompul, M.Sc
NIP. 19830129 200912 1 003
NIP. 19610817 198701 1 001
Diketahui / disetujui oleh
Program Studi S1 Teknologi Informasi
Ketua,
Muhammad Anggia Muchtar, ST., MM.IT
NIP. 19800110 200801 1 01
Universitas Sumatera Utara
iii
PERNYATAAN
REKOMENDASI NEXT-SOLVED PROBLEMS DI PLATFORM KOMPETISI
PEMROGRAMAN MENGGUNAKAN RECOMMENDATION ENGINE
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa
kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan,
Agustus 2015
Franheit Sangapta M
081402041
Universitas Sumatera Utara
iv
UCAPAN TERIMA KASIH
Puji syukur penulis panjatkan kepada Allah Bapa Tuhan Yang Maha Esa, karena dengan
limpahan berkat dan kemuliaanNYA dengan berbagai cara yang agung penulis dapat
menyelesaikan penyusunan tugas akhir ini. Rasa syukur dan doa yang tak hentihentinya penulis daraskan karena dengan penyertaanNYA selalu, penulisan tugas akhir
ini dapat terselesaikan dengan baik.
Penulis juga menyadari bahwa penyusunan skripsi ini tidak lepas dari campur tangan
orang-orang yang Tuhan titipkan untuk menjadi motivasi.
1. Orang tua penulis, Riani Situmorang dan Marolop Y Manullang, terimakasih
mama dan bapak telah menjadi sumber kekuatan di setiap waktu. Juga kepada
keluarga Kakak Santi Christina Manullang dan Lae Eko P Rajagukguk beserta
calon pemimpin masa depan, Juan Trystan Rajagukguk. Juga kepada adik-adik
tercinta, Abdi Pistari Manullang, Desy Yumaida Manullang, Cindy Theresia
Manullang, dan keluarga abang Ebenezer Talumau Manullang dan Mauren
Situmorang.
2. Dosen pembimbing penulis, Prof. Dr. Opim Salim Sitompul, M.Sc, dan M Fadly
Syahputra, B.Sc., M.Sc.IT atas segala masukan dan bimbingan selama
penyusunan skripsi ini.
3. Bapak/Ibu dosen di Fasilkom-TI maupun MIPA yang telah mendidik penulis
mulai dari tidak tahu apa-apa sampai pada saat ini berjuang menjadi yang terbaik
untuk masyarakat banyak.
4. Yayasan Karya Salemba Empat – Pak Hengky, Pak Dadit, Pak Tatan Taufik,
Pak Mirza, Bu Amy Tantri serta founder dan dewan pembina dan yang menjadi
sosok inspirasi dan mengajarkan penulis banyak hal untuk melanjutkan
perjuangan dan menjadi pemimpin yang berakhlak.
5. PT Indofood Sukses Makmur – Pak Franky, Pak Christian Somali, Pak Deni
Puspahadi, Pak Sujarwo serta Bapak/Ibu yang tidak bisa penulis sebutkan satu
demi satu. Terkhusus Bapak/Ibu di Lonsum Sumut dan juga PT. SIMP yang
Universitas Sumatera Utara
v
memberikan banyak kesempatan mencicipi banyak pelatihan dan tentunya
menjadi orangtua bagi anak-anak BISMA.
6. Rekan-rekan di Camp BISMA – Beasiswa Indofood Sukses Makmur seIndonesia.
7. Rekan-rekan Paguyuban Karya Salemba Empat Universitas Sumatera Utara –
tempat berkeluh kesah, tempat mewujudkan mimpi, dan tempat untuk mencoba
banyak hal yang orang lain anggap tidak bisa.
8. Rekan-rekan se-angkatan dan adik-adik di Prodi Teknologi Informasi.
9. Teman seperjuangan di Asrama Putra KKB USU – bang Asril, Nanda Putra,
Reyhan Samantha, Billy Az-zahry, Putra, serta Salman.
10. Rekan-rekan dan mentor cyber underground dimanapun kalian berada. Finally,
I will be graduated, guys. Let’s hack the better world.
Penulis juga memohon maaf jika selama masa pendidikan strata satu ini penulis
melakukan kesalahan. Semoga Tuhan menyertai segala kebaikan dan kerendahan hati
untuk banyak pihak.
Dan juga semoga karya tulis ini memberikan kontribusi yang baik untuk kemajuan
pendidikan di tanah air tercinta.
Berkah Dalem.
Universitas Sumatera Utara
vi
ABSTRAK
Competitive programming merupakan istilah yang populer untuk berbagai level
kompetisi pemrograman di kalangan pelajar, mahasiswa, maupun profesional yang
menekuni bidang ilmu komputer dan teknologi informasi. Dalam kompetisi
pemrograman, peserta tidak hanya dituntut untuk menguasai bahasa pemrograman
secara mendalam, tetapi kemampuan pemecahan masalah dengan solusi yang sudah
diformulasikan sedemikian rupa, diterjemahkan dalam baris-baris kode dengan
mempertimbangkan kecepatan eksekusi program serta penggunaan memori komputer
seefisien mungkin. Dalam masa persiapannya, peserta biasanya mengalami berbagai
kendala teknis, misalnya, kesulitan untuk menemukan soal-soal yang menarik untuk
dipakai dalam berlatih. Apabila peserta mencoba soal-soal yang tingkat kesulitannya
jauh lebih tinggi dari kemampuan si peserta, biasanya peserta akan merasa frustasi
karena tidak bisa menyelesaikannya, sebaliknya apabila peserta mencoba soal-soal yang
jauh lebih rendah dari kemampuannya, si peserta akan merasa bosan dan proses
pengerjaan soal seterusnya menjadi tidak menarik. Oleh karena itu, penulis melakukan
penelitian untuk merekomendasikan soal-soal (next-solved problems) baik secara
kategori, tingkat kesulitan soal, maupun soal-soal yang menarik untuk dikerjakan untuk
persiapan dalam kompetisi pemrograman. Dalam penelitian ini, data soal-soal yang ada
diambil dari arsip soal-soal di UVa online judge. Penulis mempelajari preferensi setiap
peserta yang ada dalam online judge ini, kemudian dari proses pembelajaran preferensi
ini, didapat pola frekuensi soal-soal yang paling sering dicoba, soal-soal yang
dikategorikan sulit, dan rekomendasi lainnya. Proses rekomendasi soal-soal ini
menggunakan teknik recommendation engine.
Kata Kunci: competitive programming, uva online judge, recommendation engine.
Universitas Sumatera Utara
vii
ABSTRACT
Competitive programming is a popular term of programming competitions that vary on
difficulty levels among students, college students, and professional programmers that
pursue the computer science and information technology field. In programming
competitions, students not only need to master programming language in depth, but
sharpen the ability of problem solving in advanced and then the formulated solution
translates in line of codes taking into account both of the runtimes and the memory
limits efficiently. In the preparation phase, students usually encounter vary of technical
problems, for example, the difficulty of finding interesting problemsets to solve. If
students try a problem that the degree of its difficulty is much higher than student’s
ability, in common, they will frustrate because they can’t solve it. Otherwise, if the
degree of problem’s difficulty is lower than their ability, students will get bored and
solving the problemsets itself become unattractive. Therefore, the author tries to do a
research that recommend next-solved problems either in categories, levels of difficulty,
as well as the interesting problemsets to solve in preparation phase. In this research,
datasets are grabbed from the archives of problems in UVa online judge via UHunt API.
The author tries to learn the preferences of each participant in the online judge, and then
the learning process of user’s preferences obtained a pattern of problemset’s frequency
mostly tried, level of problemset difficulty, category of problems, and the others. This
recommendation of next-solved problems uses recommendation engine technique.
Keywords: competitive programming, uva online judge, recommendation engine
Universitas Sumatera Utara
viii
DAFTAR ISI
Persetujuan
iii
Pernyataan
iii
Ucapan Terima Kasih
iv
Abstrak
vi
Abstract
vii
Daftar Isi
viii
Daftar Tabel
xii
Daftar Istilah
xiii
Daftar Gambar
xiv
BAB 1
PENDAHULUAN
1
1.1.
Latar Belakang
1
1.2.
Rumusan Masalah
3
1.3.
Tujuan Penelitian
3
1.4.
Manfaat Penelitian
3
1.5.
Batasan Masalah
3
1.6.
Metodologi Penelitian
4
1.7.
Sistematika Penulisan
5
BAB 2
2.1.
LANDASAN TEORI
7
Competitive Programming
7
2.1.1.
ACM ICPC
8
2.1.2.
TopCoder
9
2.1.3.
Google Code Jam
11
2.1.4.
Facebook Hacker Cup
11
Universitas Sumatera Utara
ix
2.2.
2.2.1.
2.3.
12
Online Judges
UVa Online Judge
12
Statistik UVa Online Judge
13
2.3.1.
Persebaran bahasa pemrograman yang digunakan
14
2.3.2.
Statistik unique page views
14
2.3.3.
Statistik pengunjung unik
15
2.3.4.
Statistik data kunjungan rentang tahun 2014
16
2.3.5.
Statistik pengunjung berdasarkan negara
17
2.3.6.
Statistik pengunjung berdasarkan kota
17
2.4.
Recommendation Engine
18
2.5.
Personalized Recommendation Engine
19
2.6.
Unified Modelling Language (UML)
19
2.6.1.
Diagram use case
20
2.6.2.
Spesifikasi use case
22
2.6.3.
Sequence diagram
22
2.6.4.
Activity diagram
23
Penelitian Terdahulu
24
2.7.
2.7.1.
UVa toolkit
24
2.7.2.
UHunt - UVa hunting
24
2.7.3.
Bailian – openjudge
25
2.7.4.
uDebug
25
BAB 3
3.1.
METODOLOGI PENELITIAN
26
Analisis Data
26
3.1.1.
Dataset overviews
26
3.1.2.
Datasets grabbing untuk keperluan data testing
29
3.2.
Analisis Sistem
3.2.1.
30
Classifying Problems Based on Book Chapter
33
Universitas Sumatera Utara
x
3.2.2.
Problemsets Processing
38
3.2.3.
User’s Submissions Statistics
39
3.2.4.
Pembobotan Level Soal (Grading the Problemsets )
40
3.2.5.
Next-Solved Problems Recommendation
41
BAB 4
4.1.
ANALISIS DAN PERANCANGAN
44
Perancangan Sistem
44
4.1.1.
Diagram use case
44
4.1.2.
Definisi use case
45
4.2.
Perancangan Tampilan Antarmuka
46
4.2.1.
Rancangan tampilan halaman default username
46
4.2.2.
Rancangan halaman problem category
46
4.2.3.
Rancangan halaman problem categories secara detail
47
4.2.4.
Rancangan halaman profil pengguna
48
4.2.5.
Rancangan halaman status menu untuk live submissions
48
BAB 5
5.1.
IMPLEMENTASI DAN PENGUJIAN
50
Implementasi Sistem
50
5.1.1.
Spesifikasi perangkat keras dan perangkat lunak yang digunakan
50
5.1.2.
Tampilan Utama Menu Problem Category
51
5.1.3.
Implementasi rekomendasi next-solved problems soal-soal kompetisi 51
5.1.4.
Tampilan Menu Profil Pengguna
52
5.1.5.
Tampilan menu live submissions dari semua pengguna
52
5.1.6.
Tampilan pengelompokan next-solved problems berdasarkan volume soal
dan book chapter
5.1.7.
53
Tampilan pengelompokan next-solved problems berdasarkan volume soal
dan book chapter serta terurut berdasarkan distinct accepted user (dacu)
5.1.8.
54
Tampilan next-solved problems berdasarkan Competitive Programming
3rd Edition dan terutut berdasarkan dacu
54
Universitas Sumatera Utara
xi
5.2.
Pengujian Sistem
55
5.2.1.
Pengujian fungsionalitas antarmuka pengguna
5.2.2.
Tahapan training data problemsets dan history of user’s submissions 58
BAB 6
KESIMPULAN DAN SARAN
55
61
6.1.
Kesimpulan
61
6.2.
Saran
62
DAFTAR PUSTAKA
63
LAMPIRAN
65
Universitas Sumatera Utara
xii
DAFTAR TABEL
Hal
Tabel 2.1
Hasil world final rentang tahun 2010 – 2014 (ICPC, 2014)
Tabel 2.2
Statistik Tahunan Submissions di Platform UVa Online Judge (UVA,
8
2015)
12
Tabel 2.3
Elemen-elemen diagram sekuens
22
Tabel 2.4
Elemen-elemen Pada Diagram Aktivitas
23
Tabel 3.1
Kategori soal-soal UVa online judge berdasarkan book chapter
Competitive Programming 1st Edition (Halim, et al. 2010)
Tabel 3.2
Kategori soal-soal UVa online judge berdasarkan book chapter
Competitive Programming 2nd Edition (Halim, et al. 2011)
Tabel 3.3
36
Kategori soal-soal UVa online judge berdasarkan book chapter Art of
Programming Contest 1st Edition (Arefin, 2006)
Tabel 3.6
36
Kategori soal-soal UVa online judge berdasarkan book chapter Art of
Programming Contest 2nd Edition (Halim, et al. 2011)
Tabel 3.7
35
Kategori soal-soal UVa online judge berdasarkan Volume soal (UVA,
2014)
Tabel 3.5
35
Kategori soal-soal UVa online judge berdasarkan book chapter
Competitive Programming 3nd Edition (Halim, et al. 2013)
Tabel 3.4
34
37
Kategori soal-soal UVa online judge berdasarkan Training Guide Art of
Programming Contest (Arefin, 2006)
37
Tabel 3.8
Tabel Rekomendasi 25 Soal Berdasarkan Kalkulasi Nilai DACU
41
Tabel 4.1
Tabel Deskripsi Use Case
45
Tabel 5.1
Rencana Pengujian Komponen Antarmuka
56
Tabel 5.2
hasil pengujian halaman utama
56
Tabel 5.3
hasil pengujian profil pengguna
57
Tabel 5.4
Hasil pengujian halaman live submissions
57
Tabel 5.5
Hasil pengujian halaman default username
58
Universitas Sumatera Utara
xiii
DAFTAR ISTILAH
Auto judging
Juri
otomatis
atau
penilaian
kebenaran
program
yang
dikumpulkan ke sistem dilakukan oleh sistem itu sendiri dan nilai
kebenarannya (accepted, wrong answer, presentation error, timit
limit exceeded, dll) secara otomatis pula di kembalikan ke layar
Accepted verdict
Nilai kembalian yang bersifat tepat benar untuk setiap submission
yang dilakukan pengguna terhadap satu soal tertentu. Biasanya
ditandai dengan pemberian warna hijau untuk soal accepted
verdict dan warna merah untuk submission yang masih salah
(wrong answer, time limit, dll)
Competitive
Terminologi merujuk ke berbagai kompetisi pemrograman
programming
Dacu
Distinct accepted use r, bobot nilai setiap soal berdasarkan status
pengguna yang sudah menyelesaikan soal secara benar, dihitung
hanya dari submisi pertama yang benar setiap pengguna
Next-solved problems
Merujuk ke permasalahan/soal-soal kompetisi pemrograman
yang direkomendasikan untuk diselesaikan
Online judge
Basis
arsip
soal-soal
kompetisi
pemrograman,
bersifat
autograding terhadap submissions pengguna. OJ yang paling
terkenal diantaranya UVa, LiveArchive, PKU, SPOJ, Bailian,
TopCoder Algorithm, Codeforces, dll.
Problemsetter
Perancang soal untuk kompetisi pemrograman
Problemsolver
Orang yang menyelesaikan soal-soal
Test data
Berkas
input
output
yang
digunakan
dalam
kompetisi
pemrograman sebagai data uji untuk kebenaran program yang
dikumpulkan (submit) ke online judge
Verdict status
Nilai kembalian program pengguna setelah melakukan code
submissions yang berupa accepted, wrong answer, presentation
error, timit limi exceeded, memory limit exeeded .
Universitas Sumatera Utara
xiv
DAFTAR GAMBAR
Hal
Gambar 2.1
Persebaran Bahasa Pemrograman yang Digunakan (UVA, 2014)
14
Gambar 2.2
UVa Page Views Rentang Tahun 2014 (UVA, 2014)
15
Gambar 2.3
UVa Unique Page Views (UVA, 2014)
15
Gambar 2.4
Statistik UVa Unique Visitors rentang tahun 2014 (UVA, 2014)
16
Gambar 2.5
Statistik UVa Visits rentang tahun 2014 (UVA, 2014)
16
Gambar 2.6
UVa Visits by Country rentang tahun 2014 (UVA, 2014)
17
Gambar 2.7
UVa Visits by City rentang tahun 2014 (UVA, 2014)
18
Gambar 2.8
Use Case
21
Gambar 2.9
Contoh Aktor Pada Use Case Diagram
21
Gambar 2.10 Keterhubungan
21
Gambar 3.1
Arsitektur Umum Sistem
31
Gambar 3.2
Flowchart Tahapan Problemsets Processing
38
Gambar 3.3
Flowchart Tahapan Submissions History Pengguna
39
Gambar 3.4
Flowchart Next-solved Problems
41
Gambar 4.1
diagram use case
44
Gambar 4.2
Rancangan halaman default username
46
Gambar 4.3 Rancangan halaman problem category dan detail soal
Gambar 4.4
47
Rancangan sub bagian menu kategori soal berdasarkan chapter book
dan volume soal
47
Gambar 4.5 Rancangan halaman detail profil pengguna dan pengguna lain
yang ditambahkan ke sistem
48
Gambar 4.6 Rancangan halaman status live submissions yang dilakukan semua
pengguna di sistem UVa online judge
49
Gambar 5.1
Tampilan halaman menu problem category
51
Gambar 5.2
Tampilan menu profiles pengguna dan pengguna lain
52
Gambar 5.3 Tampilan menu live submissions dari semua pengguna
Gambar 5.4
52
Tampilan next-solved problems berdasarkan pengelompokan soal
berdasarkan volume soal dan book chapter
53
Universitas Sumatera Utara
xv
Gambar 5.5
Tampilan pengelompokan next-solved berdasarkan volume, chapter
book, dan distinct accepted users
Gambar 5.6
54
Tampilan next-solved problems berdasarkan Competitive Programming
3rd Edition dan terutut berdasarkan nilai dacu
55
Gambar 5.7
Tampilan kategori soal berdasarkan volume soal
58
Gambar 5.8
Tampilan kategori soal berdasarkan buku competitive programming
3rd
59
Universitas Sumatera Utara
PEMROGRAMAN MENGGUNAKAN RECOMMENDATION ENGINE
SKRIPSI
FRANHEIT SANGAPTA MANULLANG
081402041
PROGRAM STUDI S1 TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2015
Universitas Sumatera Utara
REKOMENDASI NEXT-SOLVED P ROBLEMS DI P LATF ORM KOMPETISI
PEMROGRAMAN MENGGUNAKAN RECOMMENDATION ENGINE
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah
Sarjana Teknologi Informasi
FRANHEIT SANGAPTA MANULLANG
081402041
PROGRAM STUDI S1 TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2015
Universitas Sumatera Utara
PERSETUJUAN
Judul
: REKOMENDASI
PLATFORM
NEXT-SOLVED
KOMPETISI
PROBLEMS
DI
PEMROGRAMAN
MENGGUNAKAN RECOMMENDATION ENGINE
Kategori
: SKRIPSI
Nama
: FRANHEIT SANGAPTA MANULLANG
Nomor Induk Mahasiswa : 081402041
Program Studi
: TEKNOLOGI INFORMASI
Fakultas
: ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
Komisi Pembimbing
:
Pembimbing 2
Pembimbing 1
M. Fadly Syahputra, B.Sc., M.Sc.IT
Prof. Dr. Opim Salim Sitompul, M.Sc
NIP. 19830129 200912 1 003
NIP. 19610817 198701 1 001
Diketahui / disetujui oleh
Program Studi S1 Teknologi Informasi
Ketua,
Muhammad Anggia Muchtar, ST., MM.IT
NIP. 19800110 200801 1 01
Universitas Sumatera Utara
iii
PERNYATAAN
REKOMENDASI NEXT-SOLVED PROBLEMS DI PLATFORM KOMPETISI
PEMROGRAMAN MENGGUNAKAN RECOMMENDATION ENGINE
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa
kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan,
Agustus 2015
Franheit Sangapta M
081402041
Universitas Sumatera Utara
iv
UCAPAN TERIMA KASIH
Puji syukur penulis panjatkan kepada Allah Bapa Tuhan Yang Maha Esa, karena dengan
limpahan berkat dan kemuliaanNYA dengan berbagai cara yang agung penulis dapat
menyelesaikan penyusunan tugas akhir ini. Rasa syukur dan doa yang tak hentihentinya penulis daraskan karena dengan penyertaanNYA selalu, penulisan tugas akhir
ini dapat terselesaikan dengan baik.
Penulis juga menyadari bahwa penyusunan skripsi ini tidak lepas dari campur tangan
orang-orang yang Tuhan titipkan untuk menjadi motivasi.
1. Orang tua penulis, Riani Situmorang dan Marolop Y Manullang, terimakasih
mama dan bapak telah menjadi sumber kekuatan di setiap waktu. Juga kepada
keluarga Kakak Santi Christina Manullang dan Lae Eko P Rajagukguk beserta
calon pemimpin masa depan, Juan Trystan Rajagukguk. Juga kepada adik-adik
tercinta, Abdi Pistari Manullang, Desy Yumaida Manullang, Cindy Theresia
Manullang, dan keluarga abang Ebenezer Talumau Manullang dan Mauren
Situmorang.
2. Dosen pembimbing penulis, Prof. Dr. Opim Salim Sitompul, M.Sc, dan M Fadly
Syahputra, B.Sc., M.Sc.IT atas segala masukan dan bimbingan selama
penyusunan skripsi ini.
3. Bapak/Ibu dosen di Fasilkom-TI maupun MIPA yang telah mendidik penulis
mulai dari tidak tahu apa-apa sampai pada saat ini berjuang menjadi yang terbaik
untuk masyarakat banyak.
4. Yayasan Karya Salemba Empat – Pak Hengky, Pak Dadit, Pak Tatan Taufik,
Pak Mirza, Bu Amy Tantri serta founder dan dewan pembina dan yang menjadi
sosok inspirasi dan mengajarkan penulis banyak hal untuk melanjutkan
perjuangan dan menjadi pemimpin yang berakhlak.
5. PT Indofood Sukses Makmur – Pak Franky, Pak Christian Somali, Pak Deni
Puspahadi, Pak Sujarwo serta Bapak/Ibu yang tidak bisa penulis sebutkan satu
demi satu. Terkhusus Bapak/Ibu di Lonsum Sumut dan juga PT. SIMP yang
Universitas Sumatera Utara
v
memberikan banyak kesempatan mencicipi banyak pelatihan dan tentunya
menjadi orangtua bagi anak-anak BISMA.
6. Rekan-rekan di Camp BISMA – Beasiswa Indofood Sukses Makmur seIndonesia.
7. Rekan-rekan Paguyuban Karya Salemba Empat Universitas Sumatera Utara –
tempat berkeluh kesah, tempat mewujudkan mimpi, dan tempat untuk mencoba
banyak hal yang orang lain anggap tidak bisa.
8. Rekan-rekan se-angkatan dan adik-adik di Prodi Teknologi Informasi.
9. Teman seperjuangan di Asrama Putra KKB USU – bang Asril, Nanda Putra,
Reyhan Samantha, Billy Az-zahry, Putra, serta Salman.
10. Rekan-rekan dan mentor cyber underground dimanapun kalian berada. Finally,
I will be graduated, guys. Let’s hack the better world.
Penulis juga memohon maaf jika selama masa pendidikan strata satu ini penulis
melakukan kesalahan. Semoga Tuhan menyertai segala kebaikan dan kerendahan hati
untuk banyak pihak.
Dan juga semoga karya tulis ini memberikan kontribusi yang baik untuk kemajuan
pendidikan di tanah air tercinta.
Berkah Dalem.
Universitas Sumatera Utara
vi
ABSTRAK
Competitive programming merupakan istilah yang populer untuk berbagai level
kompetisi pemrograman di kalangan pelajar, mahasiswa, maupun profesional yang
menekuni bidang ilmu komputer dan teknologi informasi. Dalam kompetisi
pemrograman, peserta tidak hanya dituntut untuk menguasai bahasa pemrograman
secara mendalam, tetapi kemampuan pemecahan masalah dengan solusi yang sudah
diformulasikan sedemikian rupa, diterjemahkan dalam baris-baris kode dengan
mempertimbangkan kecepatan eksekusi program serta penggunaan memori komputer
seefisien mungkin. Dalam masa persiapannya, peserta biasanya mengalami berbagai
kendala teknis, misalnya, kesulitan untuk menemukan soal-soal yang menarik untuk
dipakai dalam berlatih. Apabila peserta mencoba soal-soal yang tingkat kesulitannya
jauh lebih tinggi dari kemampuan si peserta, biasanya peserta akan merasa frustasi
karena tidak bisa menyelesaikannya, sebaliknya apabila peserta mencoba soal-soal yang
jauh lebih rendah dari kemampuannya, si peserta akan merasa bosan dan proses
pengerjaan soal seterusnya menjadi tidak menarik. Oleh karena itu, penulis melakukan
penelitian untuk merekomendasikan soal-soal (next-solved problems) baik secara
kategori, tingkat kesulitan soal, maupun soal-soal yang menarik untuk dikerjakan untuk
persiapan dalam kompetisi pemrograman. Dalam penelitian ini, data soal-soal yang ada
diambil dari arsip soal-soal di UVa online judge. Penulis mempelajari preferensi setiap
peserta yang ada dalam online judge ini, kemudian dari proses pembelajaran preferensi
ini, didapat pola frekuensi soal-soal yang paling sering dicoba, soal-soal yang
dikategorikan sulit, dan rekomendasi lainnya. Proses rekomendasi soal-soal ini
menggunakan teknik recommendation engine.
Kata Kunci: competitive programming, uva online judge, recommendation engine.
Universitas Sumatera Utara
vii
ABSTRACT
Competitive programming is a popular term of programming competitions that vary on
difficulty levels among students, college students, and professional programmers that
pursue the computer science and information technology field. In programming
competitions, students not only need to master programming language in depth, but
sharpen the ability of problem solving in advanced and then the formulated solution
translates in line of codes taking into account both of the runtimes and the memory
limits efficiently. In the preparation phase, students usually encounter vary of technical
problems, for example, the difficulty of finding interesting problemsets to solve. If
students try a problem that the degree of its difficulty is much higher than student’s
ability, in common, they will frustrate because they can’t solve it. Otherwise, if the
degree of problem’s difficulty is lower than their ability, students will get bored and
solving the problemsets itself become unattractive. Therefore, the author tries to do a
research that recommend next-solved problems either in categories, levels of difficulty,
as well as the interesting problemsets to solve in preparation phase. In this research,
datasets are grabbed from the archives of problems in UVa online judge via UHunt API.
The author tries to learn the preferences of each participant in the online judge, and then
the learning process of user’s preferences obtained a pattern of problemset’s frequency
mostly tried, level of problemset difficulty, category of problems, and the others. This
recommendation of next-solved problems uses recommendation engine technique.
Keywords: competitive programming, uva online judge, recommendation engine
Universitas Sumatera Utara
viii
DAFTAR ISI
Persetujuan
iii
Pernyataan
iii
Ucapan Terima Kasih
iv
Abstrak
vi
Abstract
vii
Daftar Isi
viii
Daftar Tabel
xii
Daftar Istilah
xiii
Daftar Gambar
xiv
BAB 1
PENDAHULUAN
1
1.1.
Latar Belakang
1
1.2.
Rumusan Masalah
3
1.3.
Tujuan Penelitian
3
1.4.
Manfaat Penelitian
3
1.5.
Batasan Masalah
3
1.6.
Metodologi Penelitian
4
1.7.
Sistematika Penulisan
5
BAB 2
2.1.
LANDASAN TEORI
7
Competitive Programming
7
2.1.1.
ACM ICPC
8
2.1.2.
TopCoder
9
2.1.3.
Google Code Jam
11
2.1.4.
Facebook Hacker Cup
11
Universitas Sumatera Utara
ix
2.2.
2.2.1.
2.3.
12
Online Judges
UVa Online Judge
12
Statistik UVa Online Judge
13
2.3.1.
Persebaran bahasa pemrograman yang digunakan
14
2.3.2.
Statistik unique page views
14
2.3.3.
Statistik pengunjung unik
15
2.3.4.
Statistik data kunjungan rentang tahun 2014
16
2.3.5.
Statistik pengunjung berdasarkan negara
17
2.3.6.
Statistik pengunjung berdasarkan kota
17
2.4.
Recommendation Engine
18
2.5.
Personalized Recommendation Engine
19
2.6.
Unified Modelling Language (UML)
19
2.6.1.
Diagram use case
20
2.6.2.
Spesifikasi use case
22
2.6.3.
Sequence diagram
22
2.6.4.
Activity diagram
23
Penelitian Terdahulu
24
2.7.
2.7.1.
UVa toolkit
24
2.7.2.
UHunt - UVa hunting
24
2.7.3.
Bailian – openjudge
25
2.7.4.
uDebug
25
BAB 3
3.1.
METODOLOGI PENELITIAN
26
Analisis Data
26
3.1.1.
Dataset overviews
26
3.1.2.
Datasets grabbing untuk keperluan data testing
29
3.2.
Analisis Sistem
3.2.1.
30
Classifying Problems Based on Book Chapter
33
Universitas Sumatera Utara
x
3.2.2.
Problemsets Processing
38
3.2.3.
User’s Submissions Statistics
39
3.2.4.
Pembobotan Level Soal (Grading the Problemsets )
40
3.2.5.
Next-Solved Problems Recommendation
41
BAB 4
4.1.
ANALISIS DAN PERANCANGAN
44
Perancangan Sistem
44
4.1.1.
Diagram use case
44
4.1.2.
Definisi use case
45
4.2.
Perancangan Tampilan Antarmuka
46
4.2.1.
Rancangan tampilan halaman default username
46
4.2.2.
Rancangan halaman problem category
46
4.2.3.
Rancangan halaman problem categories secara detail
47
4.2.4.
Rancangan halaman profil pengguna
48
4.2.5.
Rancangan halaman status menu untuk live submissions
48
BAB 5
5.1.
IMPLEMENTASI DAN PENGUJIAN
50
Implementasi Sistem
50
5.1.1.
Spesifikasi perangkat keras dan perangkat lunak yang digunakan
50
5.1.2.
Tampilan Utama Menu Problem Category
51
5.1.3.
Implementasi rekomendasi next-solved problems soal-soal kompetisi 51
5.1.4.
Tampilan Menu Profil Pengguna
52
5.1.5.
Tampilan menu live submissions dari semua pengguna
52
5.1.6.
Tampilan pengelompokan next-solved problems berdasarkan volume soal
dan book chapter
5.1.7.
53
Tampilan pengelompokan next-solved problems berdasarkan volume soal
dan book chapter serta terurut berdasarkan distinct accepted user (dacu)
5.1.8.
54
Tampilan next-solved problems berdasarkan Competitive Programming
3rd Edition dan terutut berdasarkan dacu
54
Universitas Sumatera Utara
xi
5.2.
Pengujian Sistem
55
5.2.1.
Pengujian fungsionalitas antarmuka pengguna
5.2.2.
Tahapan training data problemsets dan history of user’s submissions 58
BAB 6
KESIMPULAN DAN SARAN
55
61
6.1.
Kesimpulan
61
6.2.
Saran
62
DAFTAR PUSTAKA
63
LAMPIRAN
65
Universitas Sumatera Utara
xii
DAFTAR TABEL
Hal
Tabel 2.1
Hasil world final rentang tahun 2010 – 2014 (ICPC, 2014)
Tabel 2.2
Statistik Tahunan Submissions di Platform UVa Online Judge (UVA,
8
2015)
12
Tabel 2.3
Elemen-elemen diagram sekuens
22
Tabel 2.4
Elemen-elemen Pada Diagram Aktivitas
23
Tabel 3.1
Kategori soal-soal UVa online judge berdasarkan book chapter
Competitive Programming 1st Edition (Halim, et al. 2010)
Tabel 3.2
Kategori soal-soal UVa online judge berdasarkan book chapter
Competitive Programming 2nd Edition (Halim, et al. 2011)
Tabel 3.3
36
Kategori soal-soal UVa online judge berdasarkan book chapter Art of
Programming Contest 1st Edition (Arefin, 2006)
Tabel 3.6
36
Kategori soal-soal UVa online judge berdasarkan book chapter Art of
Programming Contest 2nd Edition (Halim, et al. 2011)
Tabel 3.7
35
Kategori soal-soal UVa online judge berdasarkan Volume soal (UVA,
2014)
Tabel 3.5
35
Kategori soal-soal UVa online judge berdasarkan book chapter
Competitive Programming 3nd Edition (Halim, et al. 2013)
Tabel 3.4
34
37
Kategori soal-soal UVa online judge berdasarkan Training Guide Art of
Programming Contest (Arefin, 2006)
37
Tabel 3.8
Tabel Rekomendasi 25 Soal Berdasarkan Kalkulasi Nilai DACU
41
Tabel 4.1
Tabel Deskripsi Use Case
45
Tabel 5.1
Rencana Pengujian Komponen Antarmuka
56
Tabel 5.2
hasil pengujian halaman utama
56
Tabel 5.3
hasil pengujian profil pengguna
57
Tabel 5.4
Hasil pengujian halaman live submissions
57
Tabel 5.5
Hasil pengujian halaman default username
58
Universitas Sumatera Utara
xiii
DAFTAR ISTILAH
Auto judging
Juri
otomatis
atau
penilaian
kebenaran
program
yang
dikumpulkan ke sistem dilakukan oleh sistem itu sendiri dan nilai
kebenarannya (accepted, wrong answer, presentation error, timit
limit exceeded, dll) secara otomatis pula di kembalikan ke layar
Accepted verdict
Nilai kembalian yang bersifat tepat benar untuk setiap submission
yang dilakukan pengguna terhadap satu soal tertentu. Biasanya
ditandai dengan pemberian warna hijau untuk soal accepted
verdict dan warna merah untuk submission yang masih salah
(wrong answer, time limit, dll)
Competitive
Terminologi merujuk ke berbagai kompetisi pemrograman
programming
Dacu
Distinct accepted use r, bobot nilai setiap soal berdasarkan status
pengguna yang sudah menyelesaikan soal secara benar, dihitung
hanya dari submisi pertama yang benar setiap pengguna
Next-solved problems
Merujuk ke permasalahan/soal-soal kompetisi pemrograman
yang direkomendasikan untuk diselesaikan
Online judge
Basis
arsip
soal-soal
kompetisi
pemrograman,
bersifat
autograding terhadap submissions pengguna. OJ yang paling
terkenal diantaranya UVa, LiveArchive, PKU, SPOJ, Bailian,
TopCoder Algorithm, Codeforces, dll.
Problemsetter
Perancang soal untuk kompetisi pemrograman
Problemsolver
Orang yang menyelesaikan soal-soal
Test data
Berkas
input
output
yang
digunakan
dalam
kompetisi
pemrograman sebagai data uji untuk kebenaran program yang
dikumpulkan (submit) ke online judge
Verdict status
Nilai kembalian program pengguna setelah melakukan code
submissions yang berupa accepted, wrong answer, presentation
error, timit limi exceeded, memory limit exeeded .
Universitas Sumatera Utara
xiv
DAFTAR GAMBAR
Hal
Gambar 2.1
Persebaran Bahasa Pemrograman yang Digunakan (UVA, 2014)
14
Gambar 2.2
UVa Page Views Rentang Tahun 2014 (UVA, 2014)
15
Gambar 2.3
UVa Unique Page Views (UVA, 2014)
15
Gambar 2.4
Statistik UVa Unique Visitors rentang tahun 2014 (UVA, 2014)
16
Gambar 2.5
Statistik UVa Visits rentang tahun 2014 (UVA, 2014)
16
Gambar 2.6
UVa Visits by Country rentang tahun 2014 (UVA, 2014)
17
Gambar 2.7
UVa Visits by City rentang tahun 2014 (UVA, 2014)
18
Gambar 2.8
Use Case
21
Gambar 2.9
Contoh Aktor Pada Use Case Diagram
21
Gambar 2.10 Keterhubungan
21
Gambar 3.1
Arsitektur Umum Sistem
31
Gambar 3.2
Flowchart Tahapan Problemsets Processing
38
Gambar 3.3
Flowchart Tahapan Submissions History Pengguna
39
Gambar 3.4
Flowchart Next-solved Problems
41
Gambar 4.1
diagram use case
44
Gambar 4.2
Rancangan halaman default username
46
Gambar 4.3 Rancangan halaman problem category dan detail soal
Gambar 4.4
47
Rancangan sub bagian menu kategori soal berdasarkan chapter book
dan volume soal
47
Gambar 4.5 Rancangan halaman detail profil pengguna dan pengguna lain
yang ditambahkan ke sistem
48
Gambar 4.6 Rancangan halaman status live submissions yang dilakukan semua
pengguna di sistem UVa online judge
49
Gambar 5.1
Tampilan halaman menu problem category
51
Gambar 5.2
Tampilan menu profiles pengguna dan pengguna lain
52
Gambar 5.3 Tampilan menu live submissions dari semua pengguna
Gambar 5.4
52
Tampilan next-solved problems berdasarkan pengelompokan soal
berdasarkan volume soal dan book chapter
53
Universitas Sumatera Utara
xv
Gambar 5.5
Tampilan pengelompokan next-solved berdasarkan volume, chapter
book, dan distinct accepted users
Gambar 5.6
54
Tampilan next-solved problems berdasarkan Competitive Programming
3rd Edition dan terutut berdasarkan nilai dacu
55
Gambar 5.7
Tampilan kategori soal berdasarkan volume soal
58
Gambar 5.8
Tampilan kategori soal berdasarkan buku competitive programming
3rd
59
Universitas Sumatera Utara