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