Rekomendasi -Solved Problems di Platform Kompetisi Pemrograman Menggunakan Recommendation Engine

7

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 masalahmasalah yang sudah didefinisikan dan didesain sebelumnya oleh pembuatnya
(problemsetter).


Masalah-masalah yang diselesaikan di competitive programming berbeda dari
masalah-masalah yang harus diselesaikan di bidang riset (Forisek, 2013). Pada masalahmasalah riset, solusi yang dibutuhkan bersifat masih belum dikenal dan/atau ditemukan.
Sedangkan pada masalah-masalah di competitive programming, semua problemset
sudah didesain sedemikian rupa dan sudah diselesaikan terlebih dahulu oleh pembuat
soal (problemsetter). Masalah ini dirancang untuk bisa terselesaikan dengan
menerapkan

satu

teknik

tertentu

di

disiplin

ilmu

komputer


dan

mengimplementasikannya dalam bahasa pemrograman yang diperbolehkan dalam
kompetisi.

Universitas Sumatera Utara

8

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

2013

Russia

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

Universitas Sumatera Utara


9

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)
SRM merupakan kompetisi online mingguan yang waktunya sekitar 2 jam. Setiap
peserta yang berkompetisi dibagi menjadi dalam dua divisi, division 1 dan division 2.

Biasanya para pemula akan berada di divisi 2 dan secara bertahap saat performanya
meningkat akan masuk divisi 1 (Topcoder, 2014). Tingkat kesulitan soal yang diberikan
dibedakan per divisinya. Setiap peserta yang berkompetisi dibagi-bagi berdasarkan
room. Setiap room terdiri dari 20 peserta. SRM ini dibagi menjadi empat fase:

Universitas Sumatera Utara

10

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
TopCoder Tournaments atau yang sering disebut TopCoder Open merupakan kompetisi
tahunan yang finalisnya berasal dari rangkaian seleksi SRM atau TCO round. Dua puluh
peserta dengan peringkat tertinggi akan berkompetisi di final TopCoder Open di Las
Vegas, USA.

Universitas Sumatera Utara

11

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 inputnya. 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
Facebook Hacker Cup merupakan kompetisi pemrograman tingkat dunia tahunan
dimana pesertanya saling berkompetisi untuk berada dalam kategori hall of fame di
Facebook yang disebut: fame, fortune, and glory (Facebook, 2015). Seperti ajang
lainnya – Google Code Jam dan TopCoder – ajang ini juga banyak digunakan untuk
proses penerimaan karyawan di perusahan-perusahaan teknologi (walk-in interview)
yang saling menguntungkan untuk keduanya, perusahaan dan programmer dan ajang
bertemunya programmer-programmer terbaik di dunia (Meetup Session).

Universitas Sumatera Utara

12

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

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%

2000

199523

71895

36.03%

0

0.00%

95173

47.70%

32455

16.27%

0

0.00%

Universitas Sumatera Utara

C++11

13

Tahun

Total

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.

ANSI C

JAVA

C++

PASCAL

C++11

Statistik UVa Online Judge

Data statistik UVa online judge

setiap tahunnya sangat fluktuatif dan frekuensi

pengguna yang tinggi mengakibatkan perkembangan data di platform ini menarik untuk
diteliti lebih lanjut (UVA, 2015). Berikut beberapa data statistik yang ada di UVa online
judge, mulai dari persebaran bahasa pemrograman yang sering digunakan, statistik page
views, pengunjung unik berdasarkan kota maupun negara, dan beberapa data lainnya
rentang tahun 2014.

Universitas Sumatera Utara

14

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
Pada gambar 2.2 berikut, tersaji data page views secara keseluruhan pengguna dan pada
gambar 2.3 adalah data page views pengguna unik. Berdasarkan gambar gambar 2.2 dan
gambar 2.3, terlihat bahwa page views tertinggi ada di kisaran bulan September-Oktober
dan Februari-Maret. Ini dikarenakan di bulan September-Oktober merupakan musim

Universitas Sumatera Utara

15

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
Pada gambar 2.4 berikut, tersaji data pengunjung unik rentang tahun 2014. Artinya,
terdapat 609151 pengguna terdaftar yang minimal masuk (log in) sekali ke sistem untuk
keperluan mengecek submission’s history atau mengerjakan soal, dan aktivitas lainnya.
Dari rentang tahun 2014 tersebut, pengunjung unik berada di kisaran rata-rata 3000+
setiap dua minggunya. Tetapi terdapat lonjakan data di rentang waktu 23 April – 12 Mei
2014. Hal ini dikarenakan mulai intensnya pengguna untuk persiapan world final ACM

Universitas Sumatera Utara

16

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.

Gambar 2.5

Statistik UVa Visits rentang tahun 2014 (UVA, 2014)

Universitas Sumatera Utara

17

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)

 92990 kunjungan

India

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
Tidak berbeda jauh dari statistik gambar 2.6, data yang tersaji pada gambar 2.7 berikut
merepresentasikan kunjungan berdasarkan kota di platform UVa online judge. Kotakota yang mendominasi adalah seperti kota Dhaka dan Khulna (Bangladesh), Cairo
(Egypt), Alexandria (US), Qingdao, Beijing, Shanghai (China), New Delhi (India), dan
Taipei City (Taiwan).

Universitas Sumatera Utara

18

Gambar 2.7

2.4.

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

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.

Membangun mesin rekomendasi yang baik membutuhkan usaha yang tinggi
terhadap ketersediaan data yang akan diolah seperti ketersediaan dataset, kebutuhan

Universitas Sumatera Utara

19

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)

Unified Modelling Language (UML) merupakan notasi atau diagram yang digunakan
untuk menjelaskan, memvisualisasikan, dan memodelkan dokumentasi sistem
perangkat lunak. UML bukan metode pengembangan (Nugroho, 2010). Yang berarti
UML tidak akan menjelaskan apa yang harus dilakukan pertama kali atau apa yang akan
dilakukan selanjutnya atau bagaimana mendesain satu sistem, tetapi UML berguna
untuk membantu memvisualisasikan desain dan komunikasi yang ada di perangkat
lunak. UML lebih cocok untuk desain perangkat lunak berorientasi objek (Fowler,
2003). UML terdiri dari banyak elemen model yang merepresentasikan bagian yang
berbeda dari satu sistem perangkat lunak. Elemen-elemen UML ini berguna untuk

Universitas Sumatera Utara

20

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.
Ada beberapa poin yang harus diperhatikan ketika membuat use case:
(2) Setiap use case berhubungan dengan paling tidak satu aktor

Universitas Sumatera Utara

21

(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
b. Extend, perilaku use case memperluas use case yang lain

Gambar 2.10

Keterhubungan

Universitas Sumatera Utara

22

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

Gambar

Elemen-elemen diagram sekuens
Nama
Aktivasi

Penjelasan
Menggambarkan

aktivitas

objek

2

Aktor

Menggambarkan aktor suatu
objek

3

Boundary

Berhubungan dengan proses
input

output

ataupun

interface

Universitas Sumatera Utara

23

4

Controller

Berhubungan dengan proses

5

Entity

Berhubungan dengan input
output data

Message Arrow

6

Menggambarkan

alur

proses,

atau

perintah

pengiriman data

Object Lifeline

7

Membuat batasan objek

2.6.4. Activity diagram
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
Forking

Universitas Sumatera Utara

24

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
Felix (Halim, 2010) mengembangkan tools yang sangat menarik dan kompleks.
Aplikasi ini merupakan complementary tool terbaik saat ini dalam merekomendasikan
soal-soal lomba di arsip UVa OJ. Soal-soal yang direkomendasikan berdasarkan
analisis statistik data seluruh pengguna dan interaksi terhadap soal yang diselesaikan
pengguna.

Dalam

pengembangannya,

Felix

menyediakan

API

(Application

Programming Interface) untuk mengakses seluruh data publik di platform UVa online
judge yang digunakan pada modul UHunt. API ini sangat membantu pengembang lain
untuk mengembangkan fitur-fitur baru yang berguna untuk memudahkan competitive
programmer dalam berlatih. Dalam penelitian ini, peneliti juga menggunakan API yang
dibangun sama persis seperti aplikasi UHunt.

Universitas Sumatera Utara

25

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
uDebug (uDebug, 2014), merupakan situs yang menyediakan unique test case berupa
input/ouput soal-soal UVa online judge. Saat ini, platform uDebug sudah menyediakan
sekitar 3880+ test case. Test case ini berguna bagi pengguna untuk membandingkan
hasil keluaran program yang dibuat dengan hasil keluaran yang benar menurut
autograding UVa sebelum melakukan submission ke sistem UVa online judge.
Pengujian test case ini sangat penting karena hidden test case lomba sering sekali
bersifat tricky dengan banyaknya test case yang harus dilewati program yang
dikumpulkan di webscoring (sering kali test case berjumlah ratusan hingga ribuan).
Sistem kompetisi pemrograman biasanya bersifat graded by machine yang artinya
dinilai oleh mesin yang berarti tidak mentolerir satu kesalahanpun. Sehingga sering kali
pengguna merasa frustasi saat program yang dikumpulkan tidak berhasil mendapatkan
accepted verdict.

Universitas Sumatera Utara