IMPLEMENTASI ONLINE JUDGE
UNTUK PELATIHAN TIM
PEMROGRAMAN BINUS
Felix Jingga
Binus University, Jakarta, DKI Jakarta, Indonesia
dan
Ricky Winata
Binus University, Jakarta, DKI Jakarta, Indonesia
Abstrak
Online judge adalah sistem yang menyediakan soal algoritma dan test data untuk
menguji solusi dari soal algoritma tersebut. Tujuan dari penelitian ini adalah menyediakan sistem online judge dengan user interface berupa website untuk keperluan pelatihan tim pemrograman Binus. M etode yang digunakan adalah metode studi pustaka, metode analisis, dan metode perancangan. Dalam metode analisis dilakukan wawancara dan penyebaran kuesioner untuk mengetahui kebutuhan yang diperlukan dalam sistem
online judge serta uji coba untuk menguji sistem penilaian online judge terhadap
berbagai jenis masukan dan serangan yang berbahaya. M etode perancangan menggunakan unified modelling language untuk merancang sistem yang meliputi sistem
web dan sistem penilaian. Hasil yang didapatkan adalah sistem online judge yang dapat
mengadakan kontes pemrograman dengan sistem penilaian yang mampu menahan berbagai serangan berbahaya terhadap sistem. Simpulan yang diperoleh adalah
tersedianya sistem online judge yang siap dipakai untuk pelatihan tim pemrograman Binus.
Kata Kunci: online judge, tim pemrograman Binus, website
1. Pendahuluan
Belakangan ini, kontes pemrograman banyak diadakan oleh lembaga – lembaga pendidikan seperti Indonesia National Contest (INC) oleh Binus, Pagelaran M ahasiswa Nasional Bidang Teknologi Informasi dan Komunikasi (Gemastik) oleh Direktorat Pendidikan, Institut Teknologi Bandung Programming Contest (ITBPC) oleh ITB,
Computer Festival oleh UI, International Collegiate Programming Contest (ICPC) oleh
ACM , dan sebagainya. Binus University mempunyai associate team yang disebut tim pemrograman Binus yang dibentuk khusus untuk berpartisipasi dalam kontes pemrograman tersebut.
Kontes pemrograman merupakan lomba untuk mengukur kemampuan algoritma peserta dengan cara menyediakan soal algoritma untuk diselesaikan dengan bahasa pemrograman. Penilaiannya dilakukan dengan mengumpulkan source code dari perserta, mengompilasi source code menjadi program, dan menguji kebenaran program berdasarkan input data dan output data yang disediakan.
Untuk mempersiapkan tim pemrograman Binus dalam kontes pemrograman diperlukan pelatihan untuk menyelesaikan soal algoritma. Pelatihan tersebut memerlukan proses penilaian yang sama dengan proses penilaian pada lomba. Proses penilaian secara manual dalam pelatihan mempunyai banyak kekurangan seperti
pelatihan hanya dapat dilakukan pada waktu tertentu, memerlukan banyak sumber daya manusia dan komputer, dan terdapat faktor kelalaian manusia yang dapat menyebabkan kesalahan penilaian. Oleh karena itu diperlukan sistem untuk mengotomatiskan proses penilaian tersebut dalam pelatihan tim pemrograman Binus seperti online judge. Online
judge adalah sistem yang menyediakan berbagai soal algoritma sebagai sarana untuk
melatih kemampuan logika berpikir dan algoritma pemrograman dimana sistem ini menerima solusi untuk diuji kebenarannya dengan menggunakan test data yang sudah disediakan.
Tim pemrograman Binus saat ini sudah menggunakan beberapa sistem online
judge seperti Peking University Online Judge, Sphere Online Judge, dan Tian Jin
University Online Judge. Tetapi online judge yang selama ini dipakai tidak mempunyai
fasilitas untuk menambah soal algoritma, sehingga soal algoritma yang dapat digunakan hanyalah yang tersedia pada online judge tersebut. Fitur lain yang diperlukan adalah mampu mengadakan kontes pemrograman untuk menambah pengalaman tim pemrograman Binus dalam suasana kontes pemrograman. Untuk mengatasi kendala tersebut perlu dibuat online judge khusus untuk tim pemrograman Binus. M elalui sistem
online judge khusus untuk tim pemrograman Binus, pelatih ataupun senior dapat
menambah soal algoritma baru dan mengadakan kontes pemrograman.
2. Metodologi
Ruang lingkup skripsi ini adalah merancang dan mengimplementasi sistem online
Binus yang mendukung bahasa pemrograman GNU C dan GNU C++ serta dijalankan pada sistem operasi linux. Adapun pembahasan yang dilakukan meliputi sebagai berikut:
• Perancangan • Implementasi • Evaluasi
2.1. Perancangan
G ambar 1. Rancangan Sistem Secara Logis
Gambar 1 adalah gambaran logis sistem online judge secara keseluruhan. Awalnya
user membuka website pada web server yang mendukung bahasa pemrograman PHP.
Ketika user mengirim solusi, server memasukkan solusi ke database dan mengirim
notification ke Submission manager melalui XMPP Server, kemudian submission
manager menjadwalkan judge client untuk mulai melakukan proses judging terhadap
solusi yang dikirim. Setelah selesai melakukan proses judging, maka judge client akan mengubah database sesuai dengan hasil judging.
2.2. Implementasi
Implementasi akan dilakukan pada server dengan sistem operasi Ubuntu 10.10. Selain dibutuhkan server dengan sistem operasi Ubuntu, diperlukan juga apache sebagai
web server dan ejabberd sebagai xmpp server. Bahasa pemrograman PHP, GNU C,
GNU C++, dan database MySQL juga diperlukan untuk menjalankan sistem ini.
2.3. Evaluasi
Evaluasi menggunakan uji coba dan stress testing terhadap sistem. Uji coba dilakukan untuk mengetahui seberapa tahan sistem terhadap berbagai serangan berbahaya. Stress testing bertujuan untuk mengetahui sumber daya yang digunakan oleh sistem.
Uji coba dilakukan dengan mengirim berbagai bentuk solusi kepada sistem online
judge untuk melihat hasil yang dikeluarkan oleh online judge dan untuk mengetahui
seberapa tahan sistem online judge terhadap serangan berbahaya dari luar. Berikut adalah table hasil uji coba sistem:
Tabel 1. Hasil Uji Coba
Nomor uji coba Aspek yang diuji Hasil penilaian sistem
online judge
1 Pengecekan compile error Compile Error
“/dev/urandom” Exceeded
3 Pembagian dengan nol Run Time Error
4 Infinite loop Time Limit Exceeded
5 M enggunakan memori
berlebihan
Memory Limit Exceeded
6 M engeluarkan output yang
berlebihan
Output Limit Exceeded
7 Algoritma yang salah Wrong Answer
8 M engeluarkan sample
output
Wrong Answer
9 M engeluarkan spasi
berlebih pada solusi yang benar
Presentation Error
10 Algoritma yang benar Accepted
11 Fork bomb Time Limit Exceeded
12 M enghapus file pada sistem Wrong Answer
13 M engeluarkan daftar file
pada sistem
14 M embuka file test output
yang tersedia pada sistem
online judge
Run Time Error
Stress testing dilakukan dengan mengirim banyak solusi dan mengawas i
penggunaan memori dan CPU yang digunakan oleh Submission manager yang menampung dan melakukan scheduling terhadap submission. Berikut adalah hasil stress
testing:
Tabel 2. Hasil Stress Testing
Jumlah Submission Memori (%) CPU (%) 10 0.6 0.0 100 0.6 0.3 1000 0.6 0.8
3. Kesimpulan
Berdasarkan hasil analisis dan perancangan serta implementasi dan evaluasi, maka dapat diambil simpulan sebagai berikut:
1. Tersedianya sistem online judge yang dapat digunakan untuk keperluan pelatihan tim pemrograman Binus.
2. Sistem online judge tahan terhadap berbagai serangan yang membahayakan sistem.
3. Sistem online judge dapat digunakan untuk menambah soal algoritma.
4. Sistem online judge dapat digunakan untuk mengadakan kontes pemrograman. 5. Sistem penilaian dapat digunakan untuk melakukan penilaian kebenaran solus i
Daftar Pustaka
[1] Agarwal, B. B., T ayal, S. P., & Gupta, M. (2010). Software Engineering & Testing. Jones & Bartlett Publisher.
[2] Arefin, A. S., Rahman, M. A., Sharna, S. A., & Mahmud, S. (2005). Secured Programming Contest System with Online and Realtime Judgment Capability.
[3] Booch, G., Rumbaugh, J., & Jacobson, I. (2005). The Unified Modeling Language User
Guide (2nd ed.). Addison-Wesley Professional.
[4] Brucker, P. (2007). Scheduling Algorithm s (5th ed.). Springer.
[5] Connoly, T., & Begg, C. (2005). Database System s : A Practical Approach to Design,
Implem entation, and Managem ent (4th ed.). Addision-Wesley.
[6] Cottet, F., Delacroix, J., Kaiser, C., & Mammeri, Z. (2002). Scheduling in Real-Tim e
System s. John Wiley & Sons, Ltd.
[7] Forišek, M. (2006). Security of Programming Contest Systems.
[8] Gilmore, W. J. (2010). Beginning PHP and MySQL From Novice to Professional. Apress. [9] Goldberg, I., Wagner, D., Thomas, R., & Brewer, E. (1996). A Secure Environment for Untrusted Helper Applications. Sixth USENIX UNIX Security Sym posium . San Jose, California. [10] Kurnia, A., Lim, A., & Cheang, B. (2001). Online Judge. Com puters & Education , 36, 299-315.
[11] Manzoor, S. (2005). Analyzing Programming Contest Statistics. [12] Miles, R., & Hamilton, K. (2006). Learning UML 2.0. O'Reilly Media.
[13] Moffitt, J. (2010). Professional XMPP Programm ing with JavaScript and jQuery. Wiley Publishing, Inc.
[14] Object Management Group. (2009, February 02). UML 2.2 Superstructure. Retrieved January 12, 2012, from Object Management Group (OMG):
http://www.omg.org/spec/UML/2.2/Superstructure/PDF/
[15] Pinedo, M. L. (2008). Scheduling : Theory, Algorithm s, and System s (3rd ed.). Springer. [16] Rainer, R. K., & Cegielski, C. G. (2010). Introduction to Inform ation System s (3rd ed.). John Wiley & Sons, Inc.
[17] Rank of Participants Region 1 ACM Asian Programm ing Contest. (1996). Retrieved January 12, 2012, from http://uweb.txstate.edu/~ch01/rank96ka.htm
[18] Revilla, M. A., Manzoor, S., & Liu, R. (2008). Competitive Learning in Informatics: T he UVa Online Judge Experience. Olym piads in Inform atics , 2, 131-148.
[19] Rosenberg, D., & Stephens, M. (2007). Use Case Driven Object Modeling with UML :
Theory and Practice. Apress.
[20] Saint-Andre, P., Smith, K., & Tromcon, R. (2009). XMPP : The Definitive Guide. O'Reilly Media.
[21] Shneiderman, B., & Plaisant, C. (2010). Designing The User Interface : Strategies for
Effective Human-Com puter Interaction (5th ed.). Addison-Wesley.
[22] TaiPei 97 Rank. (1997). Retrieved January 12, 2012, from http://uweb.txstate.edu/~ch01/taipei97rank.htm
[23] Welling, L., & T homson, L. (2009). PHP and MySQL Web Developm ent (4th ed.). Pearson Education.
[24] Whitten, J. L., & Bentley, L. D. (2005). System s Analysis & Design Methods (7th ed.). McGraw-Hill.