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. Metode 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. Metode 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 Mahasiswa 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. Melalui 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 judge dengan user interface berupa website untuk keperluan pelatihan tim pemrograman
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 Gambar 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 2 Mengakses file Compile Time Limit
/dev/urandom Exceeded 3 Pembagian dengan nol Run Time Error 4 Infinite loop Time Limit Exceeded 5 Menggunakan memori Memory Limit Exceeded berlebihan 6 Mengeluarkan output yang Output Limit Exceeded berlebihan 7 Algoritma yang salah Wrong Answer 8 Mengeluarkan sample Wrong Answer output 9 Mengeluarkan spasi Presentation Error berlebih pada solusi yang benar 10 Algoritma yang benar Accepted 11 Fork bomb Time Limit Exceeded 12 Menghapus file pada sistem Wrong Answer 13 Mengeluarkan daftar file Wrong Answer pada sistem
14 Membuka file test output Run Time Error yang tersedia pada sistem online judge Stress testing dilakukan dengan mengirim banyak solusi dan mengawasi 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 Memori (%) CPU (%) Submission 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 solusi secara otomatis.
Daftar Pustaka [1] Agarwal, B. B., Tayal, 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 Algorithms (5th ed.). Springer. [5] Connoly, T., & Begg, C. (2005). Database Systems : A Practical Approach to Design, Implementation, and Management (4th ed.). Addision-Wesley. [6] Cottet, F., Delacroix, J., Kaiser, C., & Mammeri, Z. (2002). Scheduling in Real-Time Systems. 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 Symposium. San Jose, California. [10] Kurnia, A., Lim, A., & Cheang, B. (2001). Online Judge. Computers & 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 Programming 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, Algorithms, and Systems (3rd ed.). Springer. [16] Rainer, R. K., & Cegielski, C. G. (2010). Introduction to Information Systems (3rd ed.). John Wiley & Sons, Inc. [17] Rank of Participants Region 1 ACM Asian Programming 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: The UVa Online Judge Experience. Olympiads in Informatics, 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-Computer 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., & Thomson, L. (2009). PHP and MySQL Web Development (4th ed.). Pearson Education. [24] Whitten, J. L., & Bentley, L. D. (2005). Systems Analysis & Design Methods (7th ed.). McGraw-Hill.