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 masalah-
masalah 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 masalah-
masalah riset, solusi yang dibutuhkan bersifat masih belum dikenal danatau 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
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, ATT, 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
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
a Coding phase 75 menit, peserta menulis program untuk memecahkan tiga
problemset menggunakan bahasa pemrograman yang ditentukan saat ini yang tersedia CC++, 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
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 CC++
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 input- nya. 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
2.2. Online Judges