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 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
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
2
M engakses file
Compile Time Limit
“/dev/urandom”
Exceeded
3
Pembagian dengan nol
Run Time Error
4
Infinite loop
Time Limit Exceeded
5
M enggunakan memori
Memory Limit Exceeded
berlebihan 6
M engeluarkan output yang Output Limit Exceeded berlebihan
7
Algoritma yang salah
Wrong Answer
8
M engeluarkan sample
Wrong Answer
output 9
M engeluarkan spasi
Presentation Error
berlebih pada solusi yang benar 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
Wrong Answer
14
M embuka file test output Run Time Error yang tersedia pada sistem online judge
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
Memori (%)
CPU (%)
10
0.6
0.0
100
0.6
0.3
1000
0.6
0.8
Submission
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 secara otomatis.
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 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, 299315. [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: T he 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., & T homson, 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.