• Tidak ada hasil yang ditemukan

LANDASAN TEOR

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

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

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:

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.

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

Dokumen terkait