BAB 2 LANDASAN TEORI

dokumen-dokumen yang mirip
BAB 1 PENDAHULUAN Latar Belakang

MAKALAH ANALISIS & PERANCANGAN SISTEM II USE CASE DIAGRAM

BAB II LANDASAN TEORI

BAB III METODOLOGI PENELITIAN

BAB II TINJAUAN PUSTAKA. yang ditandai dengan saling berhubungan dan mempunyai satu fungsi atau tujuan

RULE BOOK IDEAFUSE 2018 ACM ICPC Multi-Provincial Programming Contest

BAB II TINJAUAN PUSTAKA

Unified Modelling Language UML

BAB II LANDASAN TEORI

UML & USE CASE DIAGRAM. Oleh : Bambang Hermawan, S.Si

RULE BOOK IDEAFUSE 2017 ACM ICPC Multi-Provincial Programming Contest

Perancangan Sistem Informasi Penjualan dan Inventori pada PT. Oriental Chitra International

BAB 2 LANDASAN TEORI

Kuliah#3 TSK-612 Sistem Embedded Terdistribusi - TA 2011/2012. Eko Didik Widianto

Gambar 4.1 Flowchart

BAB II LANDASAN TEORI

BAB III ANALISIS DAN PERANCANGAN SISTEM

BAB III OBJEK DAN METODOLOGI PENELITIAN. sesuai dengan pendapat Sugiyono (2003:58) mendefinisikan bahwa:

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Yuli Purwati, M.Kom USE CASE DIAGRAM

UML & USE CASE DIAGRAM. Oleh : Bambang Hermawan, S.Si

BAB III OBJEK DAN METODE PENELITIAN

PENJURIAN ONLINE BERBASIS WEB SERVICE

BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI

BAB IV ANALISIS DAN PERANCANGAN SISTEM. sistem yang telah ada, dimana analisis sistem merupakan proses mempelajari suatu

PEMBANGUNAN APLIKASI PENCATATAN PENANGANAN GANGGUAN PT. TELKOM REGIONAL BANDUNG

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB III BAB IV Class Diagram... II Sequence Diagram... II Colaboration Digram... II Activity Diagram... II S

BAB III METODE PENELITIAN

Kegunaan tahap ini adalah untuk memobilisasi dan mengorganisir g SDM yang akan melakukan Reengineering


Disain System Berorientasi Objek (Unified Modeling Language) ( Studi Kasus : Sistem Informasi Manajemen Perpustakaan )

Unified Modeling Language

BAB II TINJAUAN PUSTAKA

ABSTRAK. Kata kunci : voucher elektronik SMS (Short Message Service)

BAB IV ANALISA DAN PERANCANGAN SISTEM Analisis Sistem yang Sedang Berjalan. Untuk merancang sebuah aplikasi mobile pelajaran Kimia dasar untuk

REKOMENDASI NEXT-SOLVED PROBLEMS DI PLATFORM KOMPETISI PEMROGRAMAN MENGGUNAKAN RECOMMENDATION ENGINE SKRIPSI FRANHEIT SANGAPTA MANULLANG

Lampiran 1 - Pengenalan terhadap UML (Unified Model Language)

BAB III OBJEK DAN METODE PENELITIAN. tempat sanggar seni mayang sari di bandung dimana terletak di jalan Moch Toha

RULE BOOK ACM-ICPC 2017 ACM ICPC Maranatha Provincial Programming Contest

REKAYASA PERANGKAT LUNAK. 3 sks Sri Rezeki Candra Nursari reezeki2011.wordpress.com

Gambar Use Case Diagram


DAFTAR ISI... Halaman ABSTRAKSI... KATA PENGANTAR... DAFTAR TABEL... DAFTAR GAMBAR... DAFTAR LAMPIRAN... BAB I PENDAHULUAN... 1

BAB II LANDASAN TEORI

DAFTAR SIMBOL. Yaitu Memperlihatkan Hubungan-hubungan yang terjadi antara actor-aktor SIMBOL NAMA KETERANGAN. Aktor. Use Case.

BAB I PENDAHULUAN 1.1 Latar Belakang

lainnya. Android juga menggunakan sistem layar sentuh (touch screen) yang memudahkan pelanggan dalam penanganan navigasinya. Para pelaku bisnis telah

DAFTAR ISTILAH. Activity Diagram

BAB IV ANALISIS DAN PERANCANGAN SISTEM. hasil analisis ini digambarkan dan didokumentasiakan dengan metodologi

PEMANFAATAN ARDUINO DALAM PENGEMBANGAN SISTEM RUMAH PINTAR BERBASIS MOBILE DAN WEB (Studi Kasus : Penjadwalan Lampu Rumah)

BAB IV ANALISIS DAN PERANCANGAN SISTEM. Kegiatan analisis sistem yang berjalan dilakukan dengan analisis yang

PERANGKAT LUNAK PENJUALAN BERBASIS WEB (E-COMMERCE) DI PETERNAKAN AYAM HIAS PARENGNA

PEMBANGUNAN APLIKASI NEWS AGGREGATOR BERBASIS ANDROID DILENGKAPI FITUR BERITA PILIHAN

Pemodelan Berorientasi Objek

BAB II TINJAUAN PUSTAKA. uang, dan informasi. Sumber daya tersebut bekerjasama menuju

1. Pendahuluan 1.1. Latar Belakang Masalah

BAB I PENDAHULUAN. 1.1 Latar Belakang Masalah

BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI

BAB IV ANALISA DAN PERANCANGAN SISTEM. Adapun analisis sistem akan dilakukan pada bagian gudang ruang lingkup

I.2 Identifikasi Masalah... I-2. I.3 Rumusan Masalah... I-2. I.4 Tujuan... I-3. I.5 Manfaat... I-3. I.6 Batasan Masalah... I-3

BAB III LANDASAN TEORI

IMPLEMENTASI ALGORITMA MINIMAX PADA PERMAINAN TIC-TAC-TOE SKALA 9X9

SEJARAH UML DAN JENISNYA

BAB II LANDASAN TEORI

PENGANTAR RUP & UML. Pertemuan 2

BAB 1 PENDAHULUAN. universitas maka dibutuhkan pula sebuah sistem untuk mendukung proses

Rancang Bangun Aplikasi Manajemen Data Siswa (Studi Kasus SMK Negeri 1 Karawang)

SISTEM MONITORING PENGANTARAN OBAT PADA PT. XYZ DENGAN PEMROGRAMAN JAVA ANDROID DAN WEB

BAB II LANDASAN TEORI

BAB III METODOLOGI PENELITIAN. Tabel 3.1 Alur Metodologi Penelitian

7

BAB II TINJAUAN PUSTAKA

II.3.5 Statechart Diagram... II-14 II.3.6 Activity Diagram... II-15 II.3.7 Component Diagram... II-16 II.3.8 Deployment Diagram... II-16 II.3.

BAB II LANDASAN TEORI

DAFTAR ISI... LEMBAR JUDUL LEMBAR PENGESAHAN... SURAT PERNYATAAN... ABSTRAK... ABSTRACT... KATA PENGANTAR... DAFTAR TABEL... DAFTAR GAMBAR...

DAFTAR ISI HALAMAN JUDUL PERTAMA

BAB IV ANALISIS DAN PERANCANGAN SISTEM

Pemodelan Berorientasi Objek

BAB IV ANALISIS DAN PERANCANGAN SISTEM. dimaksudkan untuk menitik beratkan kepada fungsi sistem yang berjalan dengan

Diagram Use Case. Pertemuan 3

53 Gambar 4. 1 Proses Bisnis sistem yang sedang berjalan Keterangan: 1. Peminjam wajib menyerahkan kwitansi atau bukti transaksi. 2. Staff admin memer

BAB III ANALISIS DAN PERANCANGAN

BAB III OBJEK DAN METODE PENELITIAN. Dengan demikian objek yang akan penulis kaji adalah Sistem Informasi

Unified Modelling Language (UML)

BAB III OBJEK DAN METODE PENELITIAN. Mobil Permata Trans yang beralamatkan di Jalan Raflesia J-4, Komplek Mitra

SURAT PERNYATAAN ABSTRACT ABSTRAK KATA PENGANTAR

BAB III METODOLOGI PENELITIAN. Gambar 3.1 merupakan desain penelitian yang akan digunakan dalam

BAB IV ANALISA DAN PERANCANGAN SISTEM. diusulkan dari sistem yang ada di Dinas Kebudayaan dan Pariwisata Kota

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI

RULES BOOK IDEAFUSE 2016 ACM ICPC Multi-Provincial

Bagian 7 ANALISIS DESAIN PADA PEMROGRAMAN BERORIENTASI OBJECT DENGAN UML

BAB III METODOLOGI PENELITIAN

DAFTAR SIMBOL. case. Dependency 2. Generalization 3. 4 Include. 5 Extend. 6 Associaton

BAB IV ANALISIS, PERANCANGAN, DAN IMPLEMENTASI PERANGKAT LUNAK

PENGEMBANGAN WEBSITE KOMUNITAS STUDI KASUS : KOMUNITAS FOTOGRAFI

Transkripsi:

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.

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

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:

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.

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

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 C++11 1997 4031 3390 84.10% 0 0.00% 639 15.85% 2 0.05% 0 0.00% 1998 42375 24697 58.28% 0 0.00% 13859 32.71% 3819 9.01% 0 0.00% 1999 109202 44860 41.08% 0 0.00% 42226 38.67% 22116 20.25% 0 0.00% 2000 199523 71895 36.03% 0 0.00% 95173 47.70% 32455 16.27% 0 0.00%

13 Tahun Total ANSI C JAVA C++ PASCAL C++11 2001 345305 124223 35.97% 3029 0.88% 187852 54.40% 30201 8.75% 0 0.00% 2002 610151 227779 37.33% 13567 2.22% 305969 50.15% 62836 10.30% 0 0.00% 2003 874762 282206 32.26% 37726 4.31% 481173 55.01% 73657 8.42% 0 0.00% 2004 998194 279821 28.03% 41387 4.15% 607279 60.84% 69707 6.98% 0 0.00% 2005 1050528 275220 26.20% 64898 6.18% 662432 63.06% 47978 4.57% 0 0.00% 2006 999155 221526 22.17% 61752 6.18% 684062 68.46% 31815 3.18% 0 0.00% 2007 914504 208229 22.77% 64815 7.09% 619607 67.75% 21853 2.39% 0 0.00% 2008 730266 148037 20.27% 66985 9.17% 507514 69.50% 7730 1.06% 0 0.00% 2009 782065 150784 19.28% 80082 10.24% 543717 69.52% 7482 0.96% 0 0.00% 2010 828697 135284 16.32% 89154 10.76% 592933 71.55% 11326 1.37% 0 0.00% 2011 1104715 201236 18.22% 118430 10.72% 776199 70.26% 8850 0.80% 0 0.00% 2012 1468476 236197 16.08% 165517 11.27% 1054852 71.83% 11910 0.81% 0 0.00% 2013 1798643 274865 15.28% 205596 11.43% 1308937 72.77% 9245 0.51% 0 0.00% 2014 1784838 268945 15.07% 200874 11.25% 1035314 58.01% 5043 0.28% 274662 15.39% 2015 281564 49694 17.65% 26867 9.54% 142200 50.50% 1494 0.53% 61309 21.77% Total 14926994 3228888 21.63% 1240679 8.31% 9661937 64.73% 459519 3.08% 335971 2.25% 2.3. Statistik UVa Online Judge 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.

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

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

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)

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) India 92990 kunjungan 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).

18 Gambar 2.7 UVa Visits by City rentang tahun 2014 (UVA, 2014) 2.4. Recommendation Engine Mesin rekomendasi merupakan satu teknik yang digunakan untuk membantu pengguna mendapatkan pilihan atau opsi ketika dalam satu keadaan tertentu kurangnya pengalaman seseorang tersebut terhadap pilihan-pilihan yang tersedia (Ricci, et al. 2011). Sistem rekomendasi ini dalam berbagai keadaan sangat membantu pengguna untuk menentukan pilihan yang tepat. Cara kerja sistem rekomendasi ini adalah dengan menyederhanakan proses pencarian informasi dan memfasilitasi perbandingan akan satu produk. Contohnya, berbelanja di amazon.com, melihat rekomendasi buku di goodreads.com, rekomendasi film di imdb.com dan banyak aplikasi lain di kehidupan sehari-hari. Dalam contoh e-commerce, sistem rekomendasi sangat berperan aktif untuk merekomendasikan atau memberi informasi yang menarik dan berguna akan satu pilihan terhadap penggunanya. Mesin rekomendasi ini biasanya dibutuhkan karena banyaknya informasi yang tersedia (information overload) atau juga sebaliknya karena minimnya pengetahuan pengguna (lack of user knowledge) pada area tertentu. Membangun mesin rekomendasi yang baik membutuhkan usaha yang tinggi terhadap ketersediaan data yang akan diolah seperti ketersediaan dataset, kebutuhan

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

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

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

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 Elemen-elemen diagram sekuens No Gambar Nama Penjelasan 1 Aktivasi Menggambarkan aktivitas objek 2 Aktor Menggambarkan aktor suatu objek 3 Boundary Berhubungan dengan proses input output ataupun interface

23 4 Controller Berhubungan dengan proses 5 Entity Berhubungan dengan input output data 6 Message Arrow Menggambarkan alur proses, perintah atau pengiriman data 7 Object Lifeline Membuat batasan objek 2.6.4. Activity diagram 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

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.

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.